diff options
author | Marvin Borner | 2020-06-17 18:31:46 +0200 |
---|---|---|
committer | Marvin Borner | 2020-06-17 18:31:46 +0200 |
commit | eed77bd2970a00d1394ed027ceca5b646e4671ce (patch) | |
tree | c44643d98aed2b6818f2b33417c0dea9c5853094 | |
parent | 49dfa1f4021026bf7c4d77817959c8aa24067016 (diff) |
Started rewrite
162 files changed, 34 insertions, 14183 deletions
@@ -1,11 +1,8 @@ -Melvix.iml tags compile_commands.json -.idea/ .clangd/ build/ cmake/ cross/ -cross64/ -iso/ +disk/bin/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c475a0..fbfae14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,9 +11,6 @@ if(CCACHE_FOUND) set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) endif(CCACHE_FOUND) -# Melvix variables -set(NETWORK "rtl8139") - # Compiler and linker set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS " ") set(CMAKE_C_COMPILER "${CMAKE_CURRENT_SOURCE_DIR}/cross/opt/bin/i686-elf-gcc") @@ -23,51 +20,24 @@ set(CMAKE_ASM_LINKER_PREFERENCE ${CMAKE_LINKER}) set(CMAKE_C_LINKER_PREFERENCE ${CMAKE_LINKER}) # Compiler and linker flags -set(CMAKE_C_FLAGS "-Wall -Wno-int-conversion -fstrength-reduce -fomit-frame-pointer -finline-functions -nostdlib -nostdinc -ffreestanding -std=gnu99 -g -ggdb3 -c") -set(CMAKE_EXE_LINKER_FLAGS "-ffreestanding -O2 -nostdlib -g -ggdb") +set(CMAKE_C_FLAGS "-Wall -Wno-int-conversion -fstrength-reduce -fomit-frame-pointer -finline-functions -nostdlib -nostdinc -ffreestanding -std=gnu99 -pedantic-errors -c -I${CMAKE_CURRENT_SOURCE_DIR}/src/lib/") +set(CMAKE_EXE_LINKER_FLAGS "-ffreestanding -O2 -nostdlib -nostdinc") set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <SOURCE> -o <OBJECT> -f elf32 -O0") set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_LINKER> ${CMAKE_EXE_LINKER_FLAGS} <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") set(CMAKE_ASM_LINK_EXECUTABLE "<CMAKE_LINKER> ${CMAKE_EXE_LINKER_FLAGS} <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") # Recursive sources -file(GLOB_RECURSE kernel_sources src/kernel/*.c src/kernel/*.asm) -file(GLOB_RECURSE resources_sources src/resources/*.c) -file(GLOB_RECURSE user_sources src/userspace/programs/*.c) -file(GLOB_RECURSE user_libc_sources src/userspace/libc/*.c) -file(GLOB_RECURSE user_libgui_sources src/userspace/libgui/*.c) - -# KERNEL -add_executable(kernel ${kernel_sources}) -target_include_directories(kernel PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/kernel/" "${CMAKE_CURRENT_SOURCE_DIR}/src/shared/") -set_target_properties(kernel PROPERTIES OUTPUT_NAME "${CMAKE_CURRENT_SOURCE_DIR}/build/kernel/kernel.bin") -target_compile_options(kernel PRIVATE "-D ${NETWORK}") -target_link_libraries(kernel PRIVATE "-T ${CMAKE_CURRENT_SOURCE_DIR}/src/kernel/linker.ld") - -# RESOURCES -add_executable(resources ${resources_sources}) -target_include_directories(resources PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/shared/") -set_target_properties(resources PROPERTIES OUTPUT_NAME "${CMAKE_CURRENT_SOURCE_DIR}/build/res/font.o") -target_compile_options(resources PRIVATE "-Os") # This is needed to preserve my fixed function order ig -add_custom_command( - TARGET resources POST_BUILD - COMMAND cross/opt/bin/i686-elf-objcopy -O binary build/res/font.o build/res/font.bin - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -) - -# USERSPACE LIBC -add_library(userspace_libc ${user_libc_sources}) -target_include_directories(userspace_libc PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src/userspace/libc/" "${CMAKE_CURRENT_SOURCE_DIR}/src/shared/") +file(GLOB_RECURSE sources src/*.c src/*.asm) +file(GLOB_RECURSE apps_sources apps/*.c) -# USERSPACE LIBGUI -add_library(userspace_libgui ${user_libgui_sources}) -target_link_libraries(userspace_libgui userspace_libc) -target_include_directories(userspace_libgui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src/userspace/libc/" "${CMAKE_CURRENT_SOURCE_DIR}/src/userspace/libgui/") +# MELVIX +add_executable(melvix ${sources}) +set_target_properties(melvix PROPERTIES OUTPUT_NAME "${CMAKE_CURRENT_SOURCE_DIR}/build/melvix.bin") +target_link_libraries(melvix PRIVATE "-T ${CMAKE_CURRENT_SOURCE_DIR}/src/link.ld") -# USERSPACE PROGRAMS -foreach(loop_file ${user_sources}) +# APPS +foreach(loop_file ${apps_sources}) get_filename_component(testname ${loop_file} NAME_WE) add_executable(${testname} ${loop_file}) - target_include_directories(${testname} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src/userspace/libc/" "${CMAKE_CURRENT_SOURCE_DIR}/src/userspace/libgui/") - target_link_libraries(${testname} userspace_libc userspace_libgui) - set_target_properties(${testname} PROPERTIES OUTPUT_NAME "${CMAKE_CURRENT_SOURCE_DIR}/build/user/${testname}") + set_target_properties(${testname} PROPERTIES OUTPUT_NAME "${CMAKE_CURRENT_SOURCE_DIR}/disk/bin/${testname}") endforeach(loop_file ${user_sources}) diff --git a/apps/test.c b/apps/test.c new file mode 100644 index 0000000..40ba715 --- /dev/null +++ b/apps/test.c @@ -0,0 +1,5 @@ +int main(int argc, char *argv[]) +{ + int a = 42 >> 6; + return a; +} @@ -89,49 +89,32 @@ make_cross() { } make_build() { - mkdir -p iso/ + mkdir -p build/ disk/bin/ echo "Building..." - mkdir -p build/kernel/ - mkdir -p build/res/ - mkdir -p build/user/ cd build/ cmake .. >/dev/null make cd .. - # Create ISO - mkdir -p ./iso/boot/grub/ - cp ./build/kernel/kernel.bin ./iso/boot/kernel.bin - cp ./src/bootloader/grub.cfg ./iso/boot/grub/ - grub-mkrescue -o ./build/melvix.iso ./iso/ - - # Check ISO - if grub-file --is-x86-multiboot2 ./build/kernel/kernel.bin; then - echo "Multiboot confirmed" - else - echo "Kernel is corrupted!" - exit 1 - fi - # Create disk image - make_genext2fs - mkdir ./mnt/ - mkdir -p ./mnt/etc/ - mkdir -p ./mnt/usr/ - mkdir -p ./mnt/bin/ - - cp ./build/res/font.bin ./mnt/bin/font - cp ./build/user/* ./mnt/bin/ - echo "Hello world, ext2!" | tee -a ./mnt/etc/test - /usr/local/bin/genext2fs -B 4096 -d mnt -U -N 4096 -b 65536 ./build/disk.img - rm -r mnt/ + # make_genext2fs + # mkdir ./mnt/ + # mkdir -p ./mnt/etc/ + # mkdir -p ./mnt/usr/ + # mkdir -p ./mnt/bin/ + + # cp ./build/res/font.bin ./mnt/bin/font + # cp ./build/user/* ./mnt/bin/ + # echo "Hello world, ext2!" | tee -a ./mnt/etc/test + # /usr/local/bin/genext2fs -B 4096 -d mnt -U -N 4096 -b 65536 ./build/disk.img + # rm -r mnt/ printf "Build finshed successfully!\n\n" } make_test() { - qemu_with_flags -cdrom ./build/melvix.iso -hda ./build/disk.img + qemu_with_flags -cdrom ./build/melvix.iso# -hda ./build/disk.img } make_debug() { diff --git a/src/bootloader/grub.cfg b/src/bootloader/grub.cfg deleted file mode 100644 index cdd19b4..0000000 --- a/src/bootloader/grub.cfg +++ /dev/null @@ -1,6 +0,0 @@ -set timeout=0 -set default=0 -menuentry "Melvix" { - multiboot2 /boot/kernel.bin foo bar - boot -}
\ No newline at end of file diff --git a/src/kernel/boot.asm b/src/entry.asm index 1e8d3ee..35cede5 100644 --- a/src/kernel/boot.asm +++ b/src/entry.asm @@ -31,14 +31,14 @@ section .text header_end: global boot - extern kernel_main + ;extern kernel_main boot: mov esp, stack_top push esp push ebx push eax cli - call kernel_main + ;call kernel_main hlt jmp $ @@ -46,4 +46,4 @@ section .bss align 32 stack_bottom: resb kernel_stack - stack_top:
\ No newline at end of file + stack_top: diff --git a/src/kernel/acpi/acpi.c b/src/kernel/acpi/acpi.c deleted file mode 100644 index 6e1811c..0000000 --- a/src/kernel/acpi/acpi.c +++ /dev/null @@ -1,112 +0,0 @@ -// Important specification: https://uefi.org/sites/default/files/resources/ACPI_6_2.pdf -// HPET: https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/software-developers-hpet-spec-1-0a.pdf - -#include <acpi/acpi.h> -#include <io/io.h> -#include <lib/lib.h> -#include <lib/stdio.h> -#include <lib/stdlib.h> -#include <memory/alloc.h> -#include <memory/paging.h> -#include <multiboot.h> -#include <stddef.h> -#include <system.h> - -struct rsdt *rsdt; -struct fadt *fadt; -struct hpet *hpet; -struct madt *madt; - -int check_sum(struct sdt_header *header) -{ - u8 sum = 0; - - for (u32 i = 0; i < header->length; i++) - sum += ((char *)header)[i]; - - return sum == 0; -} - -void acpi_init(struct rsdp *rsdp) -{ - // TODO: Fix ACPI table discovering (HPET & MADT missing) - // TODO: Fix ACPI breaking VESA (why?!) - - struct sdt_header *header = (struct sdt_header *)malloc(sizeof(struct sdt_header)); - rsdt = (struct rsdt *)malloc(sizeof(struct rsdt)); - fadt = (struct fadt *)malloc(sizeof(struct fadt)); - hpet = (struct hpet *)malloc(sizeof(struct hpet)); - madt = (struct madt *)malloc(sizeof(struct madt)); - - if (strncmp(rsdp->signature, "RSD PTR ", 8) == 0) { - memcpy(rsdt, rsdp->rsdt_address, sizeof(struct rsdt) + 32); - debug("Found RSDT"); - if (!check_sum((struct sdt_header *)rsdt)) { - warn("Corrupted RSDT!"); - } else { - u32 *pointer = (u32 *)(rsdt + 1); - u32 *end = (u32 *)((u8 *)rsdt + rsdt->header.length); - - while (pointer < end) { - u32 address = *pointer++; - memcpy(header, (void *)address, sizeof(struct sdt_header)); - - if (strncmp(header->signature, "FACP", 4) == 0) { - debug("Found FADT"); - memcpy(fadt, (void *)address, sizeof(struct fadt)); - if (!check_sum((struct sdt_header *)fadt)) - warn("Corrupted FADT!"); - } else if (strncmp(header->signature, "HPET", 4) == 0) { - debug("Found HPET"); - memcpy(hpet, (void *)address, sizeof(struct hpet)); - if (!check_sum((struct sdt_header *)hpet)) - warn("Corrupted HPET!"); - } else if (strncmp(header->signature, "APIC", 4) == 0) { - debug("Found MADT"); - memcpy(madt, (void *)address, sizeof(struct madt)); - if (!check_sum((struct sdt_header *)madt)) - warn("Corrupted MADT!"); - } - } - } - } else { - warn("Wrong RSD signature!"); - } - free(header); -} - -void acpi_old_init(struct multiboot_tag_old_acpi *tag) -{ - // acpi_init((struct rsdp *)tag->rsdp); -} - -void acpi_new_init(struct multiboot_tag_new_acpi *tag) -{ - // acpi_init((struct rsdp *)tag->rsdp); -} - -void acpi_poweroff() -{ - // TODO: Add APCI poweroff support - cli(); - outw(0x604, 0x2000); // QEMU - outw(0xB004, 0x2000); // Bochs - outw(0x4004, 0x3400); // VirtualBox - halt_loop(); -} - -void reboot() -{ - cli(); - if (fadt->header.revision >= 2 && fadt->flags.reset_support) { - debug("Reset support!"); - outb(fadt->reset_reg.address, fadt->reset_value); - halt_loop(); - } else { - u8 good = 0x02; - while (good & 0x02) - good = inb(0x64); - outb(0x64, 0xFE); - halt_loop(); - } -}
\ No newline at end of file diff --git a/src/kernel/acpi/acpi.h b/src/kernel/acpi/acpi.h deleted file mode 100644 index 9b64f7c..0000000 --- a/src/kernel/acpi/acpi.h +++ /dev/null @@ -1,169 +0,0 @@ -#ifndef MELVIX_ACPI_H -#define MELVIX_ACPI_H - -#include <multiboot.h> -#include <stdint.h> - -/** - * Initialize the ACP interface - */ -void acpi_old_init(struct multiboot_tag_old_acpi *tag); -void acpi_new_init(struct multiboot_tag_new_acpi *tag); - -/** - * Activate a ACPI based device reboot - */ -void reboot(); - -/** - * Activate a ACPI based device shutdown/poweroff - */ -void acpi_poweroff(); - -struct address_structure { - u8 address_space_id; - u8 register_bit_width; - u8 register_bit_offset; - u8 reserved; - u64 address; -}; - -// p. 138 -struct fadt_flags { - u8 WBINVD : 1; - u8 WBINVD_flush : 1; - u8 C1_support : 1; - u8 C2_mp_support : 1; - u8 power_button : 1; // 1 if not present - u8 sleep_button : 1; // 1 if not present - u8 rtc_fix_reg : 1; - u8 rtc_wakes_S4 : 1; - u8 timer_32 : 1; - u8 dock_support : 1; - u8 reset_support : 1; - u8 sealed_case : 1; - u8 headless : 1; - u8 slp_instruction : 1; - u8 pci_wake_support : 1; - u8 use_platform_clock : 1; - u8 rtc_valid_S4 : 1; - u8 remote_on_support : 1; - u8 force_apic_cluster : 1; - u8 force_apic_physical : 1; - u8 hw_reduced_acpi : 1; - u8 low_power_S0_support : 1; - u16 reserved : 10; -}; - -struct rsdp { - char signature[8]; - char checksum; - char oem_id[6]; - char revision; - u32 *rsdt_address; -}; - -struct sdt_header { - char signature[4]; - u32 length; - u8 revision; - u8 checksum; - char oem_id[6]; - char oem_table_id[8]; - u32 oem_revision; - u32 creator_id; - u32 creator_revision; -}; - -struct rsdt { - struct sdt_header header; - u32 sdt_pointer[]; -}; - -struct xsdt { - struct sdt_header header; - u32 sdt_pointer[]; -}; - -struct fadt { - struct sdt_header header; - u32 firmware_ctl; - u32 dsdt; - u8 reserved; - u8 preferred_power_management; - u16 sci_interrupt; - u32 smi_commandPort; - u8 acpi_enable; - u8 acpi_disable; - u8 S4BIOS_req; - u8 PSTATE_control; - u32 PM1a_event_block; - u32 PM1b_event_block; - u32 PM1a_control_block; - u32 PM1b_control_block; - u32 PM2_control_block; - u32 PM_timer_block; - u32 GPE0_block; - u32 GPE1_block; - u8 PM1_event_length; - u8 PM1_control_length; - u8 PM2_control_length; - u8 PM_timer_length; - u8 GPE0_length; - u8 GPE1_length; - u8 GPE1_base; - u8 C_state_control; - u16 worst_C2_latency; - u16 worst_C3_latency; - u16 flush_size; - u16 flush_stride; - u8 duty_offset; - u8 duty_width; - u8 day_alarm; - u8 month_alarm; - u8 century; - u16 boot_architecture_flags; // Reserved in 1.0 - u8 reserved2; - struct fadt_flags flags; - struct address_structure reset_reg; - u8 reset_value; - u8 reserved3[3]; - u64 x_firmware_control; // Reserved in 1.0 - u64 x_dsdt; // Reserved in 1.0 - struct address_structure x_PM1a_event_block; - struct address_structure x_PM1b_event_block; - struct address_structure x_PM1a_control_block; - struct address_structure x_PM1b_control_block; - struct address_structure x_PM2_control_block; - struct address_structure x_PM_timer_block; - struct address_structure x_GPE0_block; - struct address_structure x_GPE1_block; -}; - -struct hpet { - struct sdt_header header; - u8 hardware_rev_id; - u8 comparator_count : 5; - u8 counter_size : 1; - u8 reserved : 1; - u8 legacy_replacement : 1; - u16 pci_vendor_id; - struct address_structure address; - u8 hpet_number; - u16 minimum_tick; - u8 page_protection; -}; - -struct madt { - struct sdt_header header; - u32 address; - u32 flags; - // Interrupt devices... -}; - -struct rsdt *rsdt; -struct fadt *fadt; -struct hpet *hpet; -struct madt *madt; - -#endif
\ No newline at end of file diff --git a/src/kernel/cmos/rtc.c b/src/kernel/cmos/rtc.c deleted file mode 100644 index aa6d3d6..0000000 --- a/src/kernel/cmos/rtc.c +++ /dev/null @@ -1,94 +0,0 @@ -#include <acpi/acpi.h> -#include <io/io.h> -#include <lib/stdio.h> -#include <system.h> - -u8 second; -u8 minute; -u8 hour; -u8 day; -u8 month; -u32 year; - -int get_update_in_progress_flag() -{ - outb(0x70, 0x0A); - return (inb(0x71) & 0x80); -} - -u8 get_rtc_register(int reg) -{ - outb(0x70, (u8)reg); - return inb(0x71); -} - -void read_rtc() -{ - u32 century = 20; - u8 last_second; - u8 last_minute; - u8 last_hour; - u8 last_day; - u8 last_month; - u8 last_year; - u8 last_century; - u8 registerB; - - while (get_update_in_progress_flag()) { - }; - second = get_rtc_register(0x00); - minute = get_rtc_register(0x02); - hour = get_rtc_register(0x04); - day = get_rtc_register(0x07); - month = get_rtc_register(0x08); - year = get_rtc_register(0x09); - century = get_rtc_register(fadt->century); - - // Try until the values are the same (fix for RTC updates) - do { - last_second = second; - last_minute = minute; - last_hour = hour; - last_day = day; - last_month = month; - last_year = (u8)year; - last_century = (u8)century; - - while (get_update_in_progress_flag()) { - }; - second = get_rtc_register(0x00); - minute = get_rtc_register(0x02); - hour = get_rtc_register(0x04); - day = get_rtc_register(0x07); - month = get_rtc_register(0x08); - year = get_rtc_register(0x09); - century = get_rtc_register(fadt->century); - } while ((last_second != second) || (last_minute != minute) || (last_hour != hour) || - (last_day != day) || (last_month != month) || (last_year != year) || - (last_century != century)); - - registerB = get_rtc_register(0x0B); - - if (!(registerB & 0x04)) { - second = (u8)((second & 0x0F) + ((second / 16) * 10)); - minute = (u8)((minute & 0x0F) + ((minute / 16) * 10)); - hour = (u8)(((hour & 0x0F) + (((hour & 0x70) / 16) * 10)) | (hour & 0x80)); - day = (u8)((day & 0x0F) + ((day / 16) * 10)); - month = (u8)((month & 0x0F) + ((month / 16) * 10)); - year = (year & 0x0F) + ((year / 16) * 10); - century = (century & 0x0F) + ((century / 16) * 10); - } - - year += century * 100; - - // Convert to 24h if necessary - if (!(registerB & 0x02) && (hour & 0x80)) { - hour = (u8)(((hour & 0x7F) + 12) % 24); - } -} - -void rtc_print() -{ - read_rtc(); - info("Current time: %d:%d:%d %d/%d/%d", hour, minute, second, month, day, year); -}
\ No newline at end of file diff --git a/src/kernel/cmos/rtc.h b/src/kernel/cmos/rtc.h deleted file mode 100644 index a277dd5..0000000 --- a/src/kernel/cmos/rtc.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef MELVIX_RTC_H -#define MELVIX_RTC_H - -#include <stdint.h> - -u8 second; -u8 minute; -u8 hour; -u8 day; -u8 month; -u32 year; - -void read_rtc(); - -void rtc_print(); - -#endif
\ No newline at end of file diff --git a/src/kernel/events/event.c b/src/kernel/events/event.c deleted file mode 100644 index a50e0c7..0000000 --- a/src/kernel/events/event.c +++ /dev/null @@ -1,31 +0,0 @@ -#include <common.h> -#include <stddef.h> -#include <stdint.h> -#include <system.h> - -typedef u32 (*event_func)(u8 *); - -u32 (*event_table[])() = { [MAP_KEYBOARD] = NULL, [MAP_MOUSE] = NULL }; - -u32 event_map(u32 id, u8 *function) -{ - if (id >= sizeof(event_map) / sizeof(*event_map)) - return -1; - - event_table[id] = (u32)function; - return 0; -} - -u32 event_trigger(u32 id, u8 *data) -{ - assert(id < sizeof(event_map) / sizeof(*event_map)); - - event_func location = (event_func)event_table[id]; - if (!location) { - warn("Event %d not mapped!", id); - return -1; - } - - location(data); - return 0; -}
\ No newline at end of file diff --git a/src/kernel/events/event.h b/src/kernel/events/event.h deleted file mode 100644 index 3f46632..0000000 --- a/src/kernel/events/event.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef MELVIX_EVENT_H -#define MELVIX_EVENT_H - -#include <stdint.h> - -u32 event_map(u32 id, u8 *function); -u32 event_trigger(u32 id, u8 *data); - -#endif
\ No newline at end of file diff --git a/src/kernel/fs/ata.c b/src/kernel/fs/ata.c deleted file mode 100644 index 2e952a1..0000000 --- a/src/kernel/fs/ata.c +++ /dev/null @@ -1,120 +0,0 @@ -#include <fs/ata.h> -#include <io/io.h> -#include <stdbool.h> -#include <stddef.h> -#include <stdint.h> -#include <system.h> - -static u16 sel_base_port = 0; -static u8 sel_master_or_slave = 0; - -static u32 max_sector; - -static u8 read_stat(u16 base) -{ - inb(base + COM_STAT); - inb(base + COM_STAT); - inb(base + COM_STAT); - inb(base + COM_STAT); - - return inb(base + COM_STAT); -} - -static void check_drive(u16 base, u8 master_or_slave) -{ - if (sel_base_port != 0) - return; - - outb(base + DRIVE_SELECT, master_or_slave); - - outb(base + SECTOR_COUNT, 0); - outb(base + LBA_LOW, 0); - outb(base + LBA_MID, 0); - outb(base + LBA_HIGH, 0); - - outb(base + COM_STAT, IDENTIFY); - u8 stat = read_stat(base); - - if (stat == 0) - return; - - while ((stat & BSY) != 0) - stat = read_stat(base); - - while ((stat & DRQ) == 0 && (stat & ERR) == 0) - stat = read_stat(base); - - if ((stat & ERR) != 0) - return; - - u16 drive_data[256]; - for (u32 i = 0; i < 256; i++) - drive_data[i] = inw(base + DATA); - - max_sector = drive_data[MAX_28LBA_SECTORS] | drive_data[MAX_28LBA_SECTORS + 1] << 16; - - sel_base_port = base; - sel_master_or_slave = master_or_slave; -} - -void ata_init() -{ - u8 pri_status = inb(PRIMARY_BASE + COM_STAT); - u8 sec_status = inb(SECONDARY_BASE + COM_STAT); - bool primary_floating = false; - bool secondary_floating = false; - if (pri_status == 0xFF) - primary_floating = true; - if (sec_status == 0xFF) - secondary_floating = true; - - if (primary_floating && secondary_floating) { - log("No drives attached! What's going on?"); - return; - } - - check_drive(PRIMARY_BASE, SEL_MASTER); - check_drive(PRIMARY_BASE, SEL_SLAVE); - check_drive(SECONDARY_BASE, SEL_MASTER); - check_drive(SECONDARY_BASE, SEL_SLAVE); - - if (sel_base_port == 0) - log("No drives attached! What's going on?"); - else { - log("Found drive: Selecting %s on the %s bus", - sel_master_or_slave == SEL_MASTER ? "master" : "slave", - sel_base_port == PRIMARY_BASE ? "primary" : "secondary"); - log("Max LBA value is %d", max_sector); - } -} - -static void poll() -{ - u8 stat; - - do - stat = read_stat(sel_base_port); - while ((stat & BSY) != 0); -} - -void read_abs_sectors(u32 lba, u8 sector_count, u16 buf[]) -{ - assert(lba >> LBA_BITS == 0); - - outb(sel_base_port + DRIVE_SELECT, (lba >> (LBA_BITS - 4)) | sel_master_or_slave | 1 << 6); - outb(sel_base_port + SECTOR_COUNT, sector_count); - - outb(sel_base_port + LBA_LOW, lba & 0xFF); - outb(sel_base_port + LBA_MID, (lba >> 8) & 0xFF); - outb(sel_base_port + LBA_HIGH, (lba >> 16) & 0xFF); - - outb(sel_base_port + COM_STAT, READ_SECTORS); - - u32 i = 0; - for (; sector_count > 0; sector_count--) { - poll(); - - asm("rep insw" ::"c"(SECTOR_SIZE / 2), "d"(sel_base_port + DATA), "D"(buf + i)); - i += SECTOR_SIZE / 2; - } -}
\ No newline at end of file diff --git a/src/kernel/fs/ata.h b/src/kernel/fs/ata.h deleted file mode 100644 index 97a1069..0000000 --- a/src/kernel/fs/ata.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef ATA_DRIVER_H -#define ATA_DRIVER_H - -#include <stdint.h> - -#define SECTOR_SIZE 512 - -#define LBA_BITS 28 - -// Port bases and offsets -// TODO: Support other emulators/devices by using PCI ATA detection -#define PRIMARY_BASE 0x1F0 -#define SECONDARY_BASE 0x170 -#define DATA 0 -#define ERROR 1 -#define SECTOR_COUNT 2 -#define LBA_LOW 3 -#define LBA_MID 4 -#define LBA_HIGH 5 -#define DRIVE_SELECT 6 -#define COM_STAT 7 - -#define PRI_CONTROL 0x3F6 -#define SEC_CONTROL 0x376 - -// Commands -#define SEL_MASTER 0xA0 -#define SEL_SLAVE 0xB0 -#define IDENTIFY 0xEC -#define READ_SECTORS 0x20 - -// Status byte flags -#define ERR (1 << 0) -#define DRQ (1 << 3) -#define SRV (1 << 4) -#define DF (1 << 5) -#define RDY (1 << 6) -#define BSY (1 << 7) - -#define MAX_28LBA_SECTORS 60 - -void ata_init(); - -void read_abs_sectors(u32 lba, u8 sector_count, u16 buf[]); - -#endif
\ No newline at end of file diff --git a/src/kernel/fs/elf.c b/src/kernel/fs/elf.c deleted file mode 100644 index 6585bb4..0000000 --- a/src/kernel/fs/elf.c +++ /dev/null @@ -1,100 +0,0 @@ -#include <fs/elf.h> -#include <fs/ext2.h> -#include <gdt/gdt.h> -#include <io/io.h> -#include <lib/lib.h> -#include <lib/stdio.h> -#include <lib/stdlib.h> -#include <memory/alloc.h> -#include <memory/paging.h> -#include <stddef.h> -#include <stdint.h> -#include <system.h> -#include <tasks/process.h> - -int elf_verify(struct elf_header *header) -{ - if (header->ident[0] == ELF_MAG && header->ident[1] == 'E' && header->ident[2] == 'L' && - header->ident[3] == 'F' && header->ident[4] == ELF_32 && - header->ident[5] == ELF_LITTLE && header->ident[6] == ELF_CURRENT && - header->machine == ELF_386 && (header->type == ET_REL || header->type == ET_EXEC)) { - return 1; - } - return 0; -} - -struct process *elf_load(char *path) -{ - log("ELF START"); - - u8 *file = read_file(path); - if (!file) { - warn("File or directory not found: %s", path); - return NULL; - } - - struct elf_header *header = (struct elf_header *)file; - - if (!elf_verify(header)) { - warn("File not valid: %s", path); - return NULL; - } else { - debug("File is valid: %s", path); - } - - struct process *proc = process_make_new(); - paging_switch_dir(proc->cr3); - - u32 image_low = 0xFFFFFFFF; - u32 image_high = 0; - - // Parse ELF - u32 i = 0; - u32 j = 0; - while (i < header->shentsize * header->shnum) { - struct elf_section_header *sh = (void *)((u32)header + (header->shoff + i)); - if (sh->addr != 0) { - log("%x", sh->addr); - /* for (u32 j = 0; j < sh->size; j += PAGE_SIZE) { */ - /* paging_frame_alloc(paging_get_page(sh->addr + j, proc->cr3)); */ - /* invlpg(sh->addr + j); */ - /* } */ - while (j < sh->size) { - paging_frame_alloc(paging_get_page(sh->addr + j, proc->cr3)); - invlpg(sh->addr + j); - j += 0x1000; - } - - if (sh->type == 8) - // section is .bss - memset((void *)sh->addr, 0, sh->size); - else - memcpy((void *)sh->addr, (void *)((u32)header + sh->offset), - sh->size); - - if (sh->addr < image_low) - image_low = sh->addr; - - if (sh->addr + sh->size > image_high) - image_high = sh->addr + sh->size; - } - i += header->shentsize; - } - - // Stack - struct page_table_entry *stack_page = paging_get_page(USER_STACK_LOW, proc->cr3); - paging_frame_alloc(stack_page); - stack_page->writable = 1; - invlpg(USER_STACK_LOW); - - strcpy(proc->name, path); - proc->brk = image_high; - proc->regs.useresp = USER_STACK_HIGH; - proc->regs.ebp = proc->regs.useresp; - proc->regs.esp = proc->regs.useresp; - proc->regs.eip = header->entry; - - debug("Loaded file"); - - return proc; -} diff --git a/src/kernel/fs/elf.h b/src/kernel/fs/elf.h deleted file mode 100644 index 94a3863..0000000 --- a/src/kernel/fs/elf.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef MELVIX_ELF_H -#define MELVIX_ELF_H - -#include <stdint.h> -#include <tasks/process.h> - -#define ELF_MAG 0x7F // 0 -#define ELF_32 (1) // 4: 32-bit Architecture -#define ELF_LITTLE (1) // 5: Little Endian -#define ELF_CURRENT (1) // 6: ELF Current Version -#define ELF_386 (3) // header->machine x86 machine type - -#define ET_NONE 0 // Unkown type -#define ET_REL 1 // Relocatable file -#define ET_EXEC 2 // Executable file - -#define PT_NULL 0 -#define PT_LOAD 1 -#define PT_DYNAMIC 2 -#define PT_INTERP 3 -#define PT_NOTE 4 -#define PT_SHLIB 5 -#define PT_PHDR 6 -#define PT_LOPROC 0x70000000 -#define PT_HIPROC 0x7fffffff - -#define PF_X 0x1 -#define PF_W 0x2 -#define PF_R 0x4 - -#define USER_STACK_LOW 0x00400000 -#define USER_STACK_HIGH 0x00401000 - -struct elf_priv_data { - u32 sig; -}; - -struct elf_header { - u8 ident[16]; - u16 type; - u16 machine; - u32 version; - u32 entry; - u32 phoff; - u32 shoff; - u32 flags; - u16 ehsize; - u16 phentsize; - u16 phnum; - u16 shentsize; - u16 shnum; - u16 shstrndx; -}; - -struct elf_section_header { - u32 name; - u32 type; - u32 flags; - u32 addr; - u32 offset; - u32 size; - u32 link; - u32 info; - u32 addralign; - u32 entsize; -}; - -struct elf_program_header { - u32 type; - u32 offset; - u32 vaddr; - u32 paddr; - u32 filesz; - u32 memsz; - u32 flags; - u32 align; -}; - -int is_elf(struct elf_header *header); -struct process *elf_load(char *path); - -#endif
\ No newline at end of file diff --git a/src/kernel/fs/ext2.c b/src/kernel/fs/ext2.c deleted file mode 100644 index 70c72aa..0000000 --- a/src/kernel/fs/ext2.c +++ /dev/null @@ -1,230 +0,0 @@ -#include <fs/ata.h> -#include <fs/ext2.h> -#include <lib/lib.h> -#include <lib/stdlib.h> -#include <memory/alloc.h> -#include <stdbool.h> -#include <stddef.h> -#include <stdint.h> -#include <system.h> - -static struct ext2_superblock superblock; -static struct bgd *bgdt; -static u32 block_size; -static u32 num_groups; -static void read_block(u32 block_num, void *buf); -static void load_superblock(); -static void load_bgdt(); -static void read_inode(struct ext2_inode *inode, u32 inode_num); - -void ext2_init_fs() -{ - load_superblock(); - load_bgdt(); - - struct ext2_inode root_inode; - read_inode(&root_inode, ROOT_INODE); - debug("Creation time: %d", root_inode.creation_time); - debug("UID: %d", root_inode.uid); - debug("Type & perms: 0x%x", root_inode.mode); - debug("Size: %d", root_inode.size); - - debug("Files:"); - struct ext2_file file; - ext2_open_inode(ROOT_INODE, &file); - struct ext2_dirent dirent; - - while (ext2_next_dirent(&file, &dirent)) - debug("Inode %d, name '%s'", dirent.inode_num, dirent.name); -} - -static void read_block(u32 block_num, void *buf) -{ - u32 lba = block_num * block_size / SECTOR_SIZE; - u32 sectors = block_size / SECTOR_SIZE; - - read_abs_sectors(lba, sectors, buf); -} - -static void load_superblock() -{ - u16 buf[SUPERBLOCK_LENGTH / 2]; - - read_abs_sectors(SUPERBLOCK_LBA, SUPERBLOCK_SECTORS, buf); - memcpy(&superblock, buf, sizeof(struct ext2_superblock)); - - block_size = 1024 << superblock.log2_block_size; - num_groups = superblock.total_blocks / superblock.blocks_per_group; - - assert(superblock.signature == EXT2_SIGNATURE); - debug("Total inodes: 0x%x", superblock.total_inodes); - debug("Total blocks: 0x%x", superblock.total_blocks); - debug("Drive size: %dMiB", (block_size * superblock.total_blocks) >> 20); - debug("Block size: %d", block_size); - debug("Num blocks: %d", superblock.total_blocks); - debug("Blocks/group: %d", superblock.blocks_per_group); - debug("Inodes/group: %d", superblock.inodes_per_group); - debug("Num groups: %d", num_groups); - debug("Creator OS: %s", superblock.creator_os_id == 0 ? "Linux" : "Other"); -} - -static void load_bgdt() -{ - u32 bgdt_sectors = (sizeof(struct bgd) * num_groups) / SECTOR_SIZE + 1; - u32 bgdt_block = (SUPERBLOCK_OFFSET + SUPERBLOCK_LENGTH) / block_size + 1; - u32 bgdt_lba = bgdt_block * block_size / SECTOR_SIZE; - - u16 buf[bgdt_sectors * SECTOR_SIZE / 2]; - read_abs_sectors(bgdt_lba, bgdt_sectors, buf); - - u32 bgdt_size = sizeof(struct bgd) * num_groups; - bgdt = malloc(bgdt_size); - memcpy(bgdt, buf, bgdt_size); -} - -static void read_inode(struct ext2_inode *inode, u32 inode_num) -{ - inode_num--; - u32 block_group = inode_num / superblock.inodes_per_group; - - struct bgd *bgd = &bgdt[block_group]; - u32 i_table_block = bgd->inode_table_addr; - - u32 index = inode_num % superblock.inodes_per_group; - u32 block_offset = (index * INODE_SIZE) / block_size; - u32 offset_in_block = (index * INODE_SIZE) % block_size; - u32 block = i_table_block + block_offset; - - u32 num_sectors = sizeof(struct ext2_inode) / SECTOR_SIZE + 1; - u16 buf[num_sectors * SECTOR_SIZE / 2]; - read_abs_sectors(block * block_size / SECTOR_SIZE, num_sectors, buf); - memcpy(inode, &buf[offset_in_block / 2], sizeof(struct ext2_inode)); -} - -void ext2_open_inode(u32 inode_num, struct ext2_file *file) -{ - read_inode(&file->inode, inode_num); - file->pos = 0; - file->block_index = 0; - file->buf = malloc(block_size); - file->curr_block_pos = 0; - - read_block(file->inode.dbp[0], file->buf); -} - -u32 ext2_read(struct ext2_file *file, u8 *buf, u32 count) -{ - if (file->pos + count > file->inode.size) - count = file->inode.size - file->pos; - - u32 bytes_left = count; - - while (bytes_left > 0) { - u32 to_copy = bytes_left; - - bool new_block = file->curr_block_pos + to_copy >= block_size; - if (new_block) - to_copy = block_size - file->curr_block_pos; - - memcpy(buf + (count - bytes_left), file->buf + file->curr_block_pos, to_copy); - file->curr_block_pos += to_copy; - file->pos += to_copy; - bytes_left -= to_copy; - - if (new_block) { - file->curr_block_pos = 0; - file->block_index++; - if (file->block_index >= 12) { - // TODO: Add triple block pointer support - u32 *tmp = malloc(block_size); - read_block(file->inode.ibp, tmp); - read_block(tmp[file->block_index - 12], file->buf); - } else { - read_block(file->inode.dbp[file->block_index], file->buf); - } - } - } - - return count; -} - -#define READ_SIZE (sizeof(struct ext2_dirent) - sizeof(u8 *)) - -bool ext2_next_dirent(struct ext2_file *file, struct ext2_dirent *dir) -{ - u8 buf[READ_SIZE]; - if (ext2_read(file, buf, READ_SIZE) != READ_SIZE) - return false; - - memcpy(dir, buf, READ_SIZE); - - u32 size = dir->name_len + 1; - u8 *name = malloc(size); - if (ext2_read(file, name, size - 1) != size - 1) - return false; - - dir->name = name; - dir->name[size - 1] = '\0'; - - u32 bytes_left = dir->total_len - (READ_SIZE + size - 1); - if (bytes_left > 0) { - u8 dummy[bytes_left]; - ext2_read(file, dummy, bytes_left); - } - - return true; -} - -u32 ext2_find_in_dir(u32 dir_inode, const char *name) -{ - u32 inode; - struct ext2_file dir; - struct ext2_dirent dirent; - - ext2_open_inode(dir_inode, &dir); - while (ext2_next_dirent(&dir, &dirent)) { - if (strcmp((char *)dirent.name, name) == 0) { - inode = dirent.inode_num; - goto cleanup; - } - } - - inode = 0; - -cleanup: - free(dir.buf); - return inode; -} - -u32 ext2_look_up_path(char *path) -{ - if (path[0] != '/') - return 0; - - path++; - u32 curr_dir_inode = ROOT_INODE; - - while (1) { - u32 j; - for (j = 0; path[j] != '/' && path[j] != '\0'; j++) - ; - - if (path[j] == '\0') - break; - - path[j] = '\0'; - curr_dir_inode = ext2_find_in_dir(curr_dir_inode, path); - path[j] = '/'; - - if (curr_dir_inode == 0) - return 0; - - path += j + 1; - } - - u32 inode = ext2_find_in_dir(curr_dir_inode, path); - if (inode == 0) - return 0; - - return inode; -}
\ No newline at end of file diff --git a/src/kernel/fs/ext2.h b/src/kernel/fs/ext2.h deleted file mode 100644 index 797985a..0000000 --- a/src/kernel/fs/ext2.h +++ /dev/null @@ -1,154 +0,0 @@ -#ifndef MELVIX_EXT2_H -#define MELVIX_EXT2_H - -#include <stdbool.h> -#include <stddef.h> -#include <stdint.h> - -#define ROOT_INODE 2 - -#define EXT2_SIGNATURE 0xEF53 -#define INODE_SIZE 128 - -#define SUPERBLOCK_OFFSET 1024 -#define SUPERBLOCK_LENGTH 1024 - -#define SUPERBLOCK_LBA (SUPERBLOCK_OFFSET / SECTOR_SIZE) -#define SUPERBLOCK_SECTORS (SUPERBLOCK_LENGTH / SECTOR_SIZE) - -struct ext2_superblock { - u32 total_inodes; - u32 total_blocks; - u32 su_res_blocks; // Superuser reserved - u32 free_blocks; - u32 free_inodes; - u32 superblock_block_num; - u32 log2_block_size; - u32 log2_frag_size; - u32 blocks_per_group; - u32 frags_per_group; - u32 inodes_per_group; - u32 last_mount_time; - u32 last_write_time; - u16 mounts_since_fsck; - u16 max_mounts_since_fsck; - u16 signature; - u16 state; // 1 clean; 2 errors - u16 error_action; - u16 minor_version; - u32 last_fsck_time; - u32 max_time_since_fsck; - u32 creator_os_id; - u32 major_version; - u16 res_block_uid; - u16 res_block_gid; -} __attribute__((packed)); - -// Block group descriptor -struct bgd { - u32 block_bitmap_addr; - u32 inode_bitmap_addr; - u32 inode_table_addr; - u16 free_blocks; - u16 free_inodes; - u16 used_dirs; - u16 pad; - u8 bg_reserved[12]; -} __attribute__((packed)); - -struct ext2_inode { - u16 mode; - u16 uid; - u32 size; - - u32 last_access_time; - u32 creation_time; - u32 last_modification_time; - u32 deletion_time; - - u16 gid; - u16 link_count; - u32 sectors_used; - u32 flags; - u32 os_specific_val1; - u32 dbp[12]; - u32 ibp; - u32 dibp; - u32 tibp; - u32 gen_number; - - u32 reserved1; - u32 reserved2; - - u32 fragment_addr; - u8 os_specific_val2[12]; -} __attribute__((packed)); - -#define S_IFIFO 0x1000 -#define S_IFCHR 0x2000 -#define S_IFDIR 0x4000 -#define S_IFBLK 0x6000 -#define S_IFREG 0x8000 -#define S_IFLNK 0xA000 -#define S_IFSOCK 0xC000 - -#define S_ISDIR(m) ((m & 0170000) == 0040000) -#define S_ISCHR(m) ((m & 0170000) == 0020000) -#define S_ISBLK(m) ((m & 0170000) == 0060000) -#define S_ISREG(m) ((m & 0170000) == 0100000) -#define S_ISFIFO(m) ((m & 0170000) == 0010000) -#define S_ISLNK(m) ((m & 0170000) == 0120000) -#define S_ISSOCK(m) ((m & 0170000) == 0140000) - -#define S_ISUID 04000 -#define S_ISGID 02000 -#define S_ISTICK 01000 -#define S_IRUSR 00400 -#define S_IWUSR 00200 -#define S_IXUSR 00100 -#define S_IRGRP 00040 -#define S_IWGRP 00020 -#define S_IXGRP 00010 -#define S_IROTH 00004 -#define S_IWOTH 00002 -#define S_IXOTH 00001 - -#define SECURE_DELETE 0x00001 -#define UNDELETE 0x00002 -#define COMPRESSED 0x00004 -#define SYNCRONOUS 0x00008 -#define IMMUTABLE 0x00010 -#define APPEND_ONLY 0x00020 -#define DUMP_IGNORE 0x00040 -#define NO_UPDATE_ACCESS 0x00080 - -struct fs_node *ext2_root; - -struct ext2_dirent { - u32 inode_num; - u16 total_len; - u8 name_len; - u8 type_indicator; - u8 *name; -} __attribute__((packed)); - -struct ext2_file { - struct ext2_inode inode; - u32 pos; - u8 block_index; - u8 *buf; - u32 curr_block_pos; -}; - -void ext2_init_fs(); -void ext2_open_inode(u32 inode_num, struct ext2_file *file); -u32 ext2_read(struct ext2_file *file, u8 *buf, u32 count); -bool ext2_next_dirent(struct ext2_file *file, struct ext2_dirent *dir); -u32 ext2_find_in_dir(u32 dir_inode, const char *name); -u32 ext2_look_up_path(char *path); - -u8 *read_file(char *path); -void ext2_node_init(struct fs_node *node); -void ext2_mount(struct fs_node *mountpoint); - -#endif
\ No newline at end of file diff --git a/src/kernel/fs/fs.c b/src/kernel/fs/fs.c deleted file mode 100644 index b9bada7..0000000 --- a/src/kernel/fs/fs.c +++ /dev/null @@ -1,61 +0,0 @@ -#include <fs/ext2.h> -#include <memory/alloc.h> -#include <stdint.h> -#include <system.h> - -u32 get_file_size(char *path) -{ - u32 inode = ext2_look_up_path(path); - struct ext2_file file; - ext2_open_inode(inode, &file); - if (inode != 0) { - return file.inode.size; - } else { - warn("File not found"); - return -1; - } -} - -// TODO: Implement offset -u32 read(char *path, u32 offset, u32 count, u8 *buf) -{ - u32 inode = ext2_look_up_path(path); - struct ext2_file file; - ext2_open_inode(inode, &file); - if (inode != 0) { - debug("Reading %s: %dKiB", path, count >> 10); - ext2_read(&file, buf, count); - free(file.buf); - buf[count - 1] = '\0'; - return buf; - } else { - warn("File not found"); - return -1; - } -} - -// TODO: Implement writing -u32 write(char *path, u32 offset, u32 count, u8 *buf) -{ - warn("Writing is not supported!"); - return -1; -} - -u8 *read_file(char *path) -{ - u32 inode = ext2_look_up_path(path); - struct ext2_file file; - ext2_open_inode(inode, &file); - if (inode != 0) { - u32 size = file.inode.size; - debug("Reading %s: %dKiB", path, size >> 10); - u8 *buf = malloc(size); - ext2_read(&file, buf, size); - free(file.buf); - buf[size - 1] = '\0'; - return buf; - } else { - warn("File not found"); - return NULL; - } -}
\ No newline at end of file diff --git a/src/kernel/fs/fs.h b/src/kernel/fs/fs.h deleted file mode 100644 index 58b23db..0000000 --- a/src/kernel/fs/fs.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef MELVIX_FS_H -#define MELVIX_FS_H - -#include <stdint.h> - -u32 get_file_size(char *path); -u32 read(char *path, u32 offset, u32 count, u8 *buf); -u32 write(char *path, u32 offset, u32 count, u8 *buf); -u8 *read_file(char *path); // Only for temp kernel reads - -#endif
\ No newline at end of file diff --git a/src/kernel/fs/load.c b/src/kernel/fs/load.c deleted file mode 100644 index 0e93273..0000000 --- a/src/kernel/fs/load.c +++ /dev/null @@ -1,12 +0,0 @@ -#include <fs/ext2.h> -#include <fs/load.h> -#include <lib/lib.h> -#include <lib/stdio.h> -#include <system.h> - -void load_binaries() -{ - font = (struct font *)read_file("/bin/font"); - - log("Successfully loaded binaries"); -}
\ No newline at end of file diff --git a/src/kernel/fs/load.h b/src/kernel/fs/load.h deleted file mode 100644 index b2376be..0000000 --- a/src/kernel/fs/load.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef MELVIX_LOAD_H -#define MELVIX_LOAD_H - -#include <stdint.h> - -struct font *font; - -struct font { - u16 font_32[758][32]; - u16 font_24[758][24]; - u8 font_16[758][16]; - u16 cursor[19]; -}; - -void load_binaries(); - -#endif
\ No newline at end of file diff --git a/src/kernel/gdt/gdt.asm b/src/kernel/gdt/gdt.asm deleted file mode 100644 index 51ce444..0000000 --- a/src/kernel/gdt/gdt.asm +++ /dev/null @@ -1,14 +0,0 @@ -; GDT flush function -global gdt_flush -extern gp -gdt_flush: - lgdt [gp] - mov ax, 0x10 ; Data segment offset of GDT - mov ds, ax - mov es, ax - mov fs, ax - mov gs, ax - mov ss, ax - jmp 0x08:flush ; Code segment offset -flush: - ret ; Returns to C code
\ No newline at end of file diff --git a/src/kernel/gdt/gdt.c b/src/kernel/gdt/gdt.c deleted file mode 100644 index f201f19..0000000 --- a/src/kernel/gdt/gdt.c +++ /dev/null @@ -1,128 +0,0 @@ -#include <gdt/gdt.h> -#include <lib/lib.h> -#include <memory/alloc.h> -#include <stdint.h> -#include <system.h> - -struct gdt_entry { - u16 limit_low; - u16 base_low; - u8 base_middle; - u8 access; - u8 granularity; - u8 base_high; -} __attribute__((packed)); - -struct gdt_ptr { - u16 limit; - void *base; -} __attribute__((packed)); - -struct gdt_entry gdt[6]; -struct gdt_ptr gp; - -struct tss_entry_struct { - u32 prev_tss; - u32 esp0; - u32 ss0; - u32 esp1; - u32 ss1; - u32 esp2; - u32 ss2; - u32 cr3; - u32 eip; - u32 eflags; - u32 eax; - u32 ecx; - u32 edx; - u32 ebx; - u32 esp; - u32 ebp; - u32 esi; - u32 edi; - u32 es; - u32 cs; - u32 ss; - u32 ds; - u32 fs; - u32 gs; - u32 ldt; - u16 trap; - u16 iomap_base; -} __attribute__((packed)); - -struct tss_entry_struct tss_entry; - -extern void gdt_flush(); - -void gdt_set_gate(s32 num, u32 base, u32 limit, u8 access, u8 gran) -{ - // Set descriptor base address - gdt[num].base_low = (u16)(base & 0xFFFF); - gdt[num].base_middle = (u8)((base >> 16) & 0xFF); - gdt[num].base_high = (u8)((base >> 24) & 0xFF); - gdt[num].limit_low = (u16)(limit & 0xFFFF); - - // Set granularity and access flags - gdt[num].granularity = (u8)((limit >> 16) & 0x0F); - gdt[num].granularity |= (gran & 0xF0); - gdt[num].access = access; -} - -extern u32 stack_hold; - -void gdt_install() -{ - // Set GDT pointer and limit - gp.limit = (sizeof(struct gdt_entry) * 6) - 1; - gp.base = &gdt; - - // NULL descriptor - gdt_set_gate(0, 0, 0, 0, 0); - - // Code segment - gdt_set_gate(1, 0, 0xFFFFFFFF, 0x9A, 0xCF); - - // Data segment - gdt_set_gate(2, 0, 0xFFFFFFFF, 0x92, 0xCF); - - // User mode code segment - gdt_set_gate(3, 0, 0xFFFFFFFF, 0xFA, 0xCF); - - // User mode data segment - gdt_set_gate(4, 0, 0xFFFFFFFF, 0xF2, 0xCF); - - // Write TSS - tss_write(5, 0x10, stack_hold); - - // Remove old GDT and install the new changes! - gdt_flush(); - tss_flush(); - - info("Installed Global Descriptor Table"); -} - -void tss_write(s32 num, u16 ss0, u32 esp0) -{ - u32 base = (u32)&tss_entry; - u32 limit = base + sizeof(tss_entry); - - gdt_set_gate(num, base, limit, 0xE9, 0x00); - - memset(&tss_entry, 0, sizeof(tss_entry)); - - tss_entry.ss0 = ss0; - tss_entry.esp0 = esp0; - tss_entry.cs = 0x0b; - tss_entry.ss = tss_entry.ds = tss_entry.es = tss_entry.fs = tss_entry.gs = 0x13; -} - -void tss_flush() -{ - asm volatile("ltr %%ax" : : "a"(0x2B)); -} - -void set_kernel_stack(u32 stack) -{ - tss_entry.esp0 = stack; -}
\ No newline at end of file diff --git a/src/kernel/gdt/gdt.h b/src/kernel/gdt/gdt.h deleted file mode 100644 index 36d6744..0000000 --- a/src/kernel/gdt/gdt.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef MELVIX_GDT_H -#define MELVIX_GDT_H - -#include <stdint.h> - -/** - * Installs the Global Descriptor Table - */ -void gdt_install(); - -void tss_write(s32 num, u16 ss0, u32 esp0); - -void tss_flush(); - -void set_kernel_stack(u32 stack); - -#endif
\ No newline at end of file diff --git a/src/kernel/graphics/vesa.c b/src/kernel/graphics/vesa.c deleted file mode 100644 index 7fa4e15..0000000 --- a/src/kernel/graphics/vesa.c +++ /dev/null @@ -1,326 +0,0 @@ -#include <fs/load.h> -#include <graphics/vesa.h> -#include <lib/stdio.h> -#include <lib/stdlib.h> -#include <memory/alloc.h> -#include <memory/paging.h> -#include <system.h> - -void vbe_error() -{ - log("Error in VESA detection script!"); - warn(RED "Melvix can't work without VESA Support!" RES); - halt_loop(); -} - -void vbe_set_mode(u16 mode) -{ - regs16_t regs; - regs.ax = 0x4F02; - regs.bx = mode; - regs.bx |= 0x4000; - v86(0x10, ®s); - - if (regs.ax != 0x004F) - vbe_error(); -} - -u16 *vbe_get_modes() -{ - char *info_address = (char *)0x7E00; - strcpy(info_address, "VBE2"); - for (int i = 4; i < 512; i++) - *(info_address + i) = 0; - - regs16_t regs; - regs.ax = 0x4F00; - regs.es = 0; - regs.di = 0x7E00; - v86(0x10, ®s); - - struct vbe_info *info = (struct vbe_info *)info_address; - - if (regs.ax != 0x004F || strcmp(info->signature, "VESA") != 0) - vbe_error(); - - // Get number of modes - u16 *mode_ptr = (u16 *)info->video_modes; - u32 number_modes = 1; - for (u16 *p = mode_ptr; *p != 0xFFFF; p++) - number_modes++; - - u16 *ret = (u16 *)malloc(sizeof(u16) * number_modes); - for (u32 i = 0; i < number_modes; i++) - ret[i] = ((u16 *)info->video_modes)[i]; - - return ret; -} - -struct vbe_mode_info *vbe_get_mode_info(u16 mode) -{ - regs16_t regs; - regs.ax = 0x4F01; - regs.cx = mode; - regs.es = 0; - regs.di = 0x7E00; - v86(0x10, ®s); - if (regs.ax != 0x004f) - return 0; - - struct vbe_mode_info_all *mode_info = (struct vbe_mode_info_all *)0x7E00; - - struct vbe_mode_info *ret = (struct vbe_mode_info *)malloc(sizeof(struct vbe_mode_info)); - ret->attributes = mode_info->attributes; - ret->pitch = mode_info->pitch; - ret->width = mode_info->width; - ret->height = mode_info->height; - ret->bpp = mode_info->bpp; - ret->memory_model = mode_info->memory_model; - ret->framebuffer = mode_info->framebuffer; - - return ret; -} - -void set_optimal_resolution() -{ - log("Switching to graphics mode"); - log("Trying to detect available modes"); - u16 *video_modes = vbe_get_modes(); - - u16 highest = 0; - - for (u16 *mode = video_modes; *mode != 0xFFFF; mode++) { - struct vbe_mode_info *mode_info = vbe_get_mode_info(*mode); - - if (mode_info == 0 || (mode_info->attributes & 0x90) != 0x90 || - (mode_info->memory_model != 4 && mode_info->memory_model != 6)) { - free(mode_info); - continue; - } - - if (mode_info->width > vbe_width || - (mode_info->width == vbe_width && (mode_info->bpp >> 3) > vbe_bpl)) { - // if (mode_info->bpp == 32) { // Force specific bpp for debugging - debug("Found mode: %dx%dx%d", mode_info->width, mode_info->height, - mode_info->bpp); - highest = *mode; - current_mode_info = mode_info; - vbe_width = mode_info->width; - vbe_height = mode_info->height; - vbe_pitch = mode_info->pitch; - vbe_bpl = mode_info->bpp >> 3; - fb = (u8 *)mode_info->framebuffer; - } - free(mode_info); - } - - free(video_modes); - - if (highest == 0) { - log("Mode detection failed!"); - log("Trying common modes..."); - struct vbe_mode_info *mode_info; - int modes[] = { - 322, 287, 286, 285, 284, // 1600x1200 - 356, 355, 354, 353, 352, // 1440x900 - 317, 283, 282, 281, 263, 262, // 1280x1024 - 361, 360, 359, 358, 357, // 1152x720 - 312, 280, 279, 278, 261, 260, // 1024x768 - 366, 365, 364, 363, 362, // 1024x640 - 307, 306, 305, 304, 303, // 896x672 - 302, 277, 267, 275, 259, 258, 106, // 800x600 - 371, 370, 369, 368, 367, // 800x500 - 297, 274, 273, 272, 257, // 640x480 - 292, 291, 290, 289, 256, // 640x400 - 271, 270, 269, // 320x200 - }; - - for (u32 i = 0; i < sizeof(modes) / sizeof(modes[0]); i++) { - mode_info = vbe_get_mode_info((u16)modes[i]); - if (mode_info == 0 || (mode_info->attributes & 0x90) != 0x90 || - (mode_info->memory_model != 4 && mode_info->memory_model != 6)) { - free(mode_info); - continue; - } - - if ((mode_info->width > vbe_width || - (mode_info->width == vbe_width && (mode_info->bpp >> 3) > vbe_bpl))) { - highest = (u16)modes[i]; - vbe_width = mode_info->width; - vbe_height = mode_info->height; - vbe_pitch = mode_info->pitch; - vbe_bpl = mode_info->bpp >> 3; - fb = (u8 *)mode_info->framebuffer; - } - free(mode_info); - } - - // Everything else failed :( - if (highest == 0) - vbe_error(); - } else { - log("Mode detection succeeded"); - } - - vbe_set_mode(highest); - - /* u32 fb_size = vbe_width * vbe_height * vbe_bpl; */ - /* cursor_buffer = malloc(fb_size); */ - /* for (u32 z = 0; z < fb_size; z += PAGE_S) { */ - /* paging_map_user(paging_kernel_directory, (u32)fb + z, (u32)fb + z); */ - /* } */ - - /* dev_make("fb", NULL, (write)fb_write); */ - /* struct fs_node *node = (struct fs_node *)malloc(sizeof(struct fs_node)); */ - /* strcpy(node->name, "/dev/fb"); */ - /* fs_open(node); */ - /* node->write = (write)fb_write; */ - /* node->dev->block_size = 0; */ - - if (vbe_height > 1440) - vesa_set_font(32); - else if (vbe_height > 720) - vesa_set_font(24); - else - vesa_set_font(16); - //vesa_set_color(default_text_color); - //vesa_clear(); - - //vesa_set_color(vesa_blue); - //vesa_set_color(default_text_color); - - info("Successfully switched to video mode!"); - - log("Using mode: (0x%x) %dx%dx%d", highest, vbe_width, vbe_height, vbe_bpl << 3); -} - -const u32 default_text_color = vesa_white; -const u32 default_background_color = vesa_black; -u32 terminal_color[3] = { 0xab, 0xb2, 0xbf }; -u32 terminal_background[3] = { 0x1d, 0x1f, 0x24 }; -u16 terminal_x = 0; -u16 terminal_y = 0; -int font_width; -int font_height; - -void vesa_set_font(int height) -{ - font_width = height / 2; - font_height = height; -} - -void vesa_set_pixel(u16 x, u16 y, const u32 color[3]) -{ - u8 pos = (u8)(x * vbe_bpl + y * vbe_pitch); - char *draw = (char *)&fb[pos]; - draw[pos] = (char)color[2]; - draw[pos + 1] = (char)color[1]; - draw[pos + 2] = (char)color[0]; -} - -void vesa_draw_rectangle(int x1, int y1, int x2, int y2, const u32 color[3]) -{ - int pos1 = x1 * vbe_bpl + y1 * vbe_pitch; - char *draw = (char *)&fb[pos1]; - for (int i = 0; i <= y2 - y1; i++) { - for (int j = 0; j <= x2 - x1; j++) { - draw[vbe_bpl * j] = (char)color[2]; - draw[vbe_bpl * j + 1] = (char)color[1]; - draw[vbe_bpl * j + 2] = (char)color[0]; - } - draw += vbe_pitch; - } -} - -void vesa_clear() -{ - log("%dx%dx%d at %x", vbe_width, vbe_height, vbe_bpl << 3, fb); - vesa_draw_rectangle(0, 0, vbe_width - 1, vbe_height - 1, terminal_background); - terminal_x = 0; - terminal_y = 0; -} - -void vesa_draw_char(char ch) -{ - if (ch >= ' ') { - int pos = terminal_x * vbe_bpl + terminal_y * vbe_pitch; - char *draw = (char *)&fb[pos]; - u16 bitmap = 0; - - for (int cy = 0; cy <= font_height; cy++) { - if (font_height == 16) - bitmap = font->font_16[ch - 32][cy]; - else if (font_height == 24) - bitmap = font->font_24[ch - 32][cy] >> 4; - else if (font_height == 32) - bitmap = font->font_32[ch - 32][cy]; - for (int cx = 0; cx <= font_width + 1; cx++) { - if (bitmap & - ((1 << font_width) >> cx)) { // Side effect: Smoothness factor! - draw[vbe_bpl * cx] = (char)terminal_color[2]; - draw[vbe_bpl * cx + 1] = (char)terminal_color[1]; - draw[vbe_bpl * cx + 2] = (char)terminal_color[0]; - } else { - draw[vbe_bpl * cx] = (char)terminal_background[2]; - draw[vbe_bpl * cx + 1] = (char)terminal_background[1]; - draw[vbe_bpl * cx + 2] = (char)terminal_background[0]; - } - } - draw += vbe_pitch; - } - - terminal_x += font_width; - } else if (ch == '\n') { - terminal_x = 0; - terminal_y += font_height; - } else if (ch == '\t') { - terminal_x += 4 * font_width; - } - - if (terminal_x >= vbe_width) { - terminal_x = 0; - terminal_y += font_height; - } -} - -int prev_coords[2] = {}; -int first = 1; // TODO: Better initial cursor buffer solution -void vesa_draw_cursor(int x, int y) -{ - // Reset previous area - char *reset = (char *)&fb[prev_coords[0] * vbe_bpl + prev_coords[1] * vbe_pitch]; - char *prev = (char *)&cursor_buffer[prev_coords[0] * vbe_bpl + prev_coords[1] * vbe_pitch]; - if (!first) { - for (int cy = 0; cy <= 19; cy++) { - for (int cx = 0; cx <= 12; cx++) { - reset[vbe_bpl * cx] = prev[vbe_bpl * cx]; - reset[vbe_bpl * cx + 1] = prev[vbe_bpl * cx + 1]; - reset[vbe_bpl * cx + 2] = prev[vbe_bpl * cx + 2]; - } - reset += vbe_pitch; - prev += vbe_pitch; - } - } - first = 0; - - // Draw cursor - prev_coords[0] = x; - prev_coords[1] = y; - prev = (char *)&cursor_buffer[x * vbe_bpl + y * vbe_pitch]; - char *draw = (char *)&fb[x * vbe_bpl + y * vbe_pitch]; - for (int cy = 0; cy <= 19; cy++) { - for (int cx = 0; cx <= 12; cx++) { - // Performance issue? - prev[vbe_bpl * cx] = draw[vbe_bpl * cx]; - prev[vbe_bpl * cx + 1] = draw[vbe_bpl * cx + 1]; - prev[vbe_bpl * cx + 2] = draw[vbe_bpl * cx + 2]; - if (font->cursor[cy] & ((1 << 12) >> cx)) { - draw[vbe_bpl * cx] = (char)terminal_color[2]; - draw[vbe_bpl * cx + 1] = (char)terminal_color[1]; - draw[vbe_bpl * cx + 2] = (char)terminal_color[0]; - } - } - draw += vbe_pitch; - prev += vbe_pitch; - } -}
\ No newline at end of file diff --git a/src/kernel/graphics/vesa.h b/src/kernel/graphics/vesa.h deleted file mode 100644 index 82b7553..0000000 --- a/src/kernel/graphics/vesa.h +++ /dev/null @@ -1,204 +0,0 @@ -#ifndef MELVIX_VESA_H -#define MELVIX_VESA_H - -#include <stdint.h> -#include <system.h> - -/** - * The CPUs response to the 0x4F00 call - * Used to receive the supported video modes - */ -struct vbe_info { - char signature[4]; - u16 version; - u32 oem; - u32 capabilities; - u32 video_modes; - u16 video_memory; - u16 software_rev; - u32 vendor; - u32 product_name; - u32 product_rev; - char reserved[222]; - char oem_data[256]; -} __attribute__((packed)); - -/** - * The CPUs response to the 0x4F01 call - * Used to get information about a specific video mode code - */ -struct vbe_mode_info_all { - u16 attributes; - u8 window_a; - u8 window_b; - u16 granularity; - u16 window_size; - u16 segment_a; - u16 segment_b; - u32 win_func_ptr; - u16 pitch; - u16 width; - u16 height; - u8 w_char; - u8 y_char; - u8 planes; - u8 bpp; - u8 banks; - u8 memory_model; - u8 bank_size; - u8 image_pages; - u8 reserved0; - - u8 red_mask; - u8 red_position; - u8 green_mask; - u8 green_position; - u8 blue_mask; - u8 blue_position; - u8 reserved_mask; - u8 reserved_position; - u8 direct_color_attributes; - - u32 framebuffer; - u32 off_screen_mem_off; - u16 off_screen_mem_size; - u8 reserved1[206]; -} __attribute__((packed)); - -struct vbe_mode_info { - u16 attributes; - u16 pitch; - u16 width; - u16 height; - u8 bpp; - u8 memory_model; - u32 framebuffer; -} __attribute__((packed)); - -/** - * Set the video mode to a specified resolution using - * a video mode code - * @param mode The requested video mode code from 0x4F00 call - */ -void vbe_set_mode(u16 mode); - -/** - * Find the highest resolution using 0x4F00 and call - * vbe_set_mode using the video_modes far_ptr - */ -void set_optimal_resolution(); - -/** - * Sets one of the fonts inside the font header file - * @param height The desired font height - */ -void vesa_set_font(int height); - -/** - * Draws a single char - * @param ch The char - */ -void vesa_draw_char(char ch); - -/** - * Draw a char from keyboard - * @param ch The character - */ -void vesa_keyboard_char(char ch); - -/** - * Draw a string in VESA mode - * @param data The string - */ -void vesa_draw_string(const char *data); - -/** - * Draw a number in VESA mode - * @param n The number - */ -void vesa_draw_number(int n); - -/** - * Updates the cursor - * @param x The X position - * @param y The Y position - */ -void vesa_draw_cursor(int x, int y); - -/** - * Sets the color using a rgb number - * @param color The color - */ -void vesa_set_color(u32 color); - -/** - * An enum with vesa colors - * From https://github.com/joshdick/onedark.vim/ License: MIT - */ -enum vesa_color { - vesa_black = 0x1d1f24, - vesa_red = 0xE06C75, - vesa_green = 0x98C379, - vesa_yellow = 0xE5C07B, - vesa_blue = 0x61AFEF, - vesa_magenta = 0xC678DD, - vesa_cyan = 0x56B6C2, - vesa_white = 0xABB2BF, - vesa_dark_black = 0x3E4452, - vesa_dark_red = 0xBE5046, - vesa_dark_green = 0x98C379, - vesa_dark_yellow = 0xD19A66, - vesa_dark_blue = 0x61AFEF, - vesa_dark_magenta = 0xC678DD, - vesa_dark_cyan = 0x56B6C2, - vesa_dark_white = 0x5C6370, -}; - -/** - * The default text color - */ -const u32 default_text_color; - -/** - * The current text color (as normalized array) - */ -u32 terminal_color[3]; - -/** - * The current input - */ -char text[1024]; - -/** - * The current video mode - */ -struct vbe_mode_info *current_mode_info; - -/** - * The width of the current video mode - */ -int vbe_width; - -/** - * The height of the current video mode - */ -int vbe_height; - -/** - * The pitch (bytes per line) of the current video mode - */ -int vbe_pitch; - -/** - * The bytes per line (pixel width) of the current video mode - */ -int vbe_bpl; - -/** - * The framebuffer interface - */ -u8 *fb; - -u8 *cursor_buffer; - -#endif
\ No newline at end of file diff --git a/src/kernel/input/input.h b/src/kernel/input/input.h deleted file mode 100644 index d387172..0000000 --- a/src/kernel/input/input.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef MELVIX_INPUT_H -#define MELVIX_INPUT_H - -#include <stdint.h> - -/** - * Initialize the mouse IRQ handler - */ -void mouse_install(); - -/** - * Initialize the us keyboard layout, - * keyboard rate and IRQ handler - */ -void keyboard_install(); - -char wait_scancode(); - -#endif
\ No newline at end of file diff --git a/src/kernel/input/ps2/keyboard.c b/src/kernel/input/ps2/keyboard.c deleted file mode 100644 index 60ec3df..0000000 --- a/src/kernel/input/ps2/keyboard.c +++ /dev/null @@ -1,46 +0,0 @@ -#include <common.h> -#include <events/event.h> -#include <graphics/vesa.h> -#include <input/input.h> -#include <interrupts/interrupts.h> -#include <io/io.h> -#include <lib/string.h> -#include <memory/alloc.h> - -u8 scancode; - -void keyboard_handler(struct regs *r) -{ - scancode = inb(0x60); - struct keyboard_event *event = malloc(sizeof(struct keyboard_event)); - event->scancode = scancode; - event_trigger(MAP_KEYBOARD, (u8 *)event); -} - -void keyboard_acknowledge() -{ - while (inb(0x60) != 0xfa) - ; -} - -void keyboard_rate() -{ - outb(0x60, 0xF3); - keyboard_acknowledge(); - outb(0x60, 0x0); // Rate{00000} Delay{00} 0 -} - -char wait_scancode() -{ - scancode = 0; - while (scancode == 0) { - }; - return scancode; -} - -void keyboard_install() -{ - keyboard_rate(); - irq_install_handler(1, keyboard_handler); - info("Installed keyboard handler"); -}
\ No newline at end of file diff --git a/src/kernel/input/ps2/mouse.c b/src/kernel/input/ps2/mouse.c deleted file mode 100644 index b86ca99..0000000 --- a/src/kernel/input/ps2/mouse.c +++ /dev/null @@ -1,172 +0,0 @@ -#include <common.h> -#include <events/event.h> -#include <graphics/vesa.h> -#include <interrupts/interrupts.h> -#include <io/io.h> -#include <lib/stdio.h> -#include <memory/alloc.h> - -char mouse_cycle = 0; -char mouse_byte[3]; -int mouse_x = 0; -int mouse_y = 0; -int mouse_but_1 = 0; -int mouse_but_2 = 0; -int mouse_but_3 = 0; - -struct mouse_event *event; - -void mouse_handler(struct regs *r) -{ - switch (mouse_cycle) { - case 0: - mouse_byte[0] = inb(0x60); - if (((mouse_byte[0] >> 3) & 1) == 1) - mouse_cycle++; - else - mouse_cycle = 0; - break; - case 1: - mouse_byte[1] = inb(0x60); - mouse_cycle++; - break; - case 2: - mouse_byte[2] = inb(0x60); - mouse_x += mouse_byte[1]; - mouse_y -= mouse_byte[2]; - mouse_but_1 = mouse_byte[0] & 1; - mouse_but_2 = (mouse_byte[0] >> 1) & 1; - mouse_but_3 = (mouse_byte[0] >> 2) & 1; - mouse_cycle = 0; - - if (mouse_x < 0) - mouse_x = 0; - if (mouse_y < 0) - mouse_y = 0; - if (mouse_x > vbe_width - 1) - mouse_x = vbe_width - 1; - if (mouse_y > vbe_height - 1) - mouse_y = vbe_height - 1; - // vesa_draw_cursor(mouse_x, mouse_y); - - event->mouse_x = mouse_x; - event->mouse_y = mouse_y; - event_trigger(MAP_MOUSE, (u8 *)event); - break; - default: - break; - } -} - -void mouse_wait(u8 a_type) -{ - u32 time_out = 100000; - if (a_type == 0) { - while (time_out--) - if ((inb(0x64) & 1) == 1) - return; - return; - } else { - while (time_out--) - if ((inb(0x64) & 2) == 0) - return; - return; - } -} - -void mouse_write(u8 a_write) -{ - mouse_wait(1); - outb(0x64, 0xD4); - mouse_wait(1); - outb(0x60, a_write); -} - -char mouse_read() -{ - mouse_wait(0); - return inb(0x60); -} - -void mouse_install() -{ - event = malloc(sizeof(struct mouse_event)); - u8 status; - - // Enable auxiliary mouse device - mouse_wait(1); - outb(0x64, 0xA8); - - // Enable interrupts - mouse_wait(1); - outb(0x64, 0x20); - mouse_wait(0); - status = (u8)(inb(0x60) | 3); - mouse_wait(1); - outb(0x64, 0x60); - mouse_wait(1); - outb(0x60, status); - - // Enable mousewheel - mouse_write(0xF2); - mouse_read(); - mouse_read(); - mouse_write(0xF3); - mouse_read(); - mouse_write(200); - mouse_read(); - mouse_write(0xF3); - mouse_read(); - mouse_write(100); - mouse_read(); - mouse_write(0xF3); - mouse_read(); - mouse_write(80); - mouse_read(); - mouse_write(0xF2); - mouse_read(); - status = (u8)mouse_read(); - if (status == 3) - log("Scrollwheel support!"); - - // Activate 4th and 5th mouse buttons - mouse_write(0xF2); - mouse_read(); - mouse_read(); - mouse_write(0xF3); - mouse_read(); - mouse_write(200); - mouse_read(); - mouse_write(0xF3); - mouse_read(); - mouse_write(200); - mouse_read(); - mouse_write(0xF3); - mouse_read(); - mouse_write(80); - mouse_read(); - mouse_write(0xF2); - mouse_read(); - status = (u8)mouse_read(); - if (status == 4) - log("4th and 5th mouse button support!"); - - /* TODO: Fix mouse laggyness - mouse_write(0xE8); - mouse_read(); - mouse_write(0x03); - mouse_read(); - - mouse_write(0xF3); - mouse_read(); - mouse_write(200); - mouse_read(); */ - - // Enable mouse - mouse_write(0xF4); - mouse_read(); - - // Setup the mouse handler - irq_install_handler(12, mouse_handler); - info("Installed mouse handler"); -}
\ No newline at end of file diff --git a/src/kernel/interact.asm b/src/kernel/interact.asm deleted file mode 100644 index 00cdbe0..0000000 --- a/src/kernel/interact.asm +++ /dev/null @@ -1,194 +0,0 @@ -; Protected Mode BIOS Call Functionality v2.0 - by Napalm -; License: http://creativecommons.org/licenses/by-sa/2.0/uk/ -[bits 32] - -global int32, _int32 - -struc regs16_t - .di resw 1 - .si resw 1 - .bp resw 1 - .sp resw 1 - .bx resw 1 - .dx resw 1 - .cx resw 1 - .ax resw 1 - .gs resw 1 - .fs resw 1 - .es resw 1 - .ds resw 1 - .ef resw 1 -endstruc - -%define INT32_BASE 0x7C00 -%define REBASE(x) (((x) - reloc) + INT32_BASE) -%define GDTENTRY(x) ((x) << 3) -%define CODE32 GDTENTRY(1) ; 0x08 -%define DATA32 GDTENTRY(2) ; 0x10 -%define CODE16 GDTENTRY(3) ; 0x18 -%define DATA16 GDTENTRY(4) ; 0x20 -%define STACK16 (INT32_BASE - regs16_t_size) - -section .text - int32: use32 ; by Napalm - _int32: - ;cli ; disable interrupts - pusha ; save register state to 32bit stack - mov esi, reloc ; set source to code below - mov edi, INT32_BASE ; set destination to new base address - mov ecx, (int32_end - reloc) ; set copy size to our codes size - cld ; clear direction flag (so we copy forward) - rep movsb ; do the actual copy (relocate code to low 16bit space) - jmp INT32_BASE ; jump to new code location - reloc: use32 ; by Napalm - mov [REBASE(stack32_ptr)], esp ; save 32bit stack pointer - sidt [REBASE(idt32_ptr)] ; save 32bit idt pointer - sgdt [REBASE(gdt32_ptr)] ; save 32bit gdt pointer - lgdt [REBASE(gdt16_ptr)] ; load 16bit gdt pointer - lea esi, [esp+0x24] ; set position of intnum on 32bit stack - lodsd ; read intnum into eax - mov [REBASE(ib)], al ; set intrrupt immediate byte from our arguments - mov esi, [esi] ; read regs pointer in esi as source - mov edi, STACK16 ; set destination to 16bit stack - mov ecx, regs16_t_size ; set copy size to our struct size - mov esp, edi ; save destination to as 16bit stack offset - rep movsb ; do the actual copy (32bit stack to 16bit stack) - jmp word CODE16:REBASE(p_mode16) ; switch to 16bit selector (16bit protected mode) - p_mode16: use16 - mov ax, DATA16 ; get our 16bit data selector - mov ds, ax ; set ds to 16bit selector - mov es, ax ; set es to 16bit selector - mov fs, ax ; set fs to 16bit selector - mov gs, ax ; set gs to 16bit selector - mov ss, ax ; set ss to 16bit selector - mov eax, cr0 ; get cr0 so we can modify it - and al, ~0x01 ; mask off PE bit to turn off protected mode - mov cr0, eax ; set cr0 to result - jmp word 0x0000:REBASE(r_mode16) ; finally set cs:ip to enter real-mode - r_mode16: use16 - xor ax, ax ; set ax to zero - mov ds, ax ; set ds so we can access idt16 - mov ss, ax ; set ss so they the stack is valid - lidt [REBASE(idt16_ptr)] ; load 16bit idt - mov bx, 0x0870 ; master 8 and slave 112 - call resetpic ; set pic's the to real-mode settings - popa ; load general purpose registers from 16bit stack - pop gs ; load gs from 16bit stack - pop fs ; load fs from 16bit stack - pop es ; load es from 16bit stack - pop ds ; load ds from 16bit stack - ;sti ; enable interrupts - db 0xCD ; opcode of INT instruction with immediate byte - ib: db 0x00 - ;cli ; disable interrupts - xor sp, sp ; zero sp so we can reuse it - mov ss, sp ; set ss so the stack is valid - mov sp, INT32_BASE ; set correct stack position so we can copy back - pushf ; save eflags to 16bit stack - push ds ; save ds to 16bit stack - push es ; save es to 16bit stack - push fs ; save fs to 16bit stack - push gs ; save gs to 16bit stack - pusha ; save general purpose registers to 16bit stack - mov bx, 0x2028 ; master 32 and slave 40 - call resetpic ; restore the pic's to protected mode settings - mov eax, cr0 ; get cr0 so we can modify it - inc eax ; set PE bit to turn on protected mode - mov cr0, eax ; set cr0 to result - jmp dword CODE32:REBASE(p_mode32) ; switch to 32bit selector (32bit protected mode) - p_mode32: use32 - mov ax, DATA32 ; get our 32bit data selector - mov ds, ax ; reset ds selector - mov es, ax ; reset es selector - mov fs, ax ; reset fs selector - mov gs, ax ; reset gs selector - mov ss, ax ; reset ss selector - lgdt [REBASE(gdt32_ptr)] ; restore 32bit gdt pointer - lidt [REBASE(idt32_ptr)] ; restore 32bit idt pointer - mov esp, [REBASE(stack32_ptr)] ; restore 32bit stack pointer - mov esi, STACK16 ; set copy source to 16bit stack - lea edi, [esp+0x28] ; set position of regs pointer on 32bit stack - mov edi, [edi] ; use regs pointer in edi as copy destination - mov ecx, regs16_t_size ; set copy size to our struct size - cld ; clear direction flag (so we copy forward) - rep movsb ; do the actual copy (16bit stack to 32bit stack) - popa ; restore registers - ;sti ; enable interrupts - ret ; return to caller - - resetpic: ; reset's 8259 master and slave pic vectors - push ax ; expects bh = master vector, bl = slave vector - mov al, 0x11 ; 0x11 = ICW1_INIT | ICW1_ICW4 - out 0x20, al ; send ICW1 to master pic - out 0xA0, al ; send ICW1 to slave pic - mov al, bh ; get master pic vector param - out 0x21, al ; send ICW2 aka vector to master pic - mov al, bl ; get slave pic vector param - out 0xA1, al ; send ICW2 aka vector to slave pic - mov al, 0x04 ; 0x04 = set slave to IRQ2 - out 0x21, al ; send ICW3 to master pic - shr al, 1 ; 0x02 = tell slave its on IRQ2 of master - out 0xA1, al ; send ICW3 to slave pic - shr al, 1 ; 0x01 = ICW4_8086 - out 0x21, al ; send ICW4 to master pic - out 0xA1, al ; send ICW4 to slave pic - pop ax ; restore ax from stack - ret ; return to caller - - stack32_ptr: ; address in 32bit stack after we - dd 0x00000000 ; save all general purpose registers - - idt32_ptr: ; IDT table pointer for 32bit access - dw 0x0000 ; table limit (size) - dd 0x00000000 ; table base address - - gdt32_ptr: ; GDT table pointer for 32bit access - dw 0x0000 ; table limit (size) - dd 0x00000000 ; table base address - - idt16_ptr: ; IDT table pointer for 16bit access - dw 0x03FF ; table limit (size) - dd 0x00000000 ; table base address - - gdt16_base: ; GDT descriptor table - .null: ; 0x00 - null segment descriptor - dd 0x00000000 ; must be left zero'd - dd 0x00000000 ; must be left zero'd - - .code32: ; 0x01 - 32bit code segment descriptor 0xFFFFFFFF - dw 0xFFFF ; limit 0:15 - dw 0x0000 ; base 0:15 - db 0x00 ; base 16:23 - db 0x9A ; present, iopl/0, code, execute/read - db 0xCF ; 4Kbyte granularity, 32bit selector; limit 16:19 - db 0x00 ; base 24:31 - - .data32: ; 0x02 - 32bit data segment descriptor 0xFFFFFFFF - dw 0xFFFF ; limit 0:15 - dw 0x0000 ; base 0:15 - db 0x00 ; base 16:23 - db 0x92 ; present, iopl/0, data, read/write - db 0xCF ; 4Kbyte granularity, 32bit selector; limit 16:19 - db 0x00 ; base 24:31 - - .code16: ; 0x03 - 16bit code segment descriptor 0x000FFFFF - dw 0xFFFF ; limit 0:15 - dw 0x0000 ; base 0:15 - db 0x00 ; base 16:23 - db 0x9A ; present, iopl/0, code, execute/read - db 0x0F ; 1Byte granularity, 16bit selector; limit 16:19 - db 0x00 ; base 24:31 - - .data16: ; 0x04 - 16bit data segment descriptor 0x000FFFFF - dw 0xFFFF ; limit 0:15 - dw 0x0000 ; base 0:15 - db 0x00 ; base 16:23 - db 0x92 ; present, iopl/0, data, read/write - db 0x0F ; 1Byte granularity, 16bit selector; limit 16:19 - db 0x00 ; base 24:31 - - gdt16_ptr: ; GDT table pointer for 16bit access - dw gdt16_ptr - gdt16_base - 1 ; table limit (size) - dd gdt16_base ; table base address - - int32_end: ; end marker (so we can copy the code)
\ No newline at end of file diff --git a/src/kernel/interrupts/idt.asm b/src/kernel/interrupts/idt.asm deleted file mode 100644 index cec0e95..0000000 --- a/src/kernel/interrupts/idt.asm +++ /dev/null @@ -1,6 +0,0 @@ -; IDT loader -global idt_load -extern idtp -idt_load: - lidt [idtp] - ret
\ No newline at end of file diff --git a/src/kernel/interrupts/idt.c b/src/kernel/interrupts/idt.c deleted file mode 100644 index a01f1c1..0000000 --- a/src/kernel/interrupts/idt.c +++ /dev/null @@ -1,48 +0,0 @@ -#include <lib/lib.h> -#include <system.h> - -struct idt_entry { - u16 base_low; - u16 sel; // Kernel segment - u8 always0; // Always 0 - u8 flags; - u16 base_high; -} __attribute__((packed)); - -struct idt_ptr { - u16 limit; - void *base; -} __attribute__((packed)); - -// Initialize IDT with 256 entries -struct idt_entry idt[256]; -struct idt_ptr idtp; - -// Defined in idt.asm -extern void idt_load(); - -void idt_set_gate(u8 num, unsigned long base, u16 sel, u8 flags) -{ - // Specify the interrupt routine's base address - idt[num].base_low = (u16)(base & 0xFFFF); - idt[num].base_high = (u16)((base >> 16) & 0xFFFF); - - // Set selector/segment of IDT entry - idt[num].sel = sel; - idt[num].always0 = 0; - idt[num].flags = (u8)(flags | 0x60); -} - -// Install IDT -void idt_install() -{ - // Set IDT pointer and limit - idtp.limit = (sizeof(struct idt_entry) * 256) - 1; - idtp.base = &idt; - - // Clear IDT by setting memory cells to 0 - memset(&idt, 0, sizeof(struct idt_entry) * 256); - - idt_load(); - info("Installed Interrupt Descriptor Table"); -}
\ No newline at end of file diff --git a/src/kernel/interrupts/interrupts.h b/src/kernel/interrupts/interrupts.h deleted file mode 100644 index 12f8f0a..0000000 --- a/src/kernel/interrupts/interrupts.h +++ /dev/null @@ -1,156 +0,0 @@ -#ifndef MELVIX_INTERRUPTS_H -#define MELVIX_INTERRUPTS_H - -#include <stddef.h> -#include <stdint.h> - -/** - * Initialize the Interrupt Descriptor Table with 256 entries - */ -void idt_install(); - -/** - * Add new gate (Interrupt Service Routine) to the Interrupt Descriptor Table - * @param num The index of the routine in the IDT - * @param base The base address of the ISR - * @param sel The kernel code segment (0x08) - * @param flags The IDT access byte entry (P DPL 01110) - */ -void idt_set_gate(u8 num, unsigned long base, u16 sel, u8 flags); - -/** - * Registers that get passed into an IRQ handler - */ -struct regs { - u32 gs, fs, es, ds; - u32 edi, esi, ebp, esp, ebx, edx, ecx, eax; - u32 int_no, err_code; - u32 eip, cs, eflags, useresp, ss; -}; - -/** - * Install 32 exception ISRs into the IDT - */ -void isrs_install(); - -/** - * Add a new Interrupt Request Handler - * @param irq The index of the IRQ routine - * @param handler The interrupt handler function - */ -typedef void (*irq_handler_t)(struct regs *); - -void isr_install_handler(u32 isr, irq_handler_t handler); - -/** - * Uninstall a handler by index - * @param irq The index of the IRQ routine that should be removed - */ -void isr_uninstall_handler(u32 isr); - -/** - * Initialize the Interrupt Requests by mapping the ISRs to the correct - * entries in the IDT (install the exception handlers) - */ -void irq_install(); - -/** - * Add a new Interrupt Request Handler - * @param irq The index of the IRQ routine - * @param handler The interrupt handler function - */ -void irq_install_handler(int irq, void (*handler)(struct regs *r)); - -/** - * Uninstall a handler by index - * @param irq The index of the IRQ routine that should be removed - */ -void irq_uninstall_handler(int irq); - -/** - * Execute the handler of the IRQ - * @param r The ISR that should be handled - */ -void irq_handler(struct regs *r); - -/** - * Check if an IRQ is installed - * @param irq The index of the IRQ routine that should be checked - * @return 1 if installed, 0 if not - */ -int irq_is_installed(int irq); - -/** - * Logs fault messages and panics - * @param r The registers - */ -void fault_handler(struct regs *r); - -// Defined in isr.asm -extern void isr0(); - -extern void isr1(); - -extern void isr2(); - -extern void isr3(); - -extern void isr4(); - -extern void isr5(); - -extern void isr6(); - -extern void isr7(); - -extern void isr8(); - -extern void isr9(); - -extern void isr10(); - -extern void isr11(); - -extern void isr12(); - -extern void isr13(); - -extern void isr14(); - -extern void isr15(); - -extern void isr16(); - -extern void isr17(); - -extern void isr18(); - -extern void isr19(); - -extern void isr20(); - -extern void isr21(); - -extern void isr22(); - -extern void isr23(); - -extern void isr24(); - -extern void isr25(); - -extern void isr26(); - -extern void isr27(); - -extern void isr28(); - -extern void isr29(); - -extern void isr30(); - -extern void isr31(); - -extern void isr128(); - -#endif
\ No newline at end of file diff --git a/src/kernel/interrupts/irq.asm b/src/kernel/interrupts/irq.asm deleted file mode 100644 index da7323e..0000000 --- a/src/kernel/interrupts/irq.asm +++ /dev/null @@ -1,55 +0,0 @@ -%macro IRQ 2 - global irq%1 - irq%1: - cli - push byte 0 - push byte %2 - jmp irq_common_stub -%endmacro - -IRQ 0, 32 -IRQ 1, 33 -IRQ 2, 34 -IRQ 3, 35 -IRQ 4, 36 -IRQ 5, 37 -IRQ 6, 38 -IRQ 7, 39 -IRQ 8, 40 -IRQ 9, 41 -IRQ 10, 42 -IRQ 11, 43 -IRQ 12, 44 -IRQ 13, 45 -IRQ 14, 46 -IRQ 15, 47 - -extern irq_handler -irq_common_stub: - pusha - - push ds - push es - push fs - push gs - - mov ax, 0x10 - mov ds, ax - mov es, ax - mov fs, ax - mov gs, ax - cld - - push esp - call irq_handler - add esp, 4 - - pop gs - pop fs - pop es - pop ds - popa - - add esp, 8 - sti - iret
\ No newline at end of file diff --git a/src/kernel/interrupts/irq.c b/src/kernel/interrupts/irq.c deleted file mode 100644 index 9fd0c31..0000000 --- a/src/kernel/interrupts/irq.c +++ /dev/null @@ -1,97 +0,0 @@ -#include <interrupts/interrupts.h> -#include <io/io.h> -#include <system.h> - -extern void irq0(); -extern void irq1(); -extern void irq2(); -extern void irq3(); -extern void irq4(); -extern void irq5(); -extern void irq6(); -extern void irq7(); -extern void irq8(); -extern void irq9(); -extern void irq10(); -extern void irq11(); -extern void irq12(); -extern void irq13(); -extern void irq14(); -extern void irq15(); -extern void irq128(); - -// Array to handle custom IRQ handlers -void *irq_routines[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - -// Install custom IRQ handler -void irq_install_handler(int irq, void (*handler)(struct regs *r)) -{ - irq_routines[irq] = handler; -} - -// Removes the custom IRQ handler -void irq_uninstall_handler(int irq) -{ - irq_routines[irq] = 0; -} - -int irq_is_installed(int irq) -{ - return irq_routines[irq] != 0; -} - -// Remap IRQs for protected mode compatibility via the PIC -void irq_remap(void) -{ - outb(0x20, 0x11); - outb(0xA0, 0x11); - outb(0x21, 0x20); - outb(0xA1, 0x28); - outb(0x21, 0x04); - outb(0xA1, 0x02); - outb(0x21, 0x01); - outb(0xA1, 0x01); - outb(0x21, 0x0); - outb(0xA1, 0x0); -} - -// Map ISRs to the correct entries in the IDT -void irq_install() -{ - irq_remap(); - idt_set_gate(32, (unsigned)irq0, 0x08, 0x8E); - idt_set_gate(33, (unsigned)irq1, 0x08, 0x8E); - idt_set_gate(34, (unsigned)irq2, 0x08, 0x8E); - idt_set_gate(35, (unsigned)irq3, 0x08, 0x8E); - idt_set_gate(36, (unsigned)irq4, 0x08, 0x8E); - idt_set_gate(37, (unsigned)irq5, 0x08, 0x8E); - idt_set_gate(38, (unsigned)irq6, 0x08, 0x8E); - idt_set_gate(39, (unsigned)irq7, 0x08, 0x8E); - idt_set_gate(40, (unsigned)irq8, 0x08, 0x8E); - idt_set_gate(41, (unsigned)irq9, 0x08, 0x8E); - idt_set_gate(42, (unsigned)irq10, 0x08, 0x8E); - idt_set_gate(43, (unsigned)irq11, 0x08, 0x8E); - idt_set_gate(44, (unsigned)irq12, 0x08, 0x8E); - idt_set_gate(45, (unsigned)irq13, 0x08, 0x8E); - idt_set_gate(46, (unsigned)irq14, 0x08, 0x8E); - idt_set_gate(47, (unsigned)irq15, 0x08, 0x8E); - info("Installed Interrupt Requests"); -} - -// Handle IRQ ISRs -void irq_handler(struct regs *r) -{ - void (*handler)(struct regs * r); - - // Execute custom handler if exists - handler = irq_routines[r->int_no - 32]; - if (handler) - handler(r); - - // Send end of interrupt to second (slave) IRQ controller - if (r->int_no >= 40) - outb(0xA0, 0x20); - - // Send end of interrupt to master interrupt controller - outb(0x20, 0x20); -}
\ No newline at end of file diff --git a/src/kernel/interrupts/isr.asm b/src/kernel/interrupts/isr.asm deleted file mode 100644 index 7bfa876..0000000 --- a/src/kernel/interrupts/isr.asm +++ /dev/null @@ -1,80 +0,0 @@ -%macro ISR_NOERRCODE 1 - global isr%1 - isr%1: - cli - push byte 0 - push %1 - jmp isr_common_stub -%endmacro - -%macro ISR_ERRCODE 1 - global isr%1 - isr%1: - cli - push byte %1 - jmp isr_common_stub -%endmacro - -ISR_NOERRCODE 0 -ISR_NOERRCODE 1 -ISR_NOERRCODE 2 -ISR_NOERRCODE 3 -ISR_NOERRCODE 4 -ISR_NOERRCODE 5 -ISR_NOERRCODE 6 -ISR_NOERRCODE 7 -ISR_ERRCODE 8 -ISR_NOERRCODE 9 -ISR_ERRCODE 10 -ISR_ERRCODE 11 -ISR_ERRCODE 12 -ISR_ERRCODE 13 -ISR_ERRCODE 14 -ISR_NOERRCODE 15 -ISR_NOERRCODE 16 -ISR_NOERRCODE 17 -ISR_NOERRCODE 18 -ISR_NOERRCODE 19 -ISR_NOERRCODE 20 -ISR_NOERRCODE 21 -ISR_NOERRCODE 22 -ISR_NOERRCODE 23 -ISR_NOERRCODE 24 -ISR_NOERRCODE 25 -ISR_NOERRCODE 26 -ISR_NOERRCODE 27 -ISR_NOERRCODE 28 -ISR_NOERRCODE 29 -ISR_NOERRCODE 30 -ISR_NOERRCODE 31 -ISR_NOERRCODE 128 - -extern fault_handler -isr_common_stub: - pusha - - push ds - push es - push fs - push gs - - mov ax, 0x10 - mov ds, ax - mov es, ax - mov fs, ax - mov gs, ax - cld - - push esp - call fault_handler - add esp, 4 - - pop gs - pop fs - pop es - pop ds - popa - - add esp, 8 - sti - iret
\ No newline at end of file diff --git a/src/kernel/interrupts/isr.c b/src/kernel/interrupts/isr.c deleted file mode 100644 index ae72a0f..0000000 --- a/src/kernel/interrupts/isr.c +++ /dev/null @@ -1,139 +0,0 @@ -#include <graphics/vesa.h> -#include <interrupts/interrupts.h> -#include <io/io.h> -#include <lib/lib.h> -#include <lib/stdio.h> -#include <lib/string.h> -#include <stdint.h> -#include <system.h> -#include <tasks/process.h> - -// Install ISRs in IDT -void isrs_install() -{ - idt_set_gate(0, (unsigned)isr0, 0x08, 0x8E); - idt_set_gate(1, (unsigned)isr1, 0x08, 0x8E); - idt_set_gate(2, (unsigned)isr2, 0x08, 0x8E); - idt_set_gate(3, (unsigned)isr3, 0x08, 0x8E); - idt_set_gate(4, (unsigned)isr4, 0x08, 0x8E); - idt_set_gate(5, (unsigned)isr5, 0x08, 0x8E); - idt_set_gate(6, (unsigned)isr6, 0x08, 0x8E); - idt_set_gate(7, (unsigned)isr7, 0x08, 0x8E); - - idt_set_gate(8, (unsigned)isr8, 0x08, 0x8E); - idt_set_gate(9, (unsigned)isr9, 0x08, 0x8E); - idt_set_gate(10, (unsigned)isr10, 0x08, 0x8E); - idt_set_gate(11, (unsigned)isr11, 0x08, 0x8E); - idt_set_gate(12, (unsigned)isr12, 0x08, 0x8E); - idt_set_gate(13, (unsigned)isr13, 0x08, 0x8E); - idt_set_gate(14, (unsigned)isr14, 0x08, 0x8E); - idt_set_gate(15, (unsigned)isr15, 0x08, 0x8E); - - idt_set_gate(16, (unsigned)isr16, 0x08, 0x8E); - idt_set_gate(17, (unsigned)isr17, 0x08, 0x8E); - idt_set_gate(18, (unsigned)isr18, 0x08, 0x8E); - idt_set_gate(19, (unsigned)isr19, 0x08, 0x8E); - idt_set_gate(20, (unsigned)isr20, 0x08, 0x8E); - idt_set_gate(21, (unsigned)isr21, 0x08, 0x8E); - idt_set_gate(22, (unsigned)isr22, 0x08, 0x8E); - idt_set_gate(23, (unsigned)isr23, 0x08, 0x8E); - - idt_set_gate(24, (unsigned)isr24, 0x08, 0x8E); - idt_set_gate(25, (unsigned)isr25, 0x08, 0x8E); - idt_set_gate(26, (unsigned)isr26, 0x08, 0x8E); - idt_set_gate(27, (unsigned)isr27, 0x08, 0x8E); - idt_set_gate(28, (unsigned)isr28, 0x08, 0x8E); - idt_set_gate(29, (unsigned)isr29, 0x08, 0x8E); - idt_set_gate(30, (unsigned)isr30, 0x08, 0x8E); - idt_set_gate(31, (unsigned)isr31, 0x08, 0x8E); - - idt_set_gate(0x80, (unsigned)isr128, 0x08, 0x8E); - - info("Installed Interrupt Service Routines"); -} - -irq_handler_t isr_routines[256] = { 0 }; - -// Install custom IRQ handler -void isr_install_handler(u32 isr, irq_handler_t handler) -{ - isr_routines[isr] = handler; -} - -// Remove the custom IRQ handler -void isr_uninstall_handler(u32 isr) -{ - isr_routines[isr] = 0; -} - -// Error exception messages -const char *exception_messages[32] = { "Division By Zero", - "Debug", - "Non Maskable Interrupt", - "Breakpoint", - "Into Detected Overflow", - "Out of Bounds", - "Invalid Opcode", - "No Coprocessor", - - "Double Fault", - "Coprocessor Segment Overrun", - "Bad TSS", - "Segment Not Present", - "Stack Fault", - "General Protection Fault", - "Page Fault", - "Unknown Interrupt", - - "Coprocessor Fault", - "Alignment Check", - "Machine Check", - "Reserved", - "Reserved", - "Reserved", - "Reserved", - "Reserved", - - "Reserved", - "Reserved", - "Reserved", - "Reserved", - "Reserved", - "Reserved", - "Reserved", - "Reserved" }; - -// Master exception/interrupt/fault handler - called by asm -void fault_handler(struct regs *r) -{ - irq_handler_t handler = isr_routines[r->int_no]; - if (handler) { - handler(r); - } else { - u32 faulting_address; - asm("mov %%cr2, %0" : "=r"(faulting_address)); - - log("\n[DEBUG]\nEIP: 0x%x\nEAX: 0x%x\nEBX: 0x%x\nECX: 0x%x\nEDX: 0x%x\nESP: 0x%x\nFault addr: 0x%x\nErr flag: 0x%x\nErr code: 0x%x\nINT code: 0x%x\nINT msg: %s", - r->eip, r->eax, r->ebx, r->ecx, r->edx, r->esp, faulting_address, r->eflags, - r->err_code, r->int_no, exception_messages[r->int_no]); - - char message[128]; - if (r->int_no <= 32) { - strcpy(message, (char *)exception_messages[r->int_no]); - strcat(message, " Exception"); - } else { - strcpy(message, "Unknown Exception"); - } - - if (current_proc != NULL) { - warn("%s: Suspending process %s with ID %d", message, current_proc->name, - current_proc->pid); - memcpy(¤t_proc->regs, r, sizeof(struct regs)); - process_suspend(current_proc->pid); - process_force_switch(); - } else { - debug(RED "%s before multitasking started!" RES, message); - halt_loop(); - } - } -}
\ No newline at end of file diff --git a/src/kernel/io/io.c b/src/kernel/io/io.c deleted file mode 100644 index 1ef82b6..0000000 --- a/src/kernel/io/io.c +++ /dev/null @@ -1,128 +0,0 @@ -#include <stdint.h> -#include <system.h> - -u8 inb(u16 port) -{ - u8 value; - asm volatile("inb %1, %0" : "=a"(value) : "Nd"(port)); - return value; -} - -u16 inw(u16 port) -{ - u16 value; - asm volatile("inw %1, %0" : "=a"(value) : "Nd"(port)); - return value; -} - -u32 inl(u16 port) -{ - u32 value; - asm volatile("inl %1, %0" : "=a"(value) : "Nd"(port)); - return value; -} - -u32 cpu_flags() -{ - u32 flags; - asm volatile("pushf\n" - "pop %0\n" - : "=rm"(flags)::"memory"); - return flags; -} - -int interrupts_enabled() -{ - return (cpu_flags() & 0x200) == 0x200; -} - -void interrupts_print() -{ - if (interrupts_enabled()) - log(GRN "Interrupts are enabled!" RES); - else - log(RED "Interrupts are disabled!" RES); -} - -void cli() -{ - asm volatile("cli"); -} - -void sti() -{ - asm volatile("sti"); -} - -void hlt() -{ - asm volatile("hlt"); -} - -void outb(u16 port, u8 data) -{ - asm volatile("outb %0, %1" ::"a"(data), "Nd"(port)); -} - -void outw(u16 port, u16 data) -{ - asm volatile("outw %0, %1" ::"a"(data), "Nd"(port)); -} - -void outl(u16 port, u32 data) -{ - asm volatile("outl %0, %1" ::"a"(data), "Nd"(port)); -} - -u32 cr3_get() -{ - u32 cr3; - asm volatile("movl %%cr3, %%eax" : "=a"(cr3)); - return cr3; -} - -void cr3_set(u32 cr3) -{ - asm volatile("movl %%eax, %%cr3" ::"a"(cr3)); -} - -u32 cr0_get() -{ - u32 cr0; - asm volatile("movl %%cr0, %%eax" : "=a"(cr0)); - return cr0; -} - -void cr0_set(u32 cr0) -{ - asm volatile("movl %%eax, %%cr0" ::"a"(cr0)); -} - -void invlpg(u32 addr) -{ - asm volatile("invlpg (%0)" ::"r"(addr) : "memory"); -} - -void serial_install() -{ - outb(0x3f8 + 1, 0x00); - outb(0x3f8 + 3, 0x80); - outb(0x3f8 + 0, 0x03); - outb(0x3f8 + 1, 0x00); - outb(0x3f8 + 3, 0x03); - outb(0x3f8 + 2, 0xC7); - outb(0x3f8 + 4, 0x0B); - info("Installed serial connection"); -} - -int is_transmit_empty() -{ - return inb(0x3f8 + 5) & 0x20; -} - -void serial_put(char ch) -{ - while (is_transmit_empty() == 0) - ; - outb(0x3f8, (u8)ch); -}
\ No newline at end of file diff --git a/src/kernel/io/io.h b/src/kernel/io/io.h deleted file mode 100644 index 9274dfb..0000000 --- a/src/kernel/io/io.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef MELVIX_IO_H -#define MELVIX_IO_H - -#include <stdint.h> - -/** - * Receive from specified hardware port - * @param port The hardware port - * @return The hardware response - */ -u8 inb(u16 port); - -/** - * Receive from specified hardware port - * @param port The hardware port - * @return The hardware response - */ -u16 inw(u16 port); - -/** - * Receive from specified hardware port - * @param port The hardware port - * @return The hardware response - */ -u32 inl(u16 port); - -int interrupts_enabled(); -void interrupts_print(); -void cli(); -void sti(); -void hlt(); - -/** - * Send data to the specified hardware port - * @param port The hardware port - * @param data The data that should be sent - */ -void outb(u16 port, u8 data); - -/** - * Send data to the specified hardware port - * @param port The hardware port - * @param data The data that should be sent - */ -void outw(u16 port, u16 data); - -/** - * Send data to the specified hardware port - * @param port The hardware port - * @param data The data that should be sent - */ -void outl(u16 port, u32 data); - -u32 cr3_get(); -void cr3_set(u32 cr3); -u32 cr0_get(); -void cr0_set(u32 cr0); -void invlpg(u32 addr); - -/** - * Initialize the serial conenction - */ -void serial_install(); - -/** - * Write a single char to the serial port (QEMU logging) - * @param ch The char - */ -void serial_put(char ch); - -// Spinlock -static inline void spinlock(int *ptr) -{ - int prev; - do - asm volatile("lock xchgl %0,%1" : "=a"(prev) : "m"(*ptr), "a"(1)); - while (prev); -} - -#endif
\ No newline at end of file diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c deleted file mode 100644 index 48525d9..0000000 --- a/src/kernel/kernel.c +++ /dev/null @@ -1,74 +0,0 @@ -#include <acpi/acpi.h> -#include <cmos/rtc.h> -#include <fs/ata.h> -#include <fs/elf.h> -#include <fs/ext2.h> -#include <fs/load.h> -#include <gdt/gdt.h> -#include <graphics/vesa.h> -#include <input/input.h> -#include <interrupts/interrupts.h> -#include <io/io.h> -#include <lib/lib.h> -#include <lib/stdio.h> -#include <lib/stdlib.h> -#include <memory/alloc.h> -#include <memory/paging.h> -#include <multiboot.h> -#include <net/network.h> -#include <pci/pci.h> -#include <syscall/syscall.h> -#include <timer/timer.h> - -u32 stack_hold; - -void kernel_main(u32 magic, u32 addr, u32 esp) -{ - multiboot_address = addr; - stack_hold = esp; - - if (magic != MULTIBOOT_BOOTLOADER_MAGIC) { - warn("Invalid boot magic!"); - halt_loop(); - } - - if (multiboot_address & 7) { - warn("Unaligned mbi!"); - halt_loop(); - } - - info("Installing basic features of Melvix..."); - - // Install features - bss_clean(); - gdt_install(); - serial_install(); - idt_install(); - isrs_install(); - irq_install(); - - paging_install(); - multiboot_parse(); - - // Install drivers - timer_install(); - mouse_install(); - keyboard_install(); - pci_remap(); - network_install(); - - memory_print(); - rtc_print(); - - ata_init(); - ext2_init_fs(); - - load_binaries(); - set_optimal_resolution(); - log("Content of /etc/test: %s", read_file("/etc/test")); - - syscalls_install(); - kexec("/bin/init"); - - // asm ("div %0" :: "r"(0)); // Exception testing x/0 -}
\ No newline at end of file diff --git a/src/kernel/lib/data.h b/src/kernel/lib/data.h deleted file mode 100644 index 709ca6f..0000000 --- a/src/kernel/lib/data.h +++ /dev/null @@ -1,94 +0,0 @@ -#ifndef MELVIX_DATA_H -#define MELVIX_DATA_H - -#include <stdint.h> - -// LIST - -struct list_node { - struct list_node *prev; - struct list_node *next; - void *val; -}; - -struct list { - struct list_node *head; - struct list_node *tail; - u32 size; -}; - -#define foreach(t, list) for (struct list_node *t = list->head; t != NULL; t = t->next) - -struct list *list_create(); - -u32 list_size(struct list *list); - -struct list_node *list_insert_front(struct list *list, void *val); - -void list_insert_back(struct list *list, void *val); - -void *list_remove_node(struct list *list, struct list_node *node); - -void *list_remove_front(struct list *list); - -void *list_remove_back(struct list *list); - -void list_push(struct list *list, void *val); - -struct list_node *list_pop(struct list *list); - -void list_enqueue(struct list *list, void *val); - -struct list_node *list_dequeue(struct list *list); - -void *list_peek_front(struct list *list); - -void *list_peek_back(struct list *list); - -void list_destroy(struct list *list); - -void listnode_destroy(struct list_node *node); - -int list_contain(struct list *list, void *val); - -struct list_node *list_get_node_by_index(struct list *list, int index); - -void *list_remove_by_index(struct list *list, int index); - -struct list *str_split(const char *str, const char *delim, u32 *numtokens); -char *list_to_str(struct list *list, const char *delim); - -// Tree - -struct tree_node { - struct list *children; - void *value; -}; - -struct tree { - struct tree_node *root; -}; - -struct tree *tree_create(); - -struct tree_node *treenode_create(void *value); - -struct tree_node *tree_insert(struct tree *tree, struct tree_node *subroot, void *value); - -struct tree_node *tree_find_parent(struct tree *tree, struct tree_node *remove_node, - int *child_index); - -struct tree_node *tree_find_parent_recur(struct tree *tree, struct tree_node *remove_node, - struct tree_node *subroot, int *child_index); - -void tree_remove(struct tree *tree, struct tree_node *remove_node); - -void tree2list_recur(struct tree_node *subroot, struct list *list); - -void tree2list(struct tree *tree, struct list *list); - -void tree2array(struct tree *tree, void **array, int *size); - -void tree2array_recur(struct tree_node *subroot, void **array, int *size); - -#endif
\ No newline at end of file diff --git a/src/kernel/lib/data/list.c b/src/kernel/lib/data/list.c deleted file mode 100644 index 31e6631..0000000 --- a/src/kernel/lib/data/list.c +++ /dev/null @@ -1,223 +0,0 @@ -#include <lib/data.h> -#include <lib/lib.h> -#include <lib/stdlib.h> -#include <memory/alloc.h> -#include <stddef.h> -#include <stdint.h> - -struct list *list_create() -{ - struct list *list = calloc(sizeof(struct list), 1); - return list; -} - -u32 list_size(struct list *list) -{ - if (!list) - return 0; - return list->size; -} - -void *list_remove_node(struct list *list, struct list_node *node) -{ - void *val = node->val; - if (list->head == node) - return list_remove_front(list); - else if (list->tail == node) - return list_remove_back(list); - else { - node->next->prev = node->prev; - node->prev->next = node->next; - list->size--; - free(node); - } - return val; -} -struct list_node *list_insert_front(struct list *list, void *val) -{ - struct list_node *t = calloc(sizeof(struct list_node), 1); - list->head->prev = t; - t->next = list->head; - t->val = val; - - if (!list->head) - list->tail = t; - - list->head = t; - list->size++; - return t; -} - -void list_insert_back(struct list *list, void *val) -{ - struct list_node *t = calloc(sizeof(struct list_node), 1); - t->prev = list->tail; - if (list->tail) - list->tail->next = t; - t->val = val; - - if (!list->head) - list->head = t; - - list->tail = t; - list->size++; -} - -void *list_remove_front(struct list *list) -{ - if (!list->head) - return NULL; - struct list_node *t = list->head; - void *val = t->val; - list->head = t->next; - if (list->head) - list->head->prev = NULL; - free(t); - list->size--; - return val; -} - -void *list_remove_back(struct list *list) -{ - if (!list->head) - return NULL; - struct list_node *t = list->tail; - void *val = t->val; - list->tail = t->prev; - if (list->tail) - list->tail->next = NULL; - free(t); - list->size--; - return val; -} - -void list_push(struct list *list, void *val) -{ - list_insert_back(list, val); -} - -struct list_node *list_pop(struct list *list) -{ - if (!list->head) - return NULL; - struct list_node *t = list->tail; - list->tail = t->prev; - if (list->tail) - list->tail->next = NULL; - list->size--; - return t; -} - -void list_enqueue(struct list *list, void *val) -{ - list_insert_front(list, val); -} - -struct list_node *list_dequeue(struct list *list) -{ - return list_pop(list); -} - -void *list_peek_front(struct list *list) -{ - if (!list->head) - return NULL; - return list->head->val; -} - -void *list_peek_back(struct list *list) -{ - if (!list->tail) - return NULL; - return list->tail->val; -} - -int list_contain(struct list *list, void *val) -{ - int idx = 0; - foreach(listnode, list) - { - if (listnode->val == val) - return idx; - idx++; - } - return -1; -} - -struct list_node *list_get_node_by_index(struct list *list, int index) -{ - if (index < 0 || index >= list_size(list)) - return NULL; - int curr = 0; - foreach(listnode, list) - { - if (index == curr) - return listnode; - curr++; - } - return NULL; -} - -void *list_remove_by_index(struct list *list, int index) -{ - struct list_node *node = list_get_node_by_index(list, index); - return list_remove_node(list, node); -} - -void list_destroy(struct list *list) -{ - struct list_node *node = list->head; - while (node != NULL) { - struct list_node *save = node; - node = node->next; - free(save); - } - free(list); -} - -void listnode_destroy(struct list_node *node) -{ - free(node); -} - -// Conversion - -struct list *str_split(const char *str, const char *delim, u32 *numtokens) -{ - struct list *ret_list = list_create(); - char *s = strdup(str); - char *token, *rest = s; - while ((token = strsep(&rest, delim)) != NULL) { - if (!strcmp(token, ".")) - continue; - if (!strcmp(token, "..")) { - if (list_size(ret_list) > 0) - list_pop(ret_list); - continue; - } - list_push(ret_list, strdup(token)); - if (numtokens) - (*numtokens)++; - } - free(s); - return ret_list; -} - -char *list_to_str(struct list *list, const char *delim) -{ - char *ret = malloc(256); - memset(ret, 0, 256); - int len = 0, ret_len = 256; - while (list_size(list) > 0) { - char *temp = list_pop(list)->val; - int len_temp = strlen(temp); - if (len + len_temp + 1 + 1 > ret_len) { - ret_len = ret_len * 2; - ret = realloc(ret, ret_len); - len = len + len_temp + 1; - } - strcat(ret, delim); - strcat(ret, temp); - } - return ret; -}
\ No newline at end of file diff --git a/src/kernel/lib/data/tree.c b/src/kernel/lib/data/tree.c deleted file mode 100644 index 9758ec1..0000000 --- a/src/kernel/lib/data/tree.c +++ /dev/null @@ -1,104 +0,0 @@ -#include <lib/data.h> -#include <memory/alloc.h> -#include <stddef.h> -#include <stdint.h> - -struct tree *tree_create() -{ - return (struct tree *)calloc(sizeof(struct tree), 1); -} - -struct tree_node *treenode_create(void *value) -{ - struct tree_node *n = calloc(sizeof(struct tree_node), 1); - n->value = value; - n->children = list_create(); - return n; -} - -struct tree_node *tree_insert(struct tree *tree, struct tree_node *subroot, void *value) -{ - struct tree_node *treenode = calloc(sizeof(struct tree_node), 1); - treenode->children = list_create(); - treenode->value = value; - - if (!tree->root) { - tree->root = treenode; - return treenode; - } - list_insert_front(subroot->children, treenode); - return treenode; -} - -struct tree_node *tree_find_parent(struct tree *tree, struct tree_node *remove_node, - int *child_index) -{ - if (remove_node == tree->root) - return NULL; - return tree_find_parent_recur(tree, remove_node, tree->root, child_index); -} - -struct tree_node *tree_find_parent_recur(struct tree *tree, struct tree_node *remove_node, - struct tree_node *subroot, int *child_index) -{ - int idx; - if ((idx = list_contain(subroot->children, remove_node)) != -1) { - *child_index = idx; - return subroot; - } - foreach(child, subroot->children) - { - struct tree_node *ret = - tree_find_parent_recur(tree, remove_node, child->val, child_index); - if (ret != NULL) { - return ret; - } - } - return NULL; -} - -void tree_remove(struct tree *tree, struct tree_node *remove_node) -{ - int child_index = -1; - struct tree_node *parent = tree_find_parent(tree, remove_node, &child_index); - if (parent != NULL) { - struct tree_node *freethis = list_remove_by_index(parent->children, child_index); - free(freethis); - } -} - -void tree2list_recur(struct tree_node *subroot, struct list *list) -{ - if (subroot == NULL) - return; - foreach(child, subroot->children) - { - struct tree_node *curr_treenode = (struct tree_node *)child->val; - void *curr_val = curr_treenode->value; - list_insert_back(list, curr_val); - tree2list_recur(child->val, list); - } -} - -void tree2list(struct tree *tree, struct list *list) -{ - tree2list_recur(tree->root, list); -} - -void tree2array(struct tree *tree, void **array, int *size) -{ - tree2array_recur(tree->root, array, size); -} - -void tree2array_recur(struct tree_node *subroot, void **array, int *size) -{ - if (subroot == NULL) - return; - void *curr_val = (void *)subroot->value; - array[*size] = curr_val; - *size = *size + 1; - foreach(child, subroot->children) - { - tree2array_recur(child->val, array, size); - } -}
\ No newline at end of file diff --git a/src/kernel/lib/lib.h b/src/kernel/lib/lib.h deleted file mode 100644 index 06f9eda..0000000 --- a/src/kernel/lib/lib.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef MELVIX_LIB_H -#define MELVIX_LIB_H - -#include <multiboot.h> -#include <stddef.h> -#include <stdint.h> - -/** - * Copy n data from src to dest - * @param dest The destination array pointer - * @param src The source array pointer of the data - * @param count The number of bytes to be copied (src) - * @return The modified dest pointer - */ -void *memcpy(void *dest, const void *src, u32 count); - -/** - * Replace n bytes of dest by val - * @param dest The destination array pointer - * @param val The replacing chracater - * @param count The number of times val should replace dest entry - * @return The modified dest pointer - */ -void *memset(void *dest, char val, u32 count); - -/** - * Compare the first n bytes of a and b - * @param a_ptr The first memory area pointer - * @param b_ptr The second memory area pointer - * @param size The number of bytes to be compared - * @return -1 if a < b, 0 if a = b and 1 if a > b - */ -int memcmp(const void *a_ptr, const void *b_ptr, u32 size); - -void memory_init(); - -void memory_print(); -u32 memory_get_all(); -void bss_clean(); - -#endif
\ No newline at end of file diff --git a/src/kernel/lib/math.h b/src/kernel/lib/math.h deleted file mode 100644 index 57877ad..0000000 --- a/src/kernel/lib/math.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef MELVIX_MATH_H -#define MELVIX_MATH_H - -int pow(int base, int exp); - -#endif
\ No newline at end of file diff --git a/src/kernel/lib/math/pow.c b/src/kernel/lib/math/pow.c deleted file mode 100644 index 5cdcfa5..0000000 --- a/src/kernel/lib/math/pow.c +++ /dev/null @@ -1,13 +0,0 @@ -int pow(int base, int exp) -{ - if (exp < 0) - return 0; - - if (!exp) - return 1; - - int ret = base; - for (int i = 1; i < exp; i++) - ret *= base; - return ret; -}
\ No newline at end of file diff --git a/src/kernel/lib/memory.c b/src/kernel/lib/memory.c deleted file mode 100644 index ef7cb78..0000000 --- a/src/kernel/lib/memory.c +++ /dev/null @@ -1,138 +0,0 @@ -#include <lib/stdio.h> -#include <memory/mmap.h> -#include <multiboot.h> -#include <stddef.h> -#include <stdint.h> -#include <system.h> - -void *memcpy(void *dest, const void *src, u32 count) -{ - const char *sp = (const char *)src; - char *dp = (char *)dest; - for (; count != 0; count--) - *dp++ = *sp++; - return dest; -} - -void *memset(void *dest, char val, u32 count) -{ - char *temp = (char *)dest; - for (; count != 0; count--) - *temp++ = val; - return dest; -} - -int memcmp(const void *a_ptr, const void *b_ptr, u32 size) -{ - const u8 *a = (const u8 *)a_ptr; - const u8 *b = (const u8 *)b_ptr; - for (u32 i = 0; i < size; i++) { - if (a[i] < b[i]) - return -1; - else if (b[i] < a[i]) - return 1; - } - return 0; -} - -// TODO: Move memory lib! -u32 total = 0; -struct multiboot_tag_basic_meminfo *meminfo = NULL; -struct multiboot_tag_mmap *mmap = NULL; - -u32 memory_get_all() -{ - if (total != 0) { - return total; - } else if (meminfo != NULL) { - return meminfo->mem_lower + meminfo->mem_upper; - } else { - warn("Got no memory info, guessing size!"); - return 42000; // This should not happen on a modern pc but well idk, 42MB? - } -} - -u32 memory_get_free() -{ - int free_memory = memory_get_all() - 42 * 4; // TODO: Fix free memory - if (free_memory < 0) - return 0; - else - return free_memory; -} - -void memory_print() -{ - // TODO: Fix multiboot mem lower/upper - if (meminfo != NULL) { - info("Mem lower: 0x%x", meminfo->mem_lower); - info("Mem upper: 0x%x", meminfo->mem_upper); - } - info("Total memory found: %dMiB", (memory_get_all() >> 10)); - info("Total used memory: %dMiB", ((memory_get_all() - memory_get_free()) >> 10)); - info("Total free memory: %dMiB", (memory_get_free() >> 10)); -} - -void memory_info_init() -{ -} - -void memory_mmap_init(struct multiboot_tag_mmap *tag) -{ - u32 sum = 0; - struct multiboot_mmap_entry *mmap; - - for (mmap = ((struct multiboot_tag_mmap *)tag)->entries; (u8 *)mmap < (u8 *)tag + tag->size; - mmap = (multiboot_memory_map_t *)((u32)mmap + - ((struct multiboot_tag_mmap *)tag)->entry_size)) { - debug("Found memory of type %d from 0x%x-0x%x: %dKiB", mmap->type, (u32)mmap->addr, - (u32)mmap->addr + (u32)mmap->len, mmap->len >> 10); - sum += mmap->len; - - // Translate to pages - if (mmap->type == MULTIBOOT_MEMORY_AVAILABLE) { - for (u32 i = 0; i < mmap->len; i += 0x1000) { - if (mmap->addr + i > 0xFFFFFFFF) - break; - mmap_address_set_free((mmap->addr + i) & 0xFFFFF000); - } - } else { - for (u32 i = 0; i < mmap->len; i += 0x1000) { - if (mmap->addr + i > 0xFFFFFFFF) - break; - mmap_address_set_used((mmap->addr + i) & 0xFFFFF000); - } - } - - total = sum >> 10; // I want kb - } -} - -void memory_init() -{ - struct multiboot_tag *tag = NULL; - - for (tag = (struct multiboot_tag *)(multiboot_address + 8); - tag->type != MULTIBOOT_TAG_TYPE_END; - tag = (struct multiboot_tag *)((u8 *)tag + ((tag->size + 7) & ~7))) { - if (tag->type == MULTIBOOT_TAG_TYPE_BASIC_MEMINFO) { - info("Got memory info"); - meminfo = (struct multiboot_tag_basic_meminfo *)tag; - } else if (tag->type == MULTIBOOT_TAG_TYPE_MMAP) { - info("Got memory map"); - mmap = (struct multiboot_tag_mmap *)tag; - } - } - - assert(mmap && meminfo); - mmap_init(meminfo->mem_lower + meminfo->mem_upper); - memory_mmap_init(mmap); - mmap_init_finalize(); -} - -void bss_clean() -{ - u32 start = &bss_start; - u32 end = &kernel_end; - memset(start, 0, end - start); -}
\ No newline at end of file diff --git a/src/kernel/lib/stdio.h b/src/kernel/lib/stdio.h deleted file mode 100644 index 3318ef9..0000000 --- a/src/kernel/lib/stdio.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef MELVIX_STDIO_H -#define MELVIX_STDIO_H - -#include <stdarg.h> - -void putch(char c); - -int sprintf(char *str, const char *fmt, ...); -void vprintf(const char *fmt, va_list args); -int vsprintf(char *str, const char *fmt, va_list args); -void printf(const char *fmt, ...); - -void serial_vprintf(const char *fmt, va_list args); -void serial_printf(const char *fmt, ...); - -#endif
\ No newline at end of file diff --git a/src/kernel/lib/stdio/debug.c b/src/kernel/lib/stdio/debug.c deleted file mode 100644 index 879329e..0000000 --- a/src/kernel/lib/stdio/debug.c +++ /dev/null @@ -1,27 +0,0 @@ -#include <io/io.h> -#include <lib/lib.h> -#include <lib/stdio.h> -#include <lib/stdlib.h> -#include <stdint.h> - -void serial_print(const char *data) -{ - for (u32 i = 0; i < strlen(data); i++) - serial_put(data[i]); -} - -void serial_vprintf(const char *fmt, va_list args) -{ - char buf[1024]; - memset(buf, 0, 1024); - vsprintf(buf, fmt, args); - serial_print(buf); -} - -void serial_printf(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - serial_vprintf(fmt, args); - va_end(args); -}
\ No newline at end of file diff --git a/src/kernel/lib/stdio/printf.c b/src/kernel/lib/stdio/printf.c deleted file mode 100644 index c1b08e7..0000000 --- a/src/kernel/lib/stdio/printf.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <lib/stdio.h> -#include <stdarg.h> - -void printf(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - vprintf(fmt, args); - va_end(args); -}
\ No newline at end of file diff --git a/src/kernel/lib/stdio/putch.c b/src/kernel/lib/stdio/putch.c deleted file mode 100644 index 2689ac7..0000000 --- a/src/kernel/lib/stdio/putch.c +++ /dev/null @@ -1,6 +0,0 @@ -#include <graphics/vesa.h> - -void putch(char c) -{ - vesa_draw_char(c); -}
\ No newline at end of file diff --git a/src/kernel/lib/stdio/sprintf.c b/src/kernel/lib/stdio/sprintf.c deleted file mode 100644 index 8492363..0000000 --- a/src/kernel/lib/stdio/sprintf.c +++ /dev/null @@ -1,11 +0,0 @@ -#include <lib/stdio.h> -#include <stdarg.h> - -int sprintf(char *str, const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - int ret = vsprintf(str, fmt, args); - va_end(args); - return ret; -}
\ No newline at end of file diff --git a/src/kernel/lib/stdio/vprintf.c b/src/kernel/lib/stdio/vprintf.c deleted file mode 100644 index 5405309..0000000 --- a/src/kernel/lib/stdio/vprintf.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <lib/lib.h> -#include <lib/stdio.h> -#include <lib/stdlib.h> -#include <stdint.h> - -// TODO: Use global formatting function -// TODO: Fix fixed buffer size -void vprintf(const char *fmt, va_list args) -{ - char buf[1024]; - memset(buf, 0, 1024); - vsprintf(buf, fmt, args); - - for (u32 i = 0; i < strlen(buf); i++) - putch(buf[i]); -}
\ No newline at end of file diff --git a/src/kernel/lib/stdio/vsprintf.c b/src/kernel/lib/stdio/vsprintf.c deleted file mode 100644 index 61f4323..0000000 --- a/src/kernel/lib/stdio/vsprintf.c +++ /dev/null @@ -1,73 +0,0 @@ -#include <lib/stdlib.h> -#include <stdarg.h> -#include <stdint.h> - -static void append(char *dest, char *src, int index) -{ - for (int i = index; i < strlen(src) + index; i++) - dest[i] = src[i - index]; - dest[index + strlen(src)] = 0; -} - -int vsprintf(char *str, const char *fmt, va_list args) -{ - u8 ready_to_format = 0; - - int i = 0; - char buf = 0; - char format_buffer[20] = "\0"; - - for (; *fmt; fmt++) { - if (ready_to_format) { - ready_to_format = 0; - - if (*fmt == '%') { - str[i] = '%'; - continue; - } - - buf = *fmt; - - // TODO: Improve this repetitive code - if (buf == 's') { - char *string = va_arg(args, char *); - append(str, string, i); - i = strlen(str); - } else if (buf == 'x') { - itoa_base(va_arg(args, u32), format_buffer, 16, 0); - append(str, format_buffer, i); - i = strlen(str); - } else if (buf == 'd' || buf == 'i') { - itoa_base(va_arg(args, s32), format_buffer, 10, 1); - append(str, format_buffer, i); - i = strlen(str); - } else if (buf == 'u') { - itoa_base(va_arg(args, u32), format_buffer, 10, 0); - append(str, format_buffer, i); - i = strlen(str); - } else if (buf == 'o') { - itoa_base(va_arg(args, u32), format_buffer, 8, 0); - append(str, format_buffer, i); - i = strlen(str); - } else if (buf == 'b') { - itoa_base(va_arg(args, u32), format_buffer, 2, 0); - append(str, format_buffer, i); - i = strlen(str); - } else if (buf == 'c') { - str[i] = (char)va_arg(args, int); - i++; - } - } else { - if (*fmt == '%') - ready_to_format = 1; - else { - str[i] = *fmt; - i++; - } - } - - format_buffer[0] = '\0'; - } - - return strlen(str); -}
\ No newline at end of file diff --git a/src/kernel/lib/stdlib.h b/src/kernel/lib/stdlib.h deleted file mode 100644 index cee453c..0000000 --- a/src/kernel/lib/stdlib.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef MELVIX_STDLIB_H -#define MELVIX_STDLIB_H - -#include <stdint.h> - -#ifndef MELVIX_STRING_H - -#include <lib/string.h> - -#endif - -char *itoa(int n); -char *itoa_base(int value, char *result, int base, int is_signed); - -int atoi(char *str); - -char *htoa(u32 n); - -int htoi(char *str); - -#endif
\ No newline at end of file diff --git a/src/kernel/lib/stdlib/atoi.c b/src/kernel/lib/stdlib/atoi.c deleted file mode 100644 index b90958a..0000000 --- a/src/kernel/lib/stdlib/atoi.c +++ /dev/null @@ -1,28 +0,0 @@ -#include <lib/math.h> -#include <lib/string.h> -#include <stddef.h> -#include <stdint.h> - -int atoi(char *str) -{ - u32 s_str = strlen(str); - if (!s_str) - return 0; - - u8 negative = 0; - if (str[0] == '-') - negative = 1; - - u32 i = 0; - if (negative) - i++; - - int ret = 0; - for (; i < s_str; i++) { - ret += (str[i] - '0') * pow(10, (int)((s_str - i) - 1)); - } - - if (negative) - ret *= -1; - return ret; -}
\ No newline at end of file diff --git a/src/kernel/lib/stdlib/htoa.c b/src/kernel/lib/stdlib/htoa.c deleted file mode 100644 index 9cf57cc..0000000 --- a/src/kernel/lib/stdlib/htoa.c +++ /dev/null @@ -1,31 +0,0 @@ -#include <lib/string.h> -#include <memory/alloc.h> -#include <stdint.h> - -static const char HTOA_TABLE[] = "0123456789ABCDEF"; - -char *htoa(u32 n) -{ - char *ret = (char *)malloc(10); - - int i = 0; - while (n) { - ret[i++] = HTOA_TABLE[n & 0xF]; - n >>= 4; - } - - if (!i) { - ret[0] = '0'; - i++; - } - - for (; i <= 9; i++) - ret[i] = 0; - - char *aux = strdup(ret); - free(ret); - ret = aux; - - strinv(ret); - return ret; -}
\ No newline at end of file diff --git a/src/kernel/lib/stdlib/htoi.c b/src/kernel/lib/stdlib/htoi.c deleted file mode 100644 index 367d30e..0000000 --- a/src/kernel/lib/stdlib/htoi.c +++ /dev/null @@ -1,23 +0,0 @@ -#include <lib/math.h> -#include <lib/string.h> -#include <stddef.h> - -int htoi(char *str) -{ - u32 s_str = strlen(str); - - u32 i = 0; - int ret = 0; - for (; i < s_str; i++) { - char c = str[i]; - int aux = 0; - if (c >= '0' && c <= '9') - aux = c - '0'; - else if (c >= 'A' && c <= 'F') - aux = (c - 'A') + 10; - - ret += aux * pow(16, (int)((s_str - i) - 1)); - } - - return ret; -}
\ No newline at end of file diff --git a/src/kernel/lib/stdlib/itoa.c b/src/kernel/lib/stdlib/itoa.c deleted file mode 100644 index b15befd..0000000 --- a/src/kernel/lib/stdlib/itoa.c +++ /dev/null @@ -1,73 +0,0 @@ -#include <lib/math.h> -#include <lib/string.h> -#include <memory/alloc.h> -#include <memory/paging.h> -#include <stdint.h> - -static const char ITOA_TABLE[] = "0123456789"; - -char *itoa(int n) -{ - if (!n) { - char *ret = (char *)malloc(2); - ret[0] = '0'; - ret[1] = 0; - return ret; - } - u8 negative = (u8)(n < 0); - if (negative) - n *= -1; - - int sz; - for (sz = 0; n % pow(10, sz) != n; sz++) { - } - - char *ret = (char *)malloc((u32)(sz + 1)); - - for (int i = 0; i < sz; i++) { - int digit = (n % pow(10, i + 1)) / pow(10, i); - ret[i] = ITOA_TABLE[digit]; - } - ret[sz] = 0; - - if (negative) { - char *aux = (char *)malloc((u32)(sz + 2)); - strcpy(aux, ret); - aux[sz] = '-'; - aux[sz + 1] = 0; - free(ret); - ret = aux; - } - - strinv(ret); - return ret; -} - -// TODO: Rename itoa_base -char *itoa_base(int value, char *result, int base, int is_signed) -{ - if (base < 2 || base > 36) { - *result = '\0'; - return result; - } - - char *ptr = result, *ptr1 = result, tmp_char; - int tmp_value; - - do { - tmp_value = value; - value /= base; - *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" - [35 + (tmp_value - value * base)]; - } while (value); - - if (is_signed && tmp_value < 0) - *ptr++ = '-'; - *ptr-- = '\0'; - while (ptr1 < ptr) { - tmp_char = *ptr; - *ptr-- = *ptr1; - *ptr1++ = tmp_char; - } - return result; -}
\ No newline at end of file diff --git a/src/kernel/lib/string.h b/src/kernel/lib/string.h deleted file mode 100644 index 127dcc4..0000000 --- a/src/kernel/lib/string.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef MELVIX_STRING_H -#define MELVIX_STRING_H - -#include <stddef.h> -#include <stdint.h> - -u32 strlen(const char *str); - -void strcpy(char *dest, const char *orig); - -void strdisp(char *str, int n); - -void strcat(char *dest, const char *orig); - -void strcati(char *dest, const char *orig); - -char strcmp(const char *a, const char *b); - -int strncmp(const char *s1, const char *s2, int c); - -char *strdup(const char *orig); - -void strinv(char *str); - -char *strstr(const char *in, const char *str); - -char *strsep(char **stringp, const char *delim); - -#endif
\ No newline at end of file diff --git a/src/kernel/lib/string/strcat.c b/src/kernel/lib/string/strcat.c deleted file mode 100644 index 3ae8ea0..0000000 --- a/src/kernel/lib/string/strcat.c +++ /dev/null @@ -1,11 +0,0 @@ -#include <lib/string.h> - -void strcat(char *dest, const char *orig) -{ - u32 s_dest = strlen(dest); - u32 s_orig = strlen(orig); - - for (u32 i = 0; i < s_orig; i++) - dest[s_dest + i] = orig[i]; - dest[s_dest + s_orig] = 0; -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strcati.c b/src/kernel/lib/string/strcati.c deleted file mode 100644 index 2fda46c..0000000 --- a/src/kernel/lib/string/strcati.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <lib/string.h> - -void strcati(char *dest, const char *orig) -{ - u32 s_orig = strlen(orig); - strdisp(dest, (int)s_orig); - for (u32 i = 0; i < s_orig; i++) - dest[i] = orig[i]; -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strcmp.c b/src/kernel/lib/string/strcmp.c deleted file mode 100644 index 7a273ac..0000000 --- a/src/kernel/lib/string/strcmp.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <lib/string.h> - -char strcmp(const char *a, const char *b) -{ - if (strlen(a) != strlen(b)) - return 1; - - for (u32 i = 0; i < strlen(a); i++) - if (a[i] != b[i]) - return 1; - - return 0; -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strcpy.c b/src/kernel/lib/string/strcpy.c deleted file mode 100644 index 5d7f194..0000000 --- a/src/kernel/lib/string/strcpy.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <lib/string.h> - -void strcpy(char *dest, const char *orig) -{ - u32 s_orig = strlen(orig); - - for (u32 i = 0; i < s_orig; i++) - dest[i] = orig[i]; - dest[s_orig] = 0; -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strdisp.c b/src/kernel/lib/string/strdisp.c deleted file mode 100644 index dada5d0..0000000 --- a/src/kernel/lib/string/strdisp.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <lib/string.h> - -void strdisponce(char *str) -{ - for (u32 i = sizeof(str) + 2; i > 0; i--) - str[i] = str[i - 1]; - str[0] = 0; -} - -void strdisp(char *str, int n) -{ - for (int i = 0; i < n; i++) - strdisponce(str); -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strdup.c b/src/kernel/lib/string/strdup.c deleted file mode 100644 index 3b138e8..0000000 --- a/src/kernel/lib/string/strdup.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <lib/string.h> -#include <memory/alloc.h> - -char *strdup(const char *orig) -{ - u32 s_orig = strlen(orig); - char *ret = (char *)malloc(s_orig + 1); - strcpy(ret, orig); - return ret; -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strinv.c b/src/kernel/lib/string/strinv.c deleted file mode 100644 index 90cb581..0000000 --- a/src/kernel/lib/string/strinv.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <lib/string.h> - -void strinv(char *str) -{ - u32 s_str = strlen(str); - - int iterations = (int)s_str / 2; - for (int i = 0; i < iterations; i++) { - char aux = str[i]; - str[i] = str[(s_str - i) - 1]; - str[(s_str - i) - 1] = aux; - } -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strlen.c b/src/kernel/lib/string/strlen.c deleted file mode 100644 index 520ab92..0000000 --- a/src/kernel/lib/string/strlen.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <lib/string.h> - -u32 strlen(const char *str) -{ - u32 len = 0; - while (str[len]) - len++; - return len; -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strncmp.c b/src/kernel/lib/string/strncmp.c deleted file mode 100644 index 4dbac59..0000000 --- a/src/kernel/lib/string/strncmp.c +++ /dev/null @@ -1,16 +0,0 @@ -int strncmp(const char *s1, const char *s2, int c) -{ - int result = 0; - - while (c) { - result = *s1 - *s2++; - - if ((result != 0) || (*s1++ == 0)) { - break; - } - - c--; - } - - return result; -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strsep.c b/src/kernel/lib/string/strsep.c deleted file mode 100644 index 8f5201e..0000000 --- a/src/kernel/lib/string/strsep.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <stddef.h> - -char *strsep(char **stringp, const char *delim) -{ - char *s; - const char *spanp; - int c, sc; - char *tok; - if ((s = *stringp) == NULL) - return (NULL); - for (tok = s;;) { - c = *s++; - spanp = delim; - do { - if ((sc = *spanp++) == c) { - if (c == 0) - s = NULL; - else - s[-1] = 0; - *stringp = s; - return (tok); - } - } while (sc != 0); - } -}
\ No newline at end of file diff --git a/src/kernel/lib/string/strstr.c b/src/kernel/lib/string/strstr.c deleted file mode 100644 index 720df8c..0000000 --- a/src/kernel/lib/string/strstr.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <lib/stdlib.h> -#include <stdint.h> - -char *strstr(const char *in, const char *str) -{ - char c; - u32 len; - - c = *str++; - if (!c) - return (char *)in; - - len = strlen(str); - do { - char sc; - - do { - sc = *in++; - if (!sc) - return (char *)0; - } while (sc != c); - } while (strncmp(in, str, len) != 0); - - return (char *)(in - 1); -}
\ No newline at end of file diff --git a/src/kernel/memory/alloc.c b/src/kernel/memory/alloc.c deleted file mode 100644 index 4f76080..0000000 --- a/src/kernel/memory/alloc.c +++ /dev/null @@ -1,492 +0,0 @@ -#include <io/io.h> -#include <lib/lib.h> -#include <memory/alloc.h> -#include <memory/mmap.h> -#include <memory/paging.h> -#include <stddef.h> -#include <stdint.h> -#include <system.h> - -static int locked = 0; - -int liballoc_lock() -{ - spinlock(&locked); - return 0; -} - -int liballoc_unlock() -{ - locked = 0; - return 0; -} - -void *liballoc_alloc(u32 p) -{ - u32 ptr = kmalloc_frames((u32)p); - return (void *)ptr; -} - -int liballoc_free(void *ptr, u32 p) -{ - kfree_frames((u32)ptr, (u32)p); - return 0; -} - -#define ALIGNMENT 16ul -#define ALIGN_TYPE char -#define ALIGN_INFO sizeof(ALIGN_TYPE) * 16 -#define USE_CASE1 -#define USE_CASE2 -#define USE_CASE3 -#define USE_CASE4 -#define USE_CASE5 - -#define ALIGN(ptr) \ - if (ALIGNMENT > 1) { \ - u32 diff; \ - ptr = (void *)((u32)ptr + ALIGN_INFO); \ - diff = (u32)ptr & (ALIGNMENT - 1); \ - if (diff != 0) { \ - diff = ALIGNMENT - diff; \ - ptr = (void *)((u32)ptr + diff); \ - } \ - *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)) = diff + ALIGN_INFO; \ - } - -#define UNALIGN(ptr) \ - if (ALIGNMENT > 1) { \ - u32 diff = *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)); \ - if (diff < (ALIGNMENT + ALIGN_INFO)) { \ - ptr = (void *)((u32)ptr - diff); \ - } \ - } - -#define LIBALLOC_MAGIC 0x900df00d -#define LIBALLOC_DEAD 0xbaadf00d - -struct liballoc_major { - struct liballoc_major *prev; - struct liballoc_major *next; - u32 pages; - u32 size; - u32 usage; - struct liballoc_minor *first; -}; - -struct liballoc_minor { - struct liballoc_minor *prev; - struct liballoc_minor *next; - struct liballoc_major *block; - u32 magic; - u32 size; - u32 req_size; -}; - -static struct liballoc_major *l_mem_root = NULL; -static struct liballoc_major *l_best_bet = NULL; - -static u32 l_page_size = 4096; -static u32 l_page_count = 16; -static u64 l_allocated = 0; -static u64 l_inuse = 0; - -static long long l_warning_count = 0; -static long long l_error_count = 0; -static long long l_possible_overruns = 0; - -static void *liballoc_memset(void *s, int c, u32 n) -{ - for (u32 i = 0; i < n; i++) - ((char *)s)[i] = c; - - return s; -} - -static void *liballoc_memcpy(void *s1, const void *s2, u32 n) -{ - char *cdest; - char *csrc; - u32 *ldest = (u32 *)s1; - u32 *lsrc = (u32 *)s2; - - while (n >= sizeof(u32)) { - *ldest++ = *lsrc++; - n -= sizeof(u32); - } - - cdest = (char *)ldest; - csrc = (char *)lsrc; - - while (n > 0) { - *cdest++ = *csrc++; - n -= 1; - } - return s1; -} - -static struct liballoc_major *allocate_new_page(u32 size) -{ - u32 st; - struct liballoc_major *maj; - - st = size + sizeof(struct liballoc_major); - st += sizeof(struct liballoc_minor); - - if ((st % l_page_size) == 0) - st = st / (l_page_size); - else - st = st / (l_page_size) + 1; - - if (st < l_page_count) - st = l_page_count; - - maj = (struct liballoc_major *)liballoc_alloc(st); - - if (maj == NULL) { - l_warning_count += 1; - return NULL; - } - - maj->prev = NULL; - maj->next = NULL; - maj->pages = st; - maj->size = st * l_page_size; - maj->usage = sizeof(struct liballoc_major); - maj->first = NULL; - - l_allocated += maj->size; - - return maj; -} - -void *malloc(u32 req_size) -{ - assert(paging_enabled); - - int started_bet = 0; - u64 best_size = 0; - void *p = NULL; - u32 diff; - struct liballoc_major *maj; - struct liballoc_minor *min; - struct liballoc_minor *new_min; - u32 size = req_size; - - if (ALIGNMENT > 1) { - size += ALIGNMENT + ALIGN_INFO; - } - - liballoc_lock(); - - if (size == 0) { - l_warning_count += 1; - liballoc_unlock(); - return malloc(1); - } - - if (l_mem_root == NULL) { - l_mem_root = allocate_new_page(size); - if (l_mem_root == NULL) { - liballoc_unlock(); - return NULL; - } - } - - maj = l_mem_root; - started_bet = 0; - - if (l_best_bet != NULL) { - best_size = l_best_bet->size - l_best_bet->usage; - - if (best_size > (size + sizeof(struct liballoc_minor))) { - maj = l_best_bet; - started_bet = 1; - } - } - - while (maj != NULL) { - diff = maj->size - maj->usage; - if (best_size < diff) { - l_best_bet = maj; - best_size = diff; - } - -#ifdef USE_CASE1 - if (diff < (size + sizeof(struct liballoc_minor))) { - if (maj->next != NULL) { - maj = maj->next; - continue; - } - - if (started_bet == 1) { - maj = l_mem_root; - started_bet = 0; - continue; - } - - maj->next = allocate_new_page(size); - if (maj->next == NULL) - break; - maj->next->prev = maj; - maj = maj->next; - } -#endif - -#ifdef USE_CASE2 - if (maj->first == NULL) { - maj->first = - (struct liballoc_minor *)((u32)maj + sizeof(struct liballoc_major)); - - maj->first->magic = LIBALLOC_MAGIC; - maj->first->prev = NULL; - maj->first->next = NULL; - maj->first->block = maj; - maj->first->size = size; - maj->first->req_size = req_size; - maj->usage += size + sizeof(struct liballoc_minor); - l_inuse += size; - p = (void *)((u32)(maj->first) + sizeof(struct liballoc_minor)); - ALIGN(p); - liballoc_unlock(); - return p; - } -#endif - -#ifdef USE_CASE3 - diff = (u32)(maj->first); - diff -= (u32)maj; - diff -= sizeof(struct liballoc_major); - - if (diff >= (size + sizeof(struct liballoc_minor))) { - maj->first->prev = - (struct liballoc_minor *)((u32)maj + sizeof(struct liballoc_major)); - maj->first->prev->next = maj->first; - maj->first = maj->first->prev; - maj->first->magic = LIBALLOC_MAGIC; - maj->first->prev = NULL; - maj->first->block = maj; - maj->first->size = size; - maj->first->req_size = req_size; - maj->usage += size + sizeof(struct liballoc_minor); - l_inuse += size; - p = (void *)((u32)(maj->first) + sizeof(struct liballoc_minor)); - ALIGN(p); - liballoc_unlock(); - return p; - } -#endif - -#ifdef USE_CASE4 - min = maj->first; - - while (min != NULL) { - if (min->next == NULL) { - diff = (u32)(maj) + maj->size; - diff -= (u32)min; - diff -= sizeof(struct liballoc_minor); - diff -= min->size; - if (diff >= (size + sizeof(struct liballoc_minor))) { - min->next = (struct liballoc_minor - *)((u32)min + - sizeof(struct liballoc_minor) + - min->size); - min->next->prev = min; - min = min->next; - min->next = NULL; - min->magic = LIBALLOC_MAGIC; - min->block = maj; - min->size = size; - min->req_size = req_size; - maj->usage += size + sizeof(struct liballoc_minor); - l_inuse += size; - p = (void *)((u32)min + sizeof(struct liballoc_minor)); - ALIGN(p); - liballoc_unlock(); - return p; - } - } - - if (min->next != NULL) { - diff = (u32)(min->next); - diff -= (u32)min; - diff -= sizeof(struct liballoc_minor); - diff -= min->size; - - if (diff >= (size + sizeof(struct liballoc_minor))) { - new_min = (struct liballoc_minor - *)((u32)min + - sizeof(struct liballoc_minor) + - min->size); - new_min->magic = LIBALLOC_MAGIC; - new_min->next = min->next; - new_min->prev = min; - new_min->size = size; - new_min->req_size = req_size; - new_min->block = maj; - min->next->prev = new_min; - min->next = new_min; - maj->usage += size + sizeof(struct liballoc_minor); - l_inuse += size; - p = (void *)((u32)new_min + sizeof(struct liballoc_minor)); - ALIGN(p); - liballoc_unlock(); - return p; - } - } - - min = min->next; - } -#endif - -#ifdef USE_CASE5 - if (maj->next == NULL) { - if (started_bet == 1) { - maj = l_mem_root; - started_bet = 0; - continue; - } - maj->next = allocate_new_page(size); - if (maj->next == NULL) - break; - maj->next->prev = maj; - } -#endif - maj = maj->next; - } - - liballoc_unlock(); - - return NULL; -} - -// Definitely improveable -void *valloc(u32 req_size) -{ - u32 mask = l_page_size - 1; - u32 mem = malloc(req_size + l_page_size); - return (void *)((mem + mask) & ~mask); -} - -void free(void *ptr) -{ - struct liballoc_minor *min; - struct liballoc_major *maj; - - if (ptr == NULL) { - l_warning_count += 1; - return; - } - - UNALIGN(ptr); - liballoc_lock(); - - min = (struct liballoc_minor *)((u32)ptr - sizeof(struct liballoc_minor)); - - if (min->magic != LIBALLOC_MAGIC) { - l_error_count += 1; - - if (((min->magic & 0xFFFFFF) == (LIBALLOC_MAGIC & 0xFFFFFF)) || - ((min->magic & 0xFFFF) == (LIBALLOC_MAGIC & 0xFFFF)) || - ((min->magic & 0xFF) == (LIBALLOC_MAGIC & 0xFF))) { - l_possible_overruns += 1; - } - - liballoc_unlock(); - return; - } - - maj = min->block; - l_inuse -= min->size; - maj->usage -= (min->size + sizeof(struct liballoc_minor)); - min->magic = LIBALLOC_DEAD; - - if (min->next != NULL) - min->next->prev = min->prev; - if (min->prev != NULL) - min->prev->next = min->next; - if (min->prev == NULL) - maj->first = min->next; - if (maj->first == NULL) { - if (l_mem_root == maj) - l_mem_root = maj->next; - if (l_best_bet == maj) - l_best_bet = NULL; - if (maj->prev != NULL) - maj->prev->next = maj->next; - if (maj->next != NULL) - maj->next->prev = maj->prev; - l_allocated -= maj->size; - liballoc_free(maj, maj->pages); - } else { - if (l_best_bet != NULL) { - int best_size = l_best_bet->size - l_best_bet->usage; - int maj_size = maj->size - maj->usage; - if (maj_size > best_size) - l_best_bet = maj; - } - } - liballoc_unlock(); -} - -void *calloc(u32 nobj, u32 size) -{ - int real_size; - void *p; - - real_size = nobj * size; - - p = malloc(real_size); - - liballoc_memset(p, 0, real_size); - - return p; -} - -void *realloc(void *p, u32 size) -{ - void *ptr; - struct liballoc_minor *min; - u32 real_size; - - if (size == 0) { - free(p); - return NULL; - } - - if (p == NULL) - return malloc(size); - - ptr = p; - UNALIGN(ptr); - liballoc_lock(); - min = (struct liballoc_minor *)((u32)ptr - sizeof(struct liballoc_minor)); - - if (min->magic != LIBALLOC_MAGIC) { - l_error_count += 1; - if (((min->magic & 0xFFFFFF) == (LIBALLOC_MAGIC & 0xFFFFFF)) || - ((min->magic & 0xFFFF) == (LIBALLOC_MAGIC & 0xFFFF)) || - ((min->magic & 0xFF) == (LIBALLOC_MAGIC & 0xFF))) { - l_possible_overruns += 1; - } - - liballoc_unlock(); - return NULL; - } - - real_size = min->req_size; - - if (real_size >= size) { - min->req_size = size; - liballoc_unlock(); - return p; - } - - liballoc_unlock(); - - ptr = malloc(size); - liballoc_memcpy(ptr, p, real_size); - free(p); - - return ptr; -}
\ No newline at end of file diff --git a/src/kernel/memory/alloc.h b/src/kernel/memory/alloc.h deleted file mode 100644 index bb3f452..0000000 --- a/src/kernel/memory/alloc.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef MELVIX_ALLOC_H -#define MELVIX_ALLOC_H - -#include <stdint.h> - -void *malloc(u32); -void *valloc(u32); -void *realloc(void *, u32); -void *calloc(u32, u32); -void free(void *); - -#endif
\ No newline at end of file diff --git a/src/kernel/memory/mmap.c b/src/kernel/memory/mmap.c deleted file mode 100644 index 2e4821d..0000000 --- a/src/kernel/memory/mmap.c +++ /dev/null @@ -1,107 +0,0 @@ -#include <memory/mmap.h> -#include <stddef.h> -#include <stdint.h> -#include <system.h> - -#define FRAME_SIZE 0x1000 -#define FRAME_COUNT (total_memory / 4) -#define FRAME_TABLE_SIZE (FRAME_COUNT / 32) - -#define FREE 0x0 -#define USED 0x1 - -void *kmalloc(u32 size); - -extern u32 kernel_end; -u32 kernel_end_address = (u32)&kernel_end; - -u32 total_memory; - -u32 *frame_table; - -// Not to be used externally! -void *kmalloc(u32 size) -{ - void *ret; - - ret = (void *)kernel_end_address; - kernel_end_address += size; - - return ret; -} - -// TODO: Efficiency -void *kmalloc_frames(u32 num) -{ - u8 found; - - for (u32 i = 0; i < FRAME_COUNT; i++) { - found = 1; - for (u32 j = 0; j < num; j++) { - if (mmap_index_check(i + j) == USED) { - found = 0; - break; - } - } - if (found) { - for (u32 j = 0; j < num; j++) { - mmap_index_set_used(i + j); - } - return (void *)(i * FRAME_SIZE); - } - } - - warn("Not enough frames"); - return NULL; -} - -void kfree_frames(void *ptr, u32 num) -{ - u32 address = (u32)ptr; - u32 i = address; - - while (i < address + (num * FRAME_SIZE)) { - mmap_address_set_free(address); - i += FRAME_SIZE; - } -} - -u8 mmap_index_check(u32 n) -{ - return (frame_table[n / 32] >> (n % 32)) & 0x1; -} - -void mmap_init(u32 size) -{ - total_memory = size; - frame_table = kmalloc(FRAME_TABLE_SIZE); -} - -void mmap_init_finalize() -{ - // TODO: Efficiency - //memset(frame_table, 0xFF, (&kernel_end / FRAME_SIZE) / 8); - for (u32 i = 0; i < kernel_end_address; i += FRAME_SIZE) { - mmap_address_set_used(i); - } -} - -void mmap_address_set_free(u32 address) -{ - frame_table[(address / FRAME_SIZE) / 32] &= ~(1 << ((address / FRAME_SIZE) % 32)); -} - -void mmap_address_set_used(u32 address) -{ - frame_table[(address / FRAME_SIZE) / 32] |= (1 << ((address / FRAME_SIZE) % 32)); -} - -void mmap_index_set_free(u32 n) -{ - frame_table[n / 32] &= ~(1 << (n % 32)); -} - -void mmap_index_set_used(u32 n) -{ - frame_table[n / 32] |= 1 << (n % 32); -}
\ No newline at end of file diff --git a/src/kernel/memory/mmap.h b/src/kernel/memory/mmap.h deleted file mode 100644 index 1de801f..0000000 --- a/src/kernel/memory/mmap.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef MELVIX_MMAP -#define MELVIX_MMAP - -#include <stdint.h> - -void *kmalloc_frames(u32 num); -void kfree_frames(void *ptr, u32 num); - -u8 mmap_check(u32 n); -void mmap_init(u32 size); -void mmap_init_finalize(); -void mmap_address_set_free(u32 address); -void mmap_address_set_used(u32 address); -u8 mmap_index_check(u32 n); -void mmap_index_set_free(u32 n); -void mmap_index_set_used(u32 n); - -#endif
\ No newline at end of file diff --git a/src/kernel/memory/paging.c b/src/kernel/memory/paging.c deleted file mode 100644 index e2c48b8..0000000 --- a/src/kernel/memory/paging.c +++ /dev/null @@ -1,117 +0,0 @@ -#include <io/io.h> -#include <lib/lib.h> -#include <memory/alloc.h> -#include <memory/mmap.h> -#include <memory/paging.h> -#include <stdint.h> -#include <system.h> - -struct page_dir *kernel_page_directory; - -void paging_install() -{ - memory_init(); - - struct page_table *page_table; - - page_table = kmalloc_frames(1); - memset(page_table, 0, sizeof(struct page_table)); - for (u32 i = 0; i < PAGE_COUNT; i++) { - page_table->entries[i].present = 1; - page_table->entries[i].writable = 1; - page_table->entries[i].address = SHIFT(i * PAGE_SIZE); - } - - kernel_page_directory = kmalloc_frames(1); - memset(kernel_page_directory, 0, sizeof(struct page_dir)); - kernel_page_directory->entries[0].present = 1; - kernel_page_directory->entries[0].writable = 1; - kernel_page_directory->entries[0].address = SHIFT((u32)page_table); - - paging_switch_dir((u32)kernel_page_directory); - paging_enable(); - info("Installed paging"); - - // Test mallocing - u32 *c = malloc(2048); - c[42] = 0x4242; - assert(c[42] == 0x4242); - free(c); - info("Malloc test succeeded!"); -} - -void paging_disable() -{ - u32 cr0 = cr0_get(); - cr0 &= 0x7fffffff; - cr0_set(cr0); - paging_enabled = 0; -} - -void paging_enable() -{ - u32 cr0 = cr0_get(); - cr0 |= 0x80000000; - cr0_set(cr0); - paging_enabled = 1; -} - -void paging_switch_dir(u32 dir) -{ - cr3_set(dir); -} - -struct page_table_entry *paging_get_page(u32 address, struct page_dir *page_dir) -{ - struct page_table *page_table; - - address /= PAGE_SIZE; - u32 n = address / PAGE_COUNT; - - if (page_dir->entries[n].present == 0) { - page_table = kmalloc_frames(1); - memset(page_table, 0, sizeof(struct page_table)); - - page_dir->entries[n].address = SHIFT((u32)page_table); - page_dir->entries[n].present = 1; - page_dir->entries[n].writable = 1; - page_dir->entries[n].user = 1; - } else { - page_table = (void *)UNSHIFT(page_dir->entries[n].address); - } - - return &page_table->entries[address % PAGE_COUNT]; -} - -void paging_frame_alloc(struct page_table_entry *page) -{ - void *ptr = kmalloc_frames(1); - - if (page->address != 0) { - warn("Page is already allocated"); - return; - } - page->address = SHIFT((u32)ptr); - page->present = 1; - page->user = 1; -} - -void paging_frame_free(struct page_table_entry *page) -{ - kfree_frames((void *)UNSHIFT(page->address), 1); - memset((void *)page, 0, sizeof(struct page_table_entry)); -} - -struct page_dir *paging_make_dir() -{ - struct page_dir *ret = kmalloc_frames(1); - - memcpy(ret, kernel_page_directory, sizeof(struct page_dir)); - - return ret; -} - -void paging_free_dir(struct page_dir *page_dir) -{ - kfree_frames(page_dir, 1); -}
\ No newline at end of file diff --git a/src/kernel/memory/paging.h b/src/kernel/memory/paging.h deleted file mode 100644 index af7d4a2..0000000 --- a/src/kernel/memory/paging.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef MELVIX_PAGING_H -#define MELVIX_PAGING_H - -#include <stdint.h> - -#define PAGE_SIZE 0x1000 -#define PAGE_COUNT 1024 -#define SHIFT(address) ((address) >> 12) -#define UNSHIFT(address) ((address) << 12) - -int paging_enabled; - -struct page_table_entry { - u32 present : 1; - u32 writable : 1; - u32 user : 1; - u32 write_through : 1; - u32 cache_disable : 1; - u32 accessed : 1; - u32 dirty : 1; - u32 attribute : 1; - u32 global : 1; - u32 available : 3; - u32 address : 20; -} __attribute__((packed)); - -struct page_table { - struct page_table_entry entries[PAGE_COUNT]; -}; - -struct page_dir_entry { - u32 present : 1; - u32 writable : 1; - u32 user : 1; - u32 write_through : 1; - u32 cache_disable : 1; - u32 accessed : 1; - u32 reserved : 1; - u32 page_size : 1; - u32 global : 1; - u32 available : 3; - u32 address : 20; -} __attribute__((packed)); - -struct page_dir { - struct page_dir_entry entries[PAGE_COUNT]; -}; - -void paging_install(); -void paging_enable(); -void paging_disable(); -void paging_switch_dir(u32 dir); - -struct page_table_entry *paging_get_page(u32 address, struct page_dir *page_dir); -void paging_frame_alloc(struct page_table_entry *page); -void paging_frame_free(struct page_table_entry *page); -struct page_dir *paging_make_dir(); -void paging_free_dir(); - -#endif
\ No newline at end of file diff --git a/src/kernel/multiboot.c b/src/kernel/multiboot.c deleted file mode 100644 index 8bc5242..0000000 --- a/src/kernel/multiboot.c +++ /dev/null @@ -1,82 +0,0 @@ -#include <acpi/acpi.h> -#include <graphics/vesa.h> -#include <lib/lib.h> -#include <lib/stdio.h> -#include <multiboot.h> -#include <smbios/smbios.h> -#include <stdint.h> -#include <system.h> - -void multiboot_parse() -{ - struct multiboot_tag *tag; - - for (tag = (struct multiboot_tag *)(multiboot_address + 8); - tag->type != MULTIBOOT_TAG_TYPE_END; - tag = (struct multiboot_tag *)((u8 *)tag + ((tag->size + 7) & ~7))) { - switch (tag->type) { - case MULTIBOOT_TAG_TYPE_CMDLINE: - // TODO: Add cmdline config support - debug("Got cmdline: %s", ((struct multiboot_tag_string *)tag)->string); - break; - case MULTIBOOT_TAG_TYPE_BOOT_LOADER_NAME: - debug("Got bootloader name: %s", - ((struct multiboot_tag_string *)tag)->string); - break; - case MULTIBOOT_TAG_TYPE_MODULE: - debug("Got modules"); - break; - case MULTIBOOT_TAG_TYPE_BASIC_MEMINFO: - debug("Got memory info"); - /* memory_info_init((struct multiboot_tag_basic_meminfo *)tag); */ - break; - case MULTIBOOT_TAG_TYPE_BOOTDEV: - debug("Got boot device"); - break; - case MULTIBOOT_TAG_TYPE_MMAP: - debug("Got memory map"); - /* memory_mmap_init((struct multiboot_tag_mmap *)tag); */ - break; - case MULTIBOOT_TAG_TYPE_VBE: - debug("Got VBE"); - break; - case MULTIBOOT_TAG_TYPE_FRAMEBUFFER: - debug("Got framebuffer"); - break; - case MULTIBOOT_TAG_TYPE_APM: - debug("Got APM table"); - break; - case MULTIBOOT_TAG_TYPE_EFI32: - debug("Got EFI32"); - break; - case MULTIBOOT_TAG_TYPE_SMBIOS: - // GRUB doesn't detect SMBIOS on QEMU! - debug("Got SMBIOS table"); - smbios_init((struct multiboot_tag_smbios *)tag); - break; - case MULTIBOOT_TAG_TYPE_ACPI_OLD: - debug("Got ACPI 1.0 table"); - acpi_old_init((struct multiboot_tag_old_acpi *)tag); - break; - case MULTIBOOT_TAG_TYPE_ACPI_NEW: - debug("Got ACPI 2.0 table"); - acpi_new_init((struct multiboot_tag_new_acpi *)tag); - break; - case MULTIBOOT_TAG_TYPE_NETWORK: - debug("Got network debug"); - break; - case MULTIBOOT_TAG_TYPE_EFI_MMAP: - debug("Got EFI memory map"); - break; - case MULTIBOOT_TAG_TYPE_EFI_BS: - debug("Got EFI boot services"); - break; - case MULTIBOOT_TAG_TYPE_EFI32_IH: - debug("Got EFI image handler pointer"); - break; - case MULTIBOOT_TAG_TYPE_LOAD_BASE_ADDR: - debug("Got image load base address"); - break; - } - } -}
\ No newline at end of file diff --git a/src/kernel/multiboot.h b/src/kernel/multiboot.h deleted file mode 100644 index 3eb9b93..0000000 --- a/src/kernel/multiboot.h +++ /dev/null @@ -1,378 +0,0 @@ -/* Copyright (C) 1999,2003,2007,2008,2009,2010 Free Software Foundation, Inc. - * - * 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 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 ANY - * DEVELOPER OR DISTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR - * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include <stdint.h> - -#ifndef MULTIBOOT_HEADER -#define MULTIBOOT_HEADER 1 - -/* How many bytes from the start of the file we search for the header. */ -#define MULTIBOOT_SEARCH 32768 -#define MULTIBOOT_HEADER_ALIGN 8 - -/* The magic field should contain this. */ -#define MULTIBOOT_HEADER_MAGIC 0xe85250d6 - -/* This should be in %eax. */ -#define MULTIBOOT_BOOTLOADER_MAGIC 0x36d76289 - -/* Alignment of multiboot modules. */ -#define MULTIBOOT_MOD_ALIGN 0x00001000 - -/* Alignment of the multiboot info structure. */ -#define MULTIBOOT_INFO_ALIGN 0x00000008 - -/* Flags set in the ’flags’ member of the multiboot header. */ - -#define MULTIBOOT_TAG_ALIGN 8 -#define MULTIBOOT_TAG_TYPE_END 0 -#define MULTIBOOT_TAG_TYPE_CMDLINE 1 -#define MULTIBOOT_TAG_TYPE_BOOT_LOADER_NAME 2 -#define MULTIBOOT_TAG_TYPE_MODULE 3 -#define MULTIBOOT_TAG_TYPE_BASIC_MEMINFO 4 -#define MULTIBOOT_TAG_TYPE_BOOTDEV 5 -#define MULTIBOOT_TAG_TYPE_MMAP 6 -#define MULTIBOOT_TAG_TYPE_VBE 7 -#define MULTIBOOT_TAG_TYPE_FRAMEBUFFER 8 -#define MULTIBOOT_TAG_TYPE_ELF_SECTIONS 9 -#define MULTIBOOT_TAG_TYPE_APM 10 -#define MULTIBOOT_TAG_TYPE_EFI32 11 -#define MULTIBOOT_TAG_TYPE_EFI64 12 -#define MULTIBOOT_TAG_TYPE_SMBIOS 13 -#define MULTIBOOT_TAG_TYPE_ACPI_OLD 14 -#define MULTIBOOT_TAG_TYPE_ACPI_NEW 15 -#define MULTIBOOT_TAG_TYPE_NETWORK 16 -#define MULTIBOOT_TAG_TYPE_EFI_MMAP 17 -#define MULTIBOOT_TAG_TYPE_EFI_BS 18 -#define MULTIBOOT_TAG_TYPE_EFI32_IH 19 -#define MULTIBOOT_TAG_TYPE_EFI64_IH 20 -#define MULTIBOOT_TAG_TYPE_LOAD_BASE_ADDR 21 - -#define MULTIBOOT_HEADER_TAG_END 0 -#define MULTIBOOT_HEADER_TAG_INFORMATION_REQUEST 1 -#define MULTIBOOT_HEADER_TAG_ADDRESS 2 -#define MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS 3 -#define MULTIBOOT_HEADER_TAG_CONSOLE_FLAGS 4 -#define MULTIBOOT_HEADER_TAG_FRAMEBUFFER 5 -#define MULTIBOOT_HEADER_TAG_MODULE_ALIGN 6 -#define MULTIBOOT_HEADER_TAG_EFI_BS 7 -#define MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI32 8 -#define MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI64 9 -#define MULTIBOOT_HEADER_TAG_RELOCATABLE 10 - -#define MULTIBOOT_ARCHITECTURE_I386 0 -#define MULTIBOOT_ARCHITECTURE_MIPS32 4 -#define MULTIBOOT_HEADER_TAG_OPTIONAL 1 - -#define MULTIBOOT_LOAD_PREFERENCE_NONE 0 -#define MULTIBOOT_LOAD_PREFERENCE_LOW 1 -#define MULTIBOOT_LOAD_PREFERENCE_HIGH 2 - -#define MULTIBOOT_CONSOLE_FLAGS_CONSOLE_REQUIRED 1 -#define MULTIBOOT_CONSOLE_FLAGS_EGA_TEXT_SUPPORTED 2 - -#ifndef ASM_FILE - -struct multiboot_header { - /* Must be MULTIBOOT_MAGIC - see above. */ - u32 magic; - - /* ISA */ - u32 architecture; - - /* Total header length. */ - u32 header_length; - - /* The above fields plus this one must equal 0 mod 2^32. */ - u32 checksum; -}; - -struct multiboot_header_tag { - u16 type; - u16 flags; - u32 size; -}; - -struct multiboot_header_tag_information_request { - u16 type; - u16 flags; - u32 size; - u32 requests[0]; -}; - -struct multiboot_header_tag_address { - u16 type; - u16 flags; - u32 size; - u32 header_addr; - u32 load_addr; - u32 load_end_addr; - u32 bss_end_addr; -}; - -struct multiboot_header_tag_entry_address { - u16 type; - u16 flags; - u32 size; - u32 entry_addr; -}; - -struct multiboot_header_tag_console_flags { - u16 type; - u16 flags; - u32 size; - u32 console_flags; -}; - -struct multiboot_header_tag_framebuffer { - u16 type; - u16 flags; - u32 size; - u32 width; - u32 height; - u32 depth; -}; - -struct multiboot_header_tag_module_align { - u16 type; - u16 flags; - u32 size; -}; - -struct multiboot_header_tag_relocatable { - u16 type; - u16 flags; - u32 size; - u32 min_addr; - u32 max_addr; - u32 align; - u32 preference; -}; - -struct multiboot_color { - u8 red; - u8 green; - u8 blue; -}; - -struct multiboot_mmap_entry { - u64 addr; - u64 len; -#define MULTIBOOT_MEMORY_AVAILABLE 1 -#define MULTIBOOT_MEMORY_RESERVED 2 -#define MULTIBOOT_MEMORY_ACPI_RECLAIMABLE 3 -#define MULTIBOOT_MEMORY_NVS 4 -#define MULTIBOOT_MEMORY_BADRAM 5 - u32 type; - u32 zero; -}; -typedef struct multiboot_mmap_entry multiboot_memory_map_t; - -struct multiboot_tag { - u32 type; - u32 size; -}; - -struct multiboot_tag_string { - u32 type; - u32 size; - char string[0]; -}; - -struct multiboot_tag_module { - u32 type; - u32 size; - u32 mod_start; - u32 mod_end; - char cmdline[0]; -}; - -struct multiboot_tag_basic_meminfo { - u32 type; - u32 size; - u32 mem_lower; - u32 mem_upper; -}; - -struct multiboot_tag_bootdev { - u32 type; - u32 size; - u32 biosdev; - u32 slice; - u32 part; -}; - -struct multiboot_tag_mmap { - u32 type; - u32 size; - u32 entry_size; - u32 entry_version; - struct multiboot_mmap_entry entries[0]; -}; - -struct multiboot_vbe_info_block { - u8 external_specification[512]; -}; - -struct multiboot_vbe_mode_info_block { - u8 external_specification[256]; -}; - -struct multiboot_tag_vbe { - u32 type; - u32 size; - - u16 vbe_mode; - u16 vbe_interface_seg; - u16 vbe_interface_off; - u16 vbe_interface_len; - - struct multiboot_vbe_info_block vbe_control_info; - struct multiboot_vbe_mode_info_block vbe_mode_info; -}; - -struct multiboot_tag_framebuffer_common { - u32 type; - u32 size; - - u64 framebuffer_addr; - u32 framebuffer_pitch; - u32 framebuffer_width; - u32 framebuffer_height; - u8 framebuffer_bpp; -#define MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED 0 -#define MULTIBOOT_FRAMEBUFFER_TYPE_RGB 1 -#define MULTIBOOT_FRAMEBUFFER_TYPE_EGA_TEXT 2 - u8 framebuffer_type; - u16 reserved; -}; - -struct multiboot_tag_framebuffer { - struct multiboot_tag_framebuffer_common common; - - union { - struct { - u16 framebuffer_palette_num_colors; - struct multiboot_color framebuffer_palette[0]; - }; - struct { - u8 framebuffer_red_field_position; - u8 framebuffer_red_mask_size; - u8 framebuffer_green_field_position; - u8 framebuffer_green_mask_size; - u8 framebuffer_blue_field_position; - u8 framebuffer_blue_mask_size; - }; - }; -}; - -struct multiboot_tag_elf_sections { - u32 type; - u32 size; - u32 num; - u32 entsize; - u32 shndx; - char sections[0]; -}; - -struct multiboot_tag_apm { - u32 type; - u32 size; - u16 version; - u16 cseg; - u32 offset; - u16 cseg_16; - u16 dseg; - u16 flags; - u16 cseg_len; - u16 cseg_16_len; - u16 dseg_len; -}; - -struct multiboot_tag_efs32 { - u32 type; - u32 size; - u32 pointer; -}; - -struct multiboot_tag_efi64 { - u32 type; - u32 size; - u64 pointer; -}; - -struct multiboot_tag_smbios { - u32 type; - u32 size; - u8 major; - u8 minor; - u8 reserved[6]; - u8 tables[0]; -}; - -struct multiboot_tag_old_acpi { - u32 type; - u32 size; - u8 rsdp[0]; -}; - -struct multiboot_tag_new_acpi { - u32 type; - u32 size; - u8 rsdp[0]; -}; - -struct multiboot_tag_network { - u32 type; - u32 size; - u8 dhcpack[0]; -}; - -struct multiboot_tag_efi_mmap { - u32 type; - u32 size; - u32 descr_size; - u32 descr_vers; - u8 efi_mmap[0]; -}; - -struct multiboot_tag_efs32_ih { - u32 type; - u32 size; - u32 pointer; -}; - -struct multiboot_tag_efi64_ih { - u32 type; - u32 size; - u64 pointer; -}; - -struct multiboot_tag_load_base_addr { - u32 type; - u32 size; - u32 load_base_addr; -}; - -void multiboot_parse(); - -#endif - -#endif
\ No newline at end of file diff --git a/src/kernel/net/network.h b/src/kernel/net/network.h deleted file mode 100644 index b2a2696..0000000 --- a/src/kernel/net/network.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef MELVIX_NETWORK_H -#define MELVIX_NETWORK_H - -void rtl8139_install(); - -void network_install() -{ -#ifdef rtl8139 - rtl8139_install(); -#endif -} - -#endif
\ No newline at end of file diff --git a/src/kernel/net/rtl8139.c b/src/kernel/net/rtl8139.c deleted file mode 100644 index f7e213b..0000000 --- a/src/kernel/net/rtl8139.c +++ /dev/null @@ -1,103 +0,0 @@ -#include <interrupts/interrupts.h> -#include <io/io.h> -#include <lib/stdio.h> -#include <memory/alloc.h> -#include <pci/pci.h> -#include <system.h> - -int rtl_irq = 0; -u8 mac[6]; -u8 *rtl_rx_buffer; -u32 rtl_iobase = 0; -u32 rtl_device_pci = 0x00000000; - -void find_rtl(u32 device, u16 vendor_id, u16 device_id, void *extra) -{ - if ((vendor_id == 0x10ec) && (device_id == 0x8139)) { - *((u32 *)extra) = device; - } -} - -void rtl8139_irq_handler(struct regs *r) -{ - log("RTL INT!"); - u16 status = inw((u16)(rtl_iobase + 0x3E)); - if (!status) - return; - outw((u16)(rtl_iobase + 0x3E), status); - - if (status & 0x01 || status & 0x02) { - while ((inw((u16)(rtl_iobase + 0x37)) & 0x01) == 0) { - log("RECEIVE"); - // RECEIVE - } - } -} - -int rtl8139_init(void) -{ - if (rtl_device_pci) { - u16 command_reg = (u16)pci_read_field(rtl_device_pci, PCI_COMMAND, 4); - - if (command_reg & (1 << 2)) { - } else { - command_reg |= (1 << 2); - pci_write_field(rtl_device_pci, PCI_COMMAND, command_reg); - } - - rtl_irq = pci_get_interrupt(rtl_device_pci); - irq_install_handler(rtl_irq, rtl8139_irq_handler); - - u32 rtl_bar0 = pci_read_field(rtl_device_pci, PCI_BAR0, 4); - // u32 rtl_bar1 = pci_read_field(rtl_device_pci, PCI_BAR1, 4); - - rtl_iobase = 0x00000000; - - if (rtl_bar0 & 0x00000001) - rtl_iobase = rtl_bar0 & 0xFFFFFFFC; - else - warn("RTL8139 should be using an I/O BAR!"); - - // Get mac address - for (int i = 0; i < 6; ++i) - mac[i] = inb((u16)(rtl_iobase + 0x00 + i)); - debug("Mac address: %x:%x:%x:%x:%x:%x", mac[0], mac[1], mac[2], mac[3], mac[4], - mac[5]); - - // Activate (turn on) - outb((u16)(rtl_iobase + 0x52), 0x0); - - // Reset - outb((u16)(rtl_iobase + 0x37), 0x10); - while ((inb((u16)(rtl_iobase + 0x37)) & 0x10) != 0) { - } - - // Set receive buffer - rtl_rx_buffer = (u8 *)malloc(8192 + 16); - outl((u16)(rtl_iobase + 0x30), (u32)rtl_rx_buffer); - - // Enable ISR - outw((u16)(rtl_iobase + 0x3C), 0x0005); - - // Accept packets - outl((u16)(rtl_iobase + 0x44), 0xf | (1 << 7)); - - // Enable receive and transmitter - outb((u16)(rtl_iobase + 0x37), 0x0C); - } else { - return -1; - } - return 0; -} - -void rtl8139_install() -{ - pci_scan(&find_rtl, -1, &rtl_device_pci); - if (!rtl_device_pci) { - warn("No rtl8139 network card found"); - return; - } - - if (rtl8139_init() == 0) - info("Installed rtl8139 network driver"); -}
\ No newline at end of file diff --git a/src/kernel/pci/pci.c b/src/kernel/pci/pci.c deleted file mode 100644 index 6eca302..0000000 --- a/src/kernel/pci/pci.c +++ /dev/null @@ -1,140 +0,0 @@ -#include <io/io.h> -#include <lib/lib.h> -#include <pci/pci.h> -#include <stdint.h> -#include <system.h> - -void pci_write_field(u32 device, int field, u32 value) -{ - outl(PCI_ADDRESS_PORT, pci_get_addr(device, field)); - outl(PCI_VALUE_PORT, value); -} - -u32 pci_read_field(u32 device, int field, int size) -{ - outl(PCI_ADDRESS_PORT, pci_get_addr(device, field)); - - if (size == 4) { - u32 t = inl(PCI_VALUE_PORT); - return t; - } else if (size == 2) { - u16 t = inw((u16)(PCI_VALUE_PORT + (field & 2))); - return t; - } else if (size == 1) { - u8 t = inb((u16)(PCI_VALUE_PORT + (field & 3))); - return t; - } - return 0xFFFF; -} - -u16 pci_find_type(u32 dev) -{ - return (u16)((pci_read_field(dev, PCI_CLASS, 1) << 8) | - pci_read_field(dev, PCI_SUBCLASS, 1)); -} - -void pci_scan_hit(pci_func_t f, u32 dev, void *extra) -{ - int dev_vend = (int)pci_read_field(dev, PCI_VENDOR_ID, 2); - int dev_dvid = (int)pci_read_field(dev, PCI_DEVICE_ID, 2); - - f(dev, (u16)dev_vend, (u16)dev_dvid, extra); -} - -void pci_scan_func(pci_func_t f, int type, int bus, int slot, int func, void *extra) -{ - u32 dev = pci_box_device(bus, slot, func); - if (type == -1 || type == pci_find_type(dev)) - pci_scan_hit(f, dev, extra); - if (pci_find_type(dev) == PCI_TYPE_BRIDGE) - pci_scan_bus(f, type, (int)pci_read_field(dev, PCI_SECONDARY_BUS, 1), extra); -} - -void pci_scan_slot(pci_func_t f, int type, int bus, int slot, void *extra) -{ - u32 dev = pci_box_device(bus, slot, 0); - if (pci_read_field(dev, PCI_VENDOR_ID, 2) == PCI_NONE) - return; - pci_scan_func(f, type, bus, slot, 0, extra); - if (!pci_read_field(dev, PCI_HEADER_TYPE, 1)) - return; - for (int func = 1; func < 8; func++) { - dev = pci_box_device(bus, slot, func); - if (pci_read_field(dev, PCI_VENDOR_ID, 2) != PCI_NONE) - pci_scan_func(f, type, bus, slot, func, extra); - } -} - -void pci_scan_bus(pci_func_t f, int type, int bus, void *extra) -{ - for (int slot = 0; slot < 32; ++slot) - pci_scan_slot(f, type, bus, slot, extra); -} - -void pci_scan(pci_func_t f, int type, void *extra) -{ - if ((pci_read_field(0, PCI_HEADER_TYPE, 1) & 0x80) == 0) { - pci_scan_bus(f, type, 0, extra); - return; - } - - for (int func = 0; func < 8; ++func) { - u32 dev = pci_box_device(0, 0, func); - if (pci_read_field(dev, PCI_VENDOR_ID, 2) != PCI_NONE) - pci_scan_bus(f, type, func, extra); - else - break; - } -} - -static void find_isa_bridge(u32 device, u16 vendor_id, u16 device_id, void *extra) -{ - if (vendor_id == 0x8086 && (device_id == 0x7000 || device_id == 0x7110)) - *((u32 *)extra) = device; -} - -static u32 pci_isa = 0; -static u8 pci_remaps[4] = { 0 }; - -void pci_remap() -{ - pci_scan(&find_isa_bridge, -1, &pci_isa); - if (pci_isa) { - for (int i = 0; i < 4; ++i) { - pci_remaps[i] = (u8)pci_read_field(pci_isa, 0x60 + i, 1); - if (pci_remaps[i] == 0x80) { - pci_remaps[i] = (u8)(10 + (i % 1)); - } - } - u32 out = 0; - memcpy(&out, &pci_remaps, 4); - pci_write_field(pci_isa, 0x60, out); - } -} - -int pci_get_interrupt(u32 device) -{ - if (pci_isa) { - u32 irq_pin = pci_read_field(device, 0x3D, 1); - if (irq_pin == 0) - return (int)pci_read_field(device, PCI_INTERRUPT_LINE, 1); - int pirq = (int)(irq_pin + pci_extract_slot(device) - 2) % 4; - int int_line = (int)pci_read_field(device, PCI_INTERRUPT_LINE, 1); - - if (pci_remaps[pirq] >= 0x80) { - if (int_line == 0xFF) { - int_line = 10; - pci_write_field(device, PCI_INTERRUPT_LINE, (u32)int_line); - } - pci_remaps[pirq] = (u8)int_line; - u32 out = 0; - memcpy(&out, &pci_remaps, 4); - pci_write_field(pci_isa, 0x60, out); - return int_line; - } - pci_write_field(device, PCI_INTERRUPT_LINE, pci_remaps[pirq]); - return pci_remaps[pirq]; - } else { - return (int)pci_read_field(device, PCI_INTERRUPT_LINE, 1); - } -}
\ No newline at end of file diff --git a/src/kernel/pci/pci.h b/src/kernel/pci/pci.h deleted file mode 100644 index 369f2d2..0000000 --- a/src/kernel/pci/pci.h +++ /dev/null @@ -1,108 +0,0 @@ -#ifndef MELVIX_PCI_H -#define MELVIX_PCI_H - -#include <stdint.h> - -#define PCI_VENDOR_ID 0x00 // 2 -#define PCI_DEVICE_ID 0x02 // 2 -#define PCI_COMMAND 0x04 // 2 -#define PCI_STATUS 0x06 // 2 -#define PCI_REVISION_ID 0x08 // 1 - -#define PCI_PROG_IF 0x09 // 1 -#define PCI_SUBCLASS 0x0a // 1 -#define PCI_CLASS 0x0b // 1 -#define PCI_CACHE_LINE_SIZE 0x0c // 1 -#define PCI_LATENCY_TIMER 0x0d // 1 -#define PCI_HEADER_TYPE 0x0e // 1 -#define PCI_BIST 0x0f // 1 -#define PCI_BAR0 0x10 // 4 -#define PCI_BAR1 0x14 // 4 -#define PCI_BAR2 0x18 // 4 -#define PCI_BAR3 0x1C // 4 -#define PCI_BAR4 0x20 // 4 -#define PCI_BAR5 0x24 // 4 - -#define PCI_INTERRUPT_LINE 0x3C // 1 - -#define PCI_SECONDARY_BUS 0x19 // 1 - -#define PCI_HEADER_TYPE_DEVICE 0 -#define PCI_HEADER_TYPE_BRIDGE 1 -#define PCI_HEADER_TYPE_CARDBUS 2 - -#define PCI_TYPE_BRIDGE 0x0604 -#define PCI_TYPE_SATA 0x0106 - -#define PCI_ADDRESS_PORT 0xCF8 -#define PCI_VALUE_PORT 0xCFC - -#define PCI_NONE 0xFFFF - -typedef void (*pci_func_t)(u32 device, u16 vendor_id, u16 device_id, void *extra); - -struct pci_device_descriptor { - u32 port_base; - u32 interrupt; - - u8 bus; - u8 slot; - u8 function; - - u16 vendor_id; - u16 device_id; - - u8 class_id; - u8 subclass_id; - u8 interface_id; - - u8 revision; -}; - -static inline int pci_extract_bus(u32 device) -{ - return (u8)((device >> 16)); -} - -static inline int pci_extract_slot(u32 device) -{ - return (u8)((device >> 8)); -} - -static inline int pci_extract_func(u32 device) -{ - return (u8)(device); -} - -static inline u32 pci_get_addr(u32 device, int field) -{ - return 0x80000000 | (pci_extract_bus(device) << 16) | (pci_extract_slot(device) << 11) | - (pci_extract_func(device) << 8) | ((field)&0xFC); -} - -static inline u32 pci_box_device(int bus, int slot, int func) -{ - return (u32)((bus << 16) | (slot << 8) | func); -} - -u32 pci_read_field(u32 device, int field, int size); - -void pci_write_field(u32 device, int field, u32 value); - -u16 pci_find_type(u32 dev); - -void pci_scan_hit(pci_func_t f, u32 dev, void *extra); - -void pci_scan_func(pci_func_t f, int type, int bus, int slot, int func, void *extra); - -void pci_scan_slot(pci_func_t f, int type, int bus, int slot, void *extra); - -void pci_scan_bus(pci_func_t f, int type, int bus, void *extra); - -void pci_scan(pci_func_t f, int type, void *extra); - -void pci_remap(); - -int pci_get_interrupt(u32 device); - -#endif
\ No newline at end of file diff --git a/src/kernel/smbios/smbios.c b/src/kernel/smbios/smbios.c deleted file mode 100644 index 3089d29..0000000 --- a/src/kernel/smbios/smbios.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <multiboot.h> -#include <smbios/smbios.h> -#include <stddef.h> -#include <system.h> - -void smbios_init(struct multiboot_tag_smbios *tag) -{ - log("%s", ((struct smbios_0 *)tag->tables)->vendor); - return; -}
\ No newline at end of file diff --git a/src/kernel/smbios/smbios.h b/src/kernel/smbios/smbios.h deleted file mode 100644 index 236761a..0000000 --- a/src/kernel/smbios/smbios.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef MELVIX_SMBIOS_H -#define MELVIX_SMBIOS_H - -#include <multiboot.h> -#include <stdint.h> - -struct smbios_0 { - char *vendor; - char *bios_version; - u16 bios_start; - char *bios_release_data; - u8 bios_size; - u64 bios_characteristics; -}; - -struct smbios_1 { - char *manufacturer; - char *product_name; - char *version; - char *serial_number; - u8 uuid[16]; - u8 wakeup_type; -}; - -void smbios_init(struct multiboot_tag_smbios *tag); - -#endif
\ No newline at end of file diff --git a/src/kernel/sound/frequency.c b/src/kernel/sound/frequency.c deleted file mode 100644 index caa4b07..0000000 --- a/src/kernel/sound/frequency.c +++ /dev/null @@ -1,34 +0,0 @@ -#include <io/io.h> -#include <stdint.h> -#include <timer/timer.h> - -void play_sound(u32 frequency) -{ - u32 divided; - u8 tmp; - - divided = 1193180 / frequency; - outb(0x43, 0xb6); - outb(0x42, (u8)(divided)); - outb(0x42, (u8)(divided >> 8)); - - tmp = inb(0x61); - if (tmp != (tmp | 3)) { - outb(0x61, (u8)(tmp | 3)); - } -} - -static void shut_up() -{ - u8 tmp = (u8)(inb(0x61) & 0xFC); - - outb(0x61, tmp); -} - -// Make a beep -void beep(u32 frequency, u32 ticks) -{ - play_sound(frequency); - timer_wait((int)ticks); - shut_up(); -}
\ No newline at end of file diff --git a/src/kernel/sound/sound.h b/src/kernel/sound/sound.h deleted file mode 100644 index 001ef92..0000000 --- a/src/kernel/sound/sound.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef MELVIX_SOUND_H -#define MELVIX_SOUND_H - -#include <stdint.h> - -/** - * Beep in specific frequency for amount of ticks - * @param frequency The frequency of the beep - * @param ticks The duration in ticks - */ -void beep(u32 frequency, u32 ticks); - -#endif
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_exec.c b/src/kernel/syscall/actions/sys_exec.c deleted file mode 100644 index 049d085..0000000 --- a/src/kernel/syscall/actions/sys_exec.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <tasks/process.h> - -u32 sys_exec(char *path) -{ - return uexec(path); -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_exit.c b/src/kernel/syscall/actions/sys_exit.c deleted file mode 100644 index eb019ab..0000000 --- a/src/kernel/syscall/actions/sys_exit.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <stdint.h> -#include <tasks/process.h> - -u32 sys_exit(u32 code) -{ - process_suspend(current_proc->pid); - return code; -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_free.c b/src/kernel/syscall/actions/sys_free.c deleted file mode 100644 index 32e9ba8..0000000 --- a/src/kernel/syscall/actions/sys_free.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <memory/alloc.h> -#include <stdint.h> - -u32 sys_free(u32 ptr) -{ - free((void *)ptr); - return 0; -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_get.c b/src/kernel/syscall/actions/sys_get.c deleted file mode 100644 index 8a4a643..0000000 --- a/src/kernel/syscall/actions/sys_get.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> - -u32 sys_get(u32 id) -{ - // TODO: Implement get syscall - return -1; -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_get_pid.c b/src/kernel/syscall/actions/sys_get_pid.c deleted file mode 100644 index 1184ce7..0000000 --- a/src/kernel/syscall/actions/sys_get_pid.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <tasks/process.h> - -u32 sys_get_pid() -{ - return current_proc->pid; -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_malloc.c b/src/kernel/syscall/actions/sys_malloc.c deleted file mode 100644 index c68606b..0000000 --- a/src/kernel/syscall/actions/sys_malloc.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <memory/alloc.h> -#include <stdint.h> - -u32 sys_malloc(u32 count) -{ - return (u32)malloc(count); -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_map.c b/src/kernel/syscall/actions/sys_map.c deleted file mode 100644 index 5af2c2a..0000000 --- a/src/kernel/syscall/actions/sys_map.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <events/event.h> -#include <stdint.h> - -u32 sys_map(u32 id, u8 *function) -{ - event_map(id, function); - return -1; -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_read.c b/src/kernel/syscall/actions/sys_read.c deleted file mode 100644 index b0428a8..0000000 --- a/src/kernel/syscall/actions/sys_read.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <fs/fs.h> -#include <stdint.h> - -u32 sys_read(char *path, u32 offset, u32 count, u8 *buf) -{ - return read(path, offset, count, buf); -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_spawn.c b/src/kernel/syscall/actions/sys_spawn.c deleted file mode 100644 index e3fa790..0000000 --- a/src/kernel/syscall/actions/sys_spawn.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <tasks/process.h> - -u32 sys_spawn(char *path) -{ - return uspawn(path); -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_wait.c b/src/kernel/syscall/actions/sys_wait.c deleted file mode 100644 index 23d4639..0000000 --- a/src/kernel/syscall/actions/sys_wait.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <io/io.h> -#include <stdint.h> -#include <tasks/process.h> - -u32 sys_wait(u32 pid, u32 *status, u32 options) -{ - /* if (pid > 0) */ - /* return process_wait_pid(pid, status); */ - return -1; -}
\ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_write.c b/src/kernel/syscall/actions/sys_write.c deleted file mode 100644 index 585a545..0000000 --- a/src/kernel/syscall/actions/sys_write.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <fs/fs.h> -#include <stdint.h> - -u32 sys_write(char *path, u32 offset, u32 count, u8 *buf) -{ - return write(path, offset, count, buf); -}
\ No newline at end of file diff --git a/src/kernel/syscall/syscall.c b/src/kernel/syscall/syscall.c deleted file mode 100644 index 21738f8..0000000 --- a/src/kernel/syscall/syscall.c +++ /dev/null @@ -1,44 +0,0 @@ -#include <common.h> -#include <interrupts/interrupts.h> -#include <io/io.h> -#include <lib/stdio.h> -#include <stdint.h> -#include <syscall/syscall.h> -#include <system.h> -#include <tasks/process.h> - -typedef u32 (*syscall_func)(u32, ...); - -u32 (*syscalls[])() = { [SYS_HALT] = (u32(*)())halt_loop, // DEBUG! - [SYS_EXIT] = sys_exit, - [SYS_READ] = sys_read, - [SYS_WRITE] = sys_write, - [SYS_EXEC] = sys_exec, - [SYS_SPAWN] = sys_spawn, - [SYS_WAIT] = sys_wait, - [SYS_GET_PID] = sys_get_pid, - [SYS_MALLOC] = sys_malloc, - [SYS_FREE] = sys_free, - [SYS_GET] = sys_get, - [SYS_MAP] = sys_map }; - -void syscall_handler(struct regs *r) -{ - if (r->eax >= sizeof(syscalls) / sizeof(*syscalls)) - return; - - syscall_func location = (syscall_func)syscalls[r->eax]; - if (!location) - return; - - log("[SYSCALL] %d at [0x%x] with 0x%x 0x%x 0x%x 0x%x", r->eax, location, r->ebx, r->ecx, - r->edx, r->esi, r->edi); - - r->eax = location(r->ebx, r->ecx, r->edx, r->esi, r->edi); - debug("Finished syscall"); -} - -void syscalls_install() -{ - isr_install_handler(0x80, syscall_handler); -}
\ No newline at end of file diff --git a/src/kernel/syscall/syscall.h b/src/kernel/syscall/syscall.h deleted file mode 100644 index d2c50c0..0000000 --- a/src/kernel/syscall/syscall.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef MELVIX_SYSCALL_H -#define MELVIX_SYSCALL_H - -#include <interrupts/interrupts.h> -#include <stdint.h> - -extern void idt_syscall(); - -void syscalls_install(); - -u32 sys_exit(u32 code); - -u32 sys_read(char *path, u32 offset, u32 count, u8 *buf); - -u32 sys_write(char *path, u32 offset, u32 count, u8 *buf); - -u32 sys_exec(char *path); - -u32 sys_spawn(char *path); - -u32 sys_wait(u32 pid, u32 *status, u32 options); - -u32 sys_get_pid(); - -u32 sys_malloc(u32 count); - -u32 sys_free(u32 ptr); - -u32 sys_get(u32 id); - -u32 sys_map(u32 id, u8 *function); - -#endif
\ No newline at end of file diff --git a/src/kernel/system.c b/src/kernel/system.c deleted file mode 100644 index 6ddae9c..0000000 --- a/src/kernel/system.c +++ /dev/null @@ -1,95 +0,0 @@ -#include <graphics/vesa.h> -#include <io/io.h> -#include <lib/stdio.h> -#include <lib/stdlib.h> -#include <lib/string.h> -#include <memory/paging.h> -#include <stdarg.h> -#include <timer/timer.h> - -void _debug(const char *f, const char *fmt, ...) -{ - serial_printf(MAG "[%s] " RES, f); - va_list args; - va_start(args, fmt); - serial_vprintf(fmt, args); - va_end(args); - - serial_put('\n'); -} - -void _info(const char *f, const char *fmt, ...) -{ - serial_printf(BLU "[%s] " RES, f); - va_list args; - va_start(args, fmt); - serial_vprintf(fmt, args); - va_end(args); - - serial_put('\n'); -} - -void _warn(const char *f, const char *fmt, ...) -{ - serial_printf(YEL "[%s] " RES, f); - va_list args; - va_start(args, fmt); - serial_vprintf(fmt, args); - va_end(args); - - serial_put('\n'); -} - -void _log(const char *f, const char *fmt, ...) -{ - serial_printf(CYN "[%s] " RES, f); - va_list args; - va_start(args, fmt); - serial_vprintf(fmt, args); - va_end(args); - - serial_put('\n'); -} - -const char *random_message[10] = { "Uh... Did I do that?", - "Layer 8 problem!", - "Oops.", - "DON'T PANIC!", - "Must be a typo.", - "I'm tired of this ;(", - "PC LOAD LETTER", - "Have you tried turning it off and on again?", - "Call 01189998819991197253 pls", - "Please fix me!" }; - -void _panic(const char *f, const char *msg) -{ - cli(); - _log(f, RED "PNC: %s - Halting system!" RES, msg); - //printf("[%s] PNC: %s - Halting system!\n\n", f, msg); - //printf("> %s", random_message[get_time() % 10]); - halt_loop(); -} - -void _assert(const char *file, int line, const char *func, const char *exp) -{ - cli(); - serial_printf(RED "%s:%d: %s: Assertion '%s' failed\n" RES, file, line, func, exp); - halt_loop(); -} - -void halt_loop() -{ - debug("Halted."); - cli(); -loop: - hlt(); - goto loop; -} - -void v86(u8 code, regs16_t *regs) -{ - paging_disable(); - int32(code, regs); - paging_enable(); -}
\ No newline at end of file diff --git a/src/kernel/system.h b/src/kernel/system.h deleted file mode 100644 index 3972151..0000000 --- a/src/kernel/system.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef MELVIX_SYSTEM_H -#define MELVIX_SYSTEM_H - -#include <multiboot.h> -#include <stddef.h> -#include <stdint.h> - -// Passed by low level things -u32 multiboot_address; -extern u32 text_start; -extern u32 data_start; -extern u32 bss_start; -extern u32 kernel_end; - -/** - * The ASM registers as packed structure - */ -typedef struct __attribute__((packed)) { - u16 di, si, bp, sp, bx, dx, cx, ax; - u16 gs, fs, es, ds, eflags; -} regs16_t; - -/** - * Execute BIOS interrupts by switching to real mode - * @param intnum The interrupt number (e.g. 0x10) - * @param regs The ASM registers - */ -extern void int32(u8 intnum, regs16_t *regs); - -// Filename macro -#define __FILENAME__ \ - (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__) - -/** - * Display a general log message - * @param fmt The message - */ -void _debug(const char *f, const char *fmt, ...); -#define debug(fmt, ...) _debug(__func__, fmt, ##__VA_ARGS__) - -/** - * Display an information message - * @param fmt The information - */ -void _info(const char *f, const char *fmt, ...); -#define info(fmt, ...) _info(__func__, fmt, ##__VA_ARGS__) - -/** - * Display a warning message - * @param fmt The warning cause/reason - */ -void _warn(const char *f, const char *fmt, ...); -#define warn(fmt, ...) _warn(__func__, fmt, ##__VA_ARGS__) - -/** - * Log into serial console - * @param fmt The log message - */ -void _log(const char *f, const char *fmt, ...); -#define log(fmt, ...) _log(__func__, fmt, ##__VA_ARGS__) - -/** - * Halt the entire system and display a message - * @param msg The error cause/reason - */ -void _panic(const char *f, const char *msg); -#define panic(msg) _panic(__func__, msg) - -/** - * Assert that a value is non-zero, else panic - * @param x The value - */ -void _assert(const char *file, int line, const char *func, const char *exp); -#define assert(exp) (exp) ? 0 : _assert(__FILENAME__, __LINE__, __func__, #exp) - -/** - * Creates an infinite halt loop - */ -void halt_loop(); - -/** - * Executes int32 with paging disable/enable - * @param code The interrupt code - * @param regs The registers - */ -void v86(u8 code, regs16_t *regs); - -// Colors -#define RED "\x1B[31m" -#define GRN "\x1B[32m" -#define YEL "\x1B[33m" -#define BLU "\x1B[34m" -#define MAG "\x1B[35m" -#define CYN "\x1B[36m" -#define WHT "\x1B[37m" -#define RES "\x1B[0m" - -#endif
\ No newline at end of file diff --git a/src/kernel/tasks/process.c b/src/kernel/tasks/process.c deleted file mode 100644 index 8fd621d..0000000 --- a/src/kernel/tasks/process.c +++ /dev/null @@ -1,232 +0,0 @@ -#include <fs/elf.h> -#include <interrupts/interrupts.h> -#include <io/io.h> -#include <lib/lib.h> -#include <memory/alloc.h> -#include <memory/paging.h> -#include <stddef.h> -#include <stdint.h> -#include <system.h> -#include <tasks/process.h> -#include <timer/timer.h> - -u32 pid = 0; -u32 quantum = 42; // In ms -struct process *root; -struct process *current_proc = NULL; - -struct regs hold_root; - -extern u32 stack_hold; - -void scheduler(struct regs *regs) -{ - static int locked = 0; - spinlock(&locked); - - /* serial_put('.'); */ - /* if (quantum == 0 || current_proc->state != PROC_RUNNING) { */ - /* quantum = 42; // For next process */ - /* } else { */ - /* quantum--; */ - /* locked = 0; */ - /* return; */ - /* } */ - - serial_put('+'); - memcpy(¤t_proc->regs, regs, sizeof(struct regs)); - - timer_handler(regs); - - current_proc = current_proc->next; - if (current_proc == NULL) - current_proc = root; - - /* debug("Max pid: %d", pid); */ - /* debug("Task switch to %s with pid %d", current_proc->name, current_proc->pid); */ - - while (current_proc->state == PROC_ASLEEP) { - current_proc = current_proc->next; - if (current_proc == NULL) { - warn("No next process!"); - current_proc = root; - } - } - - memcpy(regs, ¤t_proc->regs, sizeof(struct regs)); - paging_switch_dir(current_proc->cr3); - log("%x", regs->cs); - if (regs->cs != 0x1B) { - regs->gs = 0x23; - regs->fs = 0x23; - regs->es = 0x23; - regs->ds = 0x23; - regs->cs = 0x1B; - regs->ss = 0x23; - } - - locked = 0; -} - -void process_force_switch() -{ - quantum = 0; - timer_wait(1); - //scheduler(regs); -} - -u32 hl_eip; -u32 hl_esp; -void process_init(struct process *proc) -{ - log("Initializing process %d", pid); - root = proc; - root->pid = pid++; - root->next = proc; - root->state = PROC_RUNNING; - - current_proc = root; - irq_install_handler(0, scheduler); - - hl_eip = proc->regs.eip; - hl_esp = proc->regs.esp; - paging_switch_dir(proc->cr3); - - debug("Jumping to userspace!"); - extern void userspace_jump(); - userspace_jump(); - panic("This should not happen!"); -} - -// Only for debugging purposes -void process_print_tree() -{ - serial_put('\n'); - info("PROCESS TREE"); - struct process *proc = root; - - while (proc != NULL) { - info("%s with PID %d (state: %s)", proc->name, proc->pid, - proc->state == PROC_RUNNING ? "running" : "sleeping"); - proc = proc->next; - if (proc->pid == 1) - break; - } - serial_put('\n'); -} - -u32 process_spawn(struct process *process) -{ - debug("Spawning process %d", process->pid); - process->next = current_proc->next; - current_proc->next = process; - process->state = PROC_RUNNING; - - process->parent = current_proc; - process_print_tree(); - - //process_suspend(current_proc->pid); - - return process->pid; -} - -void process_suspend(u32 pid) -{ - debug("Suspending process %d", pid); - process_print_tree(); - assert(pid != 1); - - struct process *proc = process_from_pid(pid); - - if (proc == PID_NOT_FOUND) { - warn("Couldn't find PID for suspension"); - return; - } - - proc->state = PROC_ASLEEP; - process_force_switch(); -} - -void process_wake(u32 pid) -{ - debug("Waking process %d", pid); - struct process *proc = process_from_pid(pid); - - if (proc == PID_NOT_FOUND) - return; - - proc->state = PROC_RUNNING; - process_force_switch(); -} - -struct process *process_from_pid(u32 pid) -{ - struct process *proc = root; - - while (proc != NULL) { - if (proc->pid == pid) - return proc; - - proc = proc->next; - } - - return PID_NOT_FOUND; -} - -void no_entry() -{ - panic("No entry point given!"); -} - -struct process *process_make_new() -{ - debug("Making new process %d", pid); - struct process *proc = (struct process *)valloc(sizeof(struct process)); - proc->regs.cs = 0x1B; - proc->regs.ds = 0x23; - proc->regs.ss = 0x23; - proc->regs.eip = no_entry; - proc->cr3 = (u32)paging_make_dir(); - proc->pid = pid++; - return proc; -} - -u32 kexec(char *path) -{ - debug("Starting kernel process %s", path); - struct process *proc = elf_load(path); - if (proc == NULL) - return -1; - - process_init(proc); - process_force_switch(); - return 0; -} - -u32 uexec(char *path) -{ - debug("Starting user process %s", path); - - struct process *proc = elf_load(path); - if (proc == NULL) - return -1; - - process_spawn(proc); - process_suspend(current_proc->pid); - log("Spawned"); - return 0; -} - -u32 uspawn(char *path) -{ - debug("Spawning user process %s", path); - - struct process *proc = elf_load(path); - if (proc == NULL) - return -1; - - process_spawn(proc); - log("Spawned"); - process_force_switch(); - return 0; -} diff --git a/src/kernel/tasks/process.h b/src/kernel/tasks/process.h deleted file mode 100644 index 493dbe5..0000000 --- a/src/kernel/tasks/process.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef MELVIX_PROCESS_H -#define MELVIX_PROCESS_H - -#include <interrupts/interrupts.h> -#include <memory/paging.h> -#include <stdint.h> - -struct mmap { - u32 text; - u32 bss; - u32 data; - u32 stack; -}; - -struct process { - u32 cr3; - struct regs regs; - - u32 pid; - char name[256]; - - int state; - - u32 brk; - u32 handlers[6]; - - struct process *parent; - struct process *next; -}; - -void scheduler(struct regs *regs); -void process_force_switch(); - -u32 process_spawn(struct process *process); -void process_suspend(u32 pid); -void process_wake(u32 pid); - -struct process *process_from_pid(u32 pid); - -void process_init(struct process *proc); - -struct process *process_make_new(); - -u32 kexec(char *path); - -u32 uexec(char *path); -u32 uspawn(char *path); - -extern struct process *current_proc; - -extern u32 stack_hold; - -#define PID_NOT_FOUND ((struct process *)0xFFFFFFFF) - -#define PROC_RUNNING 0 -#define PROC_ASLEEP 1 - -#define PROC_THREAD 0 -#define PROC_PROC 1 -#define PROC_ROOT 2 - -#define WAIT_ERROR (-1) -#define WAIT_OKAY 0 - -#endif
\ No newline at end of file diff --git a/src/kernel/tasks/userspace.asm b/src/kernel/tasks/userspace.asm deleted file mode 100644 index eec6cff..0000000 --- a/src/kernel/tasks/userspace.asm +++ /dev/null @@ -1,23 +0,0 @@ -global userspace_jump -extern hl_esp -extern hl_eip - -userspace_jump: - mov ax, 0x23 - mov ds, ax - mov es, ax - mov fs, ax - mov gs, ax - - mov eax, dword [hl_esp] - push 0x23 - push eax - pushf - - ; Enable interrupts - sti - - push 0x1B - push dword [hl_eip] - - iret
\ No newline at end of file diff --git a/src/kernel/timer/timer.c b/src/kernel/timer/timer.c deleted file mode 100644 index 6f8ae85..0000000 --- a/src/kernel/timer/timer.c +++ /dev/null @@ -1,44 +0,0 @@ -#include <interrupts/interrupts.h> -#include <io/io.h> -#include <stdint.h> -#include <system.h> - -u64 timer_ticks = 0; - -void timer_phase(int hz) -{ - int divisor = (int)(3579545.0 / 3.0 / (double)hz); - outb(0x43, 0x36); // 01 10 11 0b // CTR, RW, MODE, BCD - outb(0x40, (u8)(divisor & 0xFF)); - outb(0x40, (u8)(divisor >> 8)); -} - -// Executed 1000 times per second -void timer_handler(struct regs *r) -{ - timer_ticks++; -} - -// "Delay" function with CPU sleep -void timer_wait(int ticks) -{ - u32 eticks; - - eticks = timer_ticks + ticks; - while (timer_ticks < eticks) { - asm("sti//hlt//cli"); - } -} - -u32 get_time() -{ - return timer_ticks; -} - -// Install timer handler into IRQ0 -void timer_install() -{ - timer_phase(1000); - irq_install_handler(0, timer_handler); - info("Installed timer"); -}
\ No newline at end of file diff --git a/src/kernel/timer/timer.h b/src/kernel/timer/timer.h deleted file mode 100644 index 7b0401e..0000000 --- a/src/kernel/timer/timer.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef MELVIX_TIMER_H -#define MELVIX_TIMER_H - -#include <interrupts/interrupts.h> -#include <stdint.h> - -void timer_handler(struct regs *r); - -/** - * Install the timer and set the timer phase to 100 - */ -void timer_install(); - -/** - * Stop processing for specific duration - * @param ticks The duration of sleeping in ticks - */ -void timer_wait(int ticks); - -/** - * Get the current timer ticks - * @return The current timer ticks (1000 ticks = 1 second) - */ -u32 get_time(); - -#endif
\ No newline at end of file diff --git a/src/kernel/linker.ld b/src/link.ld index a55b13f..d5aa082 100644 --- a/src/kernel/linker.ld +++ b/src/link.ld @@ -25,4 +25,4 @@ SECTIONS } kernel_end = .; -}
\ No newline at end of file +} diff --git a/src/resources/conv.sh b/src/resources/conv.sh deleted file mode 100755 index f7848f1..0000000 --- a/src/resources/conv.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh -# bdf2c output formatter -# Warning! This code is really ugly and shall not be changed! - -printf "// Generated using the Spleen font and the bdf2c converter (modified using the conv.sh script)\n// Spleen font: (c) 2018-2019, Frederic Cambus, License: MIT\n // bdf2c: (c) 2009-2010 Lutz Sammer, License: AGPLv3\n\n" >font.c - -printf "#include <stdint.h>\n\nu16 cursor[19]={0b100000000000,0b110000000000,0b111000000000,0b111100000000,0b111110000000,0b111111000000,0b111111100000,0b111111110000,0b111111111000,0b111111111100,0b111111111110,0b111111111111,0b111111111111,0b111111110000,0b111101111000,0b111001111000,0b110000111100,0b000000111100,0b000000011000};\n" >>font.c - -generate() { - font_url="https://raw.githubusercontent.com/fcambus/spleen/master/spleen-$1x$2.bdf" - character_count=758 - font_height=$2 - top_lines="\nu$1 font_$font_height\[$character_count][$font_height] = {" - - mkdir -p font - cd font || exit - wget "$font_url" -O temp.bdf - bdf2c -C font.h - bdf2c -b <temp.bdf >temp.c - gcc -E -CC temp.c >final.h - - sed -i -e 1,74d final.h # Remove first 74 lines - sed -i -e :a -e '$d;N;2,1533ba' -e 'P;D' final.h # Remove last 1533 lines - - sed -i "1s/.*/$top_lines/" final.h # Prepend header - sed -i -z 's/\,\n\/\//\}\,\n\/\//g' final.h # Add closing brackets - sed -i -z "s/$font_height\n /$font_height\n\{/g" final.h # Add opening bracket - sed -i -z 's/\,\n\}/\}\n\}/g' final.h # Add closing bracket in last-1 line - sed -i 's/\/\/.*$//g' final.h # Remove all comments - sed -i -z 's/\n\n/\n/g' final.h # Remove all double new lines - sed -i -z 's/\,\n/,/g' final.h # Aaand into single lines - sed -i 's/\,0x//g' final.h # Fix bytes - sed -i 's/u12/u16/g' final.h # Fix non-existent 12 bit bound - - mv final.h "font_$2.c" - rm font.h - rm temp.* - cd .. -} - -generate 8 16 -generate 12 24 -generate 16 32 - -cat font/font* >>font.c -rm -rf font/
\ No newline at end of file diff --git a/src/resources/font.c b/src/resources/font.c deleted file mode 100644 index 5fcc66e..0000000 --- a/src/resources/font.c +++ /dev/null @@ -1,6086 +0,0 @@ -// Generated using the Spleen font and the bdf2c converter (modified using the conv.sh script) -// Spleen font: (c) 2018-2019, Frederic Cambus, License: MIT -// bdf2c: (c) 2009-2010 Lutz Sammer, License: AGPLv3 - -#include <stdint.h> - -u16 cursor[19] = { 0b100000000000, 0b110000000000, 0b111000000000, 0b111100000000, 0b111110000000, - 0b111111000000, 0b111111100000, 0b111111110000, 0b111111111000, 0b111111111100, - 0b111111111110, 0b111111111111, 0b111111111111, 0b111111110000, 0b111101111000, - 0b111001111000, 0b110000111100, 0b000000111100, 0b000000011000 }; - -u8 font_16[758][16] = { - - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x6C, 0x6C, 0xFE, 0x6C, 0x6C, 0x6C, 0x6C, 0xFE, 0x6C, 0x6C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x7E, 0xD0, 0xD0, 0xD0, 0x7C, 0x16, 0x16, 0x16, 0x16, 0xFC, 0x10, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x06, 0x66, 0x6C, 0x0C, 0x18, 0x18, 0x30, 0x36, 0x66, 0x60, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x38, 0x6C, 0x6C, 0x6C, 0x38, 0x70, 0xDA, 0xCC, 0xCC, 0x7A, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0E, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x0E, - 0x00 }, - { 0x00, 0x70, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x70, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x66, 0x3C, 0x18, 0xFF, 0x18, 0x3C, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x03, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC0, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x38, 0x78, 0x58, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC6, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x06, 0x3C, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xC0, 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFE, 0xC6, 0xC0, 0xC0, 0xFC, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFE, 0xC6, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x7C, 0xC2, 0xDA, 0xDA, 0xDA, 0xDA, 0xDE, 0xC0, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xDE, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF0, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xCC, 0xF8, 0xCC, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xE6, 0xE6, 0xD6, 0xD6, 0xCE, 0xCE, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xD6, 0x7C, 0x18, 0x0C, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x10, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFE, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xC0, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x3E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3E, - 0x00 }, - { 0x00, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x03, 0x03, - 0x00 }, - { 0x00, 0x7C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x7C, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, - 0x00 }, - { 0x00, 0x30, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x06, 0x06, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x1E, 0x30, 0x30, 0x30, 0x7C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x06, 0x06, 0xFC, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x70, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xCC, 0xD8, 0xF0, 0xF0, 0xD8, 0xCC, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xD6, 0xD6, 0xD6, 0xD6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFC, 0xC0, 0xC0, 0xC0, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x30, 0x30, 0x30, 0x7C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x10, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xD6, 0xD6, 0xD6, 0x6E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x38, 0x6C, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xFC, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x70, 0x70, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0E, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, - 0x00 }, - { 0x00, 0x70, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0E, 0x0E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x70, - 0x00 }, - { 0x00, 0x32, 0x7E, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x08, 0x7E, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0x7E, 0x08, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x38, 0x6C, 0x60, 0x60, 0x60, 0xF8, 0x60, 0x60, 0xC0, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x66, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC3, 0xC3, 0x66, 0x3C, 0x18, 0x3C, 0x18, 0x3C, 0x18, 0x18, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, - 0x00 }, - { 0x00, 0x3C, 0x66, 0x60, 0x30, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x0C, 0x06, 0x66, 0x3C, - 0x00 }, - { 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x7C, 0x82, 0x9A, 0xA2, 0xA2, 0xA2, 0x9A, 0x82, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x38, 0x0C, 0x3C, 0x4C, 0x3C, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x7C, 0x82, 0xBA, 0xAA, 0xB2, 0xAA, 0xAA, 0x82, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x38, 0x4C, 0x0C, 0x38, 0x60, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x1C, 0x26, 0x0C, 0x06, 0x26, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF6, 0xC0, 0xC0, 0xC0, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xD6, 0xD6, 0xD6, 0x76, 0x16, 0x16, 0x16, 0x16, 0x16, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, - 0x00 }, - { 0x00, 0x18, 0x38, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x40, 0xC0, 0x40, 0x42, 0x46, 0xEC, 0x18, 0x30, 0x70, 0xD4, 0x94, 0x1E, 0x04, 0x04, - 0x00 }, - { 0x00, 0x40, 0xC0, 0x40, 0x42, 0x46, 0xEC, 0x18, 0x30, 0x6C, 0xD2, 0x82, 0x0C, 0x10, 0x1E, - 0x00 }, - { 0x00, 0x60, 0x90, 0x20, 0x12, 0x96, 0x6C, 0x18, 0x30, 0x70, 0xD4, 0x94, 0x1E, 0x04, 0x04, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x30, 0x60, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x30, 0x18, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x32, 0x4C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x38, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0xD8, 0xD8, 0xD8, 0xDE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x18, 0x18, 0x30, - 0x00 }, - { 0x30, 0x18, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x6C, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x30, 0x18, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x0C, 0x18, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x66, 0x66, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0x66, 0x66, 0x66, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x32, 0x4C, 0x00, 0xC6, 0xE6, 0xE6, 0xD6, 0xD6, 0xCE, 0xCE, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x30, 0x18, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x32, 0x4C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x02, 0x7C, 0xC6, 0xCE, 0xCE, 0xD6, 0xD6, 0xE6, 0xE6, 0xC6, 0x7C, 0x80, 0x00, 0x00, - 0x00 }, - { 0x30, 0x18, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFC, 0xC0, 0xC0, 0x00, - 0x00 }, - { 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xF8, 0xCC, 0xC6, 0xC6, 0xE6, 0xDC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x30, 0x18, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x32, 0x7E, 0x4C, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x38, 0x6C, 0x38, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x16, 0x16, 0x7E, 0xD0, 0xD0, 0x6E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x18, 0x18, 0x30, - 0x00 }, - { 0x00, 0x60, 0x30, 0x18, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x30, 0x18, 0x0C, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x18, 0x3C, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0xD8, 0x70, 0xD8, 0x0C, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x32, 0x7E, 0x4C, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x30, 0x18, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x32, 0x7E, 0x4C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x02, 0x7C, 0xC6, 0xCE, 0xD6, 0xE6, 0xC6, 0x7C, 0x80, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x30, 0x18, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x6C, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xFC, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFC, 0xC0, 0xC0, 0xC0, - 0x00 }, - { 0x00, 0x00, 0x6C, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xFC, - 0x00 }, - { 0x00, 0x7C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x0C, 0x08, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x0C, 0x08, 0x06, - 0x00 }, - { 0x18, 0x30, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x10, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x38, 0x10, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x10, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x16, 0x06, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7C, 0x66, 0x66, 0x66, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x06, 0x1F, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x7C, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x7C, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x6C, 0x38, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x0C, 0x08, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x0C, 0x08, 0x06, - 0x00 }, - { 0x6C, 0x38, 0x10, 0x7E, 0xC0, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x38, 0x10, 0x00, 0x7E, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xDE, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7E, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x06, 0x06, 0xFC, - 0x00 }, - { 0x6C, 0x38, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xDE, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x6C, 0x38, 0x00, 0x7E, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x06, 0x06, 0xFC, - 0x00 }, - { 0x18, 0x18, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xDE, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x00, 0x7E, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x06, 0x06, 0xFC, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0xDE, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x18, 0x18, 0x30, - 0x00 }, - { 0x00, 0x18, 0x18, 0x30, 0x00, 0x7E, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x06, 0x06, 0xFC, - 0x00 }, - { 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0xC0, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xFF, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xF0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x32, 0x4C, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x32, 0x7E, 0x4C, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x7E, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x7E, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x66, 0x3C, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x3C, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x0C, 0x08, 0x06, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x08, 0x06, - 0x00 }, - { 0x18, 0x18, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xF7, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xEC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x66, 0x66, 0x00, 0xE6, 0x66, 0x66, 0x66, 0x66, 0x66, 0x76, 0x06, 0x06, 0x1C, - 0x00 }, - { 0x38, 0x6C, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF0, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x18, 0x3C, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x70, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xCC, 0xF8, 0xCC, 0xC6, 0xC6, 0xC6, 0xC6, 0x18, 0x18, 0x30, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xCC, 0xD8, 0xF0, 0xF0, 0xD8, 0xCC, 0xC6, 0x18, 0x18, 0x30, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x18, 0x18, 0x30, - 0x00 }, - { 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1C, 0x18, 0x18, 0x30, - 0x00 }, - { 0x6C, 0x38, 0x10, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x10, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xCC, 0xCC, 0xC0, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x36, 0x36, 0x30, 0x30, 0x30, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x60, 0x60, 0x68, 0x78, 0x70, 0xE0, 0xE0, 0x60, 0x60, 0x3E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x30, 0x30, 0x34, 0x3C, 0x38, 0x70, 0x70, 0x30, 0x30, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0xC6, 0xE6, 0xE6, 0xD6, 0xD6, 0xCE, 0xCE, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xE6, 0xE6, 0xD6, 0xD6, 0xCE, 0xCE, 0xC6, 0xC6, 0x18, 0x18, 0x30, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x18, 0x18, 0x30, - 0x00 }, - { 0x6C, 0x38, 0x10, 0xC6, 0xE6, 0xE6, 0xD6, 0xD6, 0xCE, 0xCE, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x38, 0x10, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0xC0, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xE6, 0xE6, 0xD6, 0xD6, 0xCE, 0xCE, 0xC6, 0xC6, 0x06, 0x06, 0x0C, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x06, 0x06, 0x0C, - 0x00 }, - { 0x00, 0x7C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x7C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x66, 0xCC, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x36, 0x6C, 0xD8, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xD8, 0xD8, 0xD8, 0xDE, 0xD8, 0xD8, 0xD8, 0xD8, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xD6, 0xD6, 0xDE, 0xD0, 0xD0, 0x6E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0x7E, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x18, 0x18, 0x30, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x18, 0x18, 0x30, - 0x00 }, - { 0x6C, 0x38, 0x10, 0xFC, 0xC6, 0xC6, 0xC6, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x38, 0x10, 0x00, 0x7E, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0x7E, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7E, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0x06, 0x06, 0xFC, 0x18, 0x18, 0x30, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0xFC, 0x18, 0x18, 0x30, - 0x00 }, - { 0x6C, 0x38, 0x10, 0x7E, 0xC0, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x38, 0x10, 0x00, 0x7E, 0xC0, 0xC0, 0x7C, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x18, - 0x00 }, - { 0x00, 0x00, 0x30, 0x30, 0x30, 0x7C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1E, 0x0C, 0x0C, 0x18, - 0x00 }, - { 0x6C, 0x38, 0x10, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x10, 0x30, 0x30, 0x7C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x30, 0x30, 0x30, 0x7C, 0x30, 0x7C, 0x30, 0x30, 0x30, 0x1E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x32, 0x4C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x32, 0x7E, 0x4C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x7C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x7C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x6C, 0x38, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x38, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x38, 0x6C, 0x38, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x66, 0xCC, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x36, 0x6C, 0xD8, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x0C, 0x08, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x0C, 0x08, 0x06, - 0x00 }, - { 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xD6, 0xD6, 0xD6, 0xD6, 0x6E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x10, 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xFC, - 0x00 }, - { 0x6C, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, 0xFC, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x30, 0x00, 0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xC0, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x0C, 0x18, 0x30, 0x00, 0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x00, 0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xC0, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x18, 0x00, 0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x6C, 0x38, 0x10, 0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xC0, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x6C, 0x38, 0x10, 0x00, 0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xFE, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x1E, 0x30, 0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xDB, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x1C, 0x36, 0x60, 0xF8, 0x60, 0xF8, 0x60, 0x36, 0x1C, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, - 0x00 }, - { 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, - 0x00 }, - { 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x00 }, - { 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x01, 0x03, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC0, - 0x80 }, - { 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x03, 0x03, - 0x01 }, - { 0x81, 0xC3, 0xC3, 0x66, 0x66, 0x3C, 0x3C, 0x18, 0x18, 0x3C, 0x3C, 0x66, 0x66, 0xC3, 0xC3, - 0x81 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18 }, - { 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, 0xFF, - 0xFF }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF }, - { 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF }, - { 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 }, - { 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, - 0xFE }, - { 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, - 0xFC }, - { 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 }, - { 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, - 0xE0 }, - { 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, - 0xC0 }, - { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80 }, - { 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F }, - { 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, - 0x44 }, - { 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, - 0xAA }, - { 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, - 0x77 }, - { 0xFF, 0xFF, 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 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F }, - { 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF }, - { 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F }, - { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0 }, - { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F }, - { 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0 }, - { 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF }, - { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x60, 0x60, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x06, 0x06, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, - 0x00 }, - { 0x00, 0x00, 0xC0, 0xCC, 0xDE, 0xCC, 0xCC, 0xCC, 0x98, 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x00, - 0x00 }, - { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x38, 0x00, 0x12, 0x1A, 0x1A, 0x16, 0x16, 0x12, 0x00, - 0x00 }, - { 0x00, 0x00, 0x18, 0x24, 0x24, 0x24, 0x7E, 0x7E, 0x66, 0x66, 0x7E, 0x7E, 0x00, 0x00, 0x00, - 0x00 }, - { 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, - 0x80 }, - { 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, - 0x80 }, - { 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, - 0x01 }, - { 0x01, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, - 0x01 } -}; - -u16 font_24[758][24] = { - - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, - 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x30C0, 0x30C0, 0x7FE0, - 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x7FE0, - 0x30C0, 0x30C0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0600, 0x1FE0, 0x3600, 0x6600, 0x6600, - 0x6600, 0x6600, 0x3600, 0x1F80, 0x06C0, 0x0660, 0x0660, 0x0660, - 0x0660, 0x06C0, 0x7F80, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x38C0, 0x6D80, - 0x6D80, 0x3B00, 0x0300, 0x0600, 0x0600, 0x0C00, 0x0DC0, 0x1B60, - 0x1B60, 0x31C0, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0F00, 0x1980, 0x30C0, 0x30C0, - 0x30C0, 0x30C0, 0x1980, 0x0F00, 0x3300, 0x61A0, 0x60E0, 0x60C0, - 0x60C0, 0x31E0, 0x1F30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x00E0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0C00, - 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, - 0x0C00, 0x0C00, 0x0600, 0x0300, 0x0180, 0x00E0, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x7000, 0x1800, 0x0C00, 0x0600, 0x0300, 0x0300, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0300, 0x0300, 0x0600, 0x0C00, 0x1800, 0x7000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x30C0, 0x1980, 0x0F00, 0x0600, 0x7FE0, 0x0600, 0x0F00, 0x1980, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0600, 0x0600, 0x0600, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3FC0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0030, 0x0030, 0x0060, 0x0060, 0x00C0, 0x00C0, - 0x0180, 0x0180, 0x0300, 0x0300, 0x0600, 0x0600, 0x0C00, 0x0C00, - 0x1800, 0x1800, 0x3000, 0x3000, 0x6000, 0x6000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x60E0, 0x61E0, 0x6360, 0x6660, 0x6C60, 0x7860, 0x7060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0E00, 0x1E00, 0x3600, 0x2600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x0060, - 0x0060, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, - 0x3000, 0x6060, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x0060, - 0x0060, 0x00C0, 0x0F80, 0x00C0, 0x0060, 0x0060, 0x0060, 0x0060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6180, - 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x7FE0, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x6060, 0x6000, 0x6000, - 0x6000, 0x6000, 0x7F80, 0x00C0, 0x0060, 0x0060, 0x0060, 0x0060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FC0, 0x3060, 0x6000, 0x6000, - 0x6000, 0x6000, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x6060, 0x0060, 0x0060, - 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, - 0x0060, 0x60C0, 0x3F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x00C0, 0x0180, 0x0300, - 0x0600, 0x0C00, 0x1800, 0x3000, 0x1800, 0x0C00, 0x0600, 0x0300, - 0x0180, 0x00C0, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x1800, 0x0C00, 0x0600, - 0x0300, 0x0180, 0x00C0, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, - 0x0C00, 0x1800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x0060, - 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0600, 0x0600, 0x0000, - 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, - 0x6060, 0x6760, 0x6760, 0x6760, 0x6760, 0x6760, 0x6760, 0x67E0, - 0x6000, 0x3000, 0x1FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7F80, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x60C0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60C0, 0x7F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7F80, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60C0, 0x7F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x63E0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0E00, 0x7C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60C0, 0x6180, 0x7F00, 0x6180, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x70E0, 0x79E0, 0x6F60, - 0x6660, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x7060, 0x7060, 0x7860, - 0x7860, 0x6C60, 0x6C60, 0x6660, 0x6660, 0x6360, 0x6360, 0x61E0, - 0x61E0, 0x60E0, 0x60E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7F80, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x60C0, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6660, 0x6660, - 0x6360, 0x33C0, 0x1F80, 0x0180, 0x00C0, 0x00C0, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7F80, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x60C0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x3000, 0x1F80, 0x00C0, 0x0060, 0x0060, 0x0060, - 0x0060, 0x00C0, 0x7F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x30C0, - 0x1980, 0x0F00, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6660, 0x6F60, - 0x79E0, 0x70E0, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x30C0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x00E0, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x0060, 0x0060, 0x0060, - 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6000, - 0x6000, 0x6000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x1FE0, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, - 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, - 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1FE0, 0x0000 }, - { 0x0000, 0x0000, 0xC000, 0xC000, 0x6000, 0x6000, 0x3000, 0x3000, - 0x1800, 0x1800, 0x0C00, 0x0C00, 0x0600, 0x0600, 0x0300, 0x0300, - 0x0180, 0x0180, 0x00C0, 0x00C0, 0x0060, 0x0060, 0x0000, 0x0000 }, - { 0x0000, 0x7F80, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x7F80, 0x0000 }, - { 0x0000, 0x0000, 0x0400, 0x0E00, 0x1B00, 0x3180, 0x60C0, 0xC060, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x0C00, 0x0600, 0x0300, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60C0, 0x7F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x0060, 0x0060, 0x0060, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x07C0, 0x0E00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x3F80, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FC0, 0x00C0, 0x0060, 0x0060, 0x00C0, 0x3F80 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0C00, 0x7800 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x30C0, 0x30C0, 0x3180, 0x3300, 0x3E00, 0x3600, 0x3300, 0x3180, - 0x30C0, 0x3060, 0x3060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x7980, 0x66C0, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60C0, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x3FC0, 0x0060, 0x0060, - 0x0060, 0x0060, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x3F80, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x30C0, - 0x1980, 0x0F00, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, - 0x6660, 0x3660, 0x19E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x6060, 0x6060, 0x30C0, 0x1980, 0x0F00, 0x0F00, 0x1980, 0x30C0, - 0x30C0, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, 0x00C0, 0x7F80 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x7FE0, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, - 0x3000, 0x6000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x01E0, 0x0300, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0C00, 0x3800, 0x3800, 0x0C00, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0300, 0x01E0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3C00, 0x0600, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0180, 0x00E0, 0x00E0, 0x0180, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0600, 0x3C00, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x3860, 0x6C60, 0xC6C0, 0xC380, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x0300, - 0x1FE0, 0x3300, 0x6300, 0x6300, 0x6300, 0x6300, 0x6300, 0x6300, - 0x6300, 0x3300, 0x1FE0, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0700, 0x0D80, 0x18C0, 0x18C0, - 0x1800, 0x1800, 0x1800, 0x7F80, 0x1800, 0x1800, 0x1800, 0x1800, - 0x3000, 0x3000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x1980, - 0x0F00, 0x1F80, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x1F80, 0x0F00, - 0x1980, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x30C0, 0x30C0, - 0x1980, 0x1980, 0x0F00, 0x0F00, 0x0600, 0x3FC0, 0x0600, 0x0600, - 0x3FC0, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0F80, 0x1980, 0x3180, 0x3000, 0x1800, - 0x0E00, 0x1F80, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x1F80, 0x0700, - 0x0180, 0x00C0, 0x18C0, 0x1980, 0x1F00, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x30C0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, - 0x30C0, 0x6060, 0x6760, 0x6C60, 0x6C60, 0x6C60, 0x6C60, 0x6760, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0F00, 0x0180, 0x0180, 0x0F80, 0x1980, 0x1980, - 0x0F80, 0x0000, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0660, 0x0CC0, 0x1980, 0x3300, 0x6600, 0x3300, 0x1980, - 0x0CC0, 0x0660, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x7FE0, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, - 0x30C0, 0x6060, 0x6E60, 0x6D60, 0x6D60, 0x6E60, 0x6D60, 0x6D60, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0F00, 0x1980, 0x1980, 0x1980, 0x1980, - 0x0F00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, - 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0F00, 0x1980, 0x0180, 0x0300, 0x0600, - 0x0C00, 0x1980, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0F00, 0x1980, 0x0180, 0x0700, 0x0180, - 0x0180, 0x1980, 0x0F00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, - 0x6180, 0x73C0, 0x6E60, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3660, 0x6660, 0x6660, - 0x6660, 0x6660, 0x3660, 0x1E60, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00 }, - { 0x0000, 0x0000, 0x0000, 0x0600, 0x0E00, 0x1E00, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0F00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0F00, 0x1980, 0x1980, 0x1980, 0x1980, - 0x0F00, 0x0000, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x6600, 0x3300, 0x1980, 0x0CC0, 0x0660, 0x0CC0, 0x1980, - 0x3300, 0x6600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3800, 0x7800, 0x1800, 0x1800, 0x1860, - 0x18C0, 0x3D80, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6600, - 0x0600, 0x06C0, 0x06C0, 0x07E0, 0x00C0, 0x00C0, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3800, 0x7800, 0x1800, 0x1800, 0x1860, - 0x18C0, 0x3D80, 0x0300, 0x0600, 0x0C00, 0x1800, 0x33C0, 0x6660, - 0x0060, 0x00C0, 0x0180, 0x0300, 0x0660, 0x07E0, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x3C00, 0x6600, 0x0600, 0x1C00, 0x0600, 0x6660, - 0x3CC0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6600, - 0x0600, 0x06C0, 0x06C0, 0x07E0, 0x00C0, 0x00C0, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, - 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6000, 0x6000, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1800, 0x0C00, 0x0600, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1C60, 0x3FC0, 0x6380, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x30C0, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x1980, 0x0F00, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3300, 0x6300, 0x6300, - 0x6300, 0x6300, 0x6300, 0x7FC0, 0x6300, 0x6300, 0x6300, 0x6300, - 0x6300, 0x6300, 0x63E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00 }, - { 0x1800, 0x0C00, 0x0600, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x30C0, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0C00, 0x0600, 0x0300, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0300, 0x0600, 0x0C00, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x30C0, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7FC0, 0x60E0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0xFC60, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60E0, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1C60, 0x3FC0, 0x6380, 0x0000, 0x6060, 0x7060, 0x7060, 0x7860, - 0x7860, 0x6C60, 0x6C60, 0x6660, 0x6660, 0x6360, 0x6360, 0x61E0, - 0x61E0, 0x60E0, 0x60E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1800, 0x0C00, 0x0600, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1C60, 0x3FC0, 0x6380, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x30C0, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, - 0x30C0, 0x1980, 0x0F00, 0x0600, 0x0600, 0x0F00, 0x1980, 0x30C0, - 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0060, 0x1FE0, 0x30C0, 0x60E0, 0x61E0, - 0x61E0, 0x6360, 0x6360, 0x6660, 0x6660, 0x6C60, 0x6C60, 0x7860, - 0x7860, 0x30C0, 0x3F80, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000 }, - { 0x1800, 0x0C00, 0x0600, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x30C0, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x00E0, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60C0, 0x7F80, 0x6000, 0x6000, 0x6000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1E00, 0x3300, 0x6180, 0x6180, - 0x6180, 0x6180, 0x6300, 0x7F00, 0x6380, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x7860, 0x6CC0, 0x6780, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x0C00, 0x0600, 0x0300, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1860, 0x3C60, 0x66C0, 0x6380, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x30C0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0F00, 0x1980, 0x1980, 0x0F00, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x39E0, 0x0F60, 0x0660, 0x0660, 0x1FE0, 0x3600, 0x6600, 0x6600, - 0x6600, 0x3700, 0x1DE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00 }, - { 0x0000, 0x0000, 0x1800, 0x0C00, 0x0600, 0x0300, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x30C0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x0C00, 0x0600, 0x0300, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x30C0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x6600, 0x3C00, 0x1800, 0x3C00, 0x6600, 0x0300, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1860, 0x3C60, 0x66C0, 0x6380, 0x0000, 0x0000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x0C00, 0x0600, 0x0300, 0x0000, 0x0000, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1860, 0x3C60, 0x66C0, 0x6380, 0x0000, 0x0000, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x30C0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0600, 0x0600, 0x0000, 0x0000, 0x3FC0, 0x0000, 0x0000, 0x0600, - 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, - 0x1FB0, 0x30E0, 0x60E0, 0x61E0, 0x6360, 0x6660, 0x6C60, 0x7860, - 0x7060, 0x70C0, 0xDF80, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x0C00, 0x0600, 0x0300, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x30C0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, 0x00C0, 0x7F80 }, - { 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60C0, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 }, - { 0x0000, 0x0000, 0x0000, 0x30C0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, 0x00C0, 0x7F80 }, - { 0x0000, 0x3FC0, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FC0, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x0F00, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x1980, 0x1980, 0x0F00, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x00E0, 0x0180, 0x0180, 0x00F0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3F80, 0x00C0, 0x0060, 0x0060, 0x1FE0, 0x3060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x00C0, 0x0180, 0x0180, 0x00F0, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x1FE0, 0x3000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x1FE0, 0x3000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0600, 0x0600, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x30C0, 0x1980, 0x0F00, 0x0600, 0x0000, 0x0000, - 0x1FE0, 0x3000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x7F80, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60C0, 0x7F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x0060, 0x0060, 0x0060, 0x0060, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7FC0, 0x60E0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0xFC60, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60E0, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x03F0, 0x0060, 0x0060, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3FC0, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FC0, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x0F00, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x1980, 0x1980, 0x0F00, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0600, 0x0600, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x00C0, 0x0180, 0x0180, 0x00F0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x00C0, 0x0180, 0x0180, 0x00F0, 0x0000 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x30C0, 0x1980, 0x0F00, 0x0600, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x63E0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FC0, 0x00C0, 0x0060, 0x0060, 0x00C0, 0x3F80 }, - { 0x1980, 0x1980, 0x0F00, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x63E0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x1980, 0x1980, 0x0F00, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FC0, 0x00C0, 0x0060, 0x0060, 0x00C0, 0x3F80 }, - { 0x0000, 0x0600, 0x0600, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x63E0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FC0, 0x00C0, 0x0060, 0x0060, 0x00C0, 0x3F80 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x63E0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00 }, - { 0x0000, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FC0, 0x00C0, 0x0060, 0x0060, 0x00C0, 0x3F80 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0xFFF0, 0x6060, - 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0xFC00, 0x6000, 0x6000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1C60, 0x3FC0, 0x6380, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1860, 0x3C60, 0x66C0, 0x6380, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3FC0, 0x0000, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FC0, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x0F00, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x1980, 0x1980, 0x0F00, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0180, 0x0300, 0x0300, 0x01E0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0300, 0x0600, 0x0600, 0x03C0, 0x0000 }, - { 0x0000, 0x0600, 0x0600, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x3FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0xF1E0, 0x60C0, 0x60C0, 0x60C0, - 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, - 0x60C0, 0x61C0, 0xF780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x30C0, 0x0000, 0x0000, - 0xF0C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, - 0x30C0, 0x30C0, 0x3CC0, 0x00C0, 0x00C0, 0x00C0, 0x0180, 0x0F00 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x3FC0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0E00, 0x7C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0C00, 0x7800 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x60C0, 0x6180, 0x7F00, 0x6180, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x30C0, 0x30C0, 0x3180, 0x3300, 0x3E00, 0x3600, 0x3300, 0x3180, - 0x30C0, 0x3060, 0x3060, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x30C0, 0x30C0, 0x3180, 0x3300, 0x3600, 0x3C00, 0x3600, 0x3300, - 0x3180, 0x30C0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x6180, 0x6180, 0x6000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0CC0, 0x0CC0, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6C00, 0x7800, 0x7000, 0x6000, 0xE000, 0xE000, 0x6000, 0x6000, - 0x6000, 0x3000, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0D80, 0x0F00, 0x0E00, 0x0C00, 0x1C00, 0x1C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0300, 0x0600, 0x0C00, 0x0000, 0x6060, 0x7060, 0x7060, 0x7860, - 0x7860, 0x6C60, 0x6C60, 0x6660, 0x6660, 0x6360, 0x6360, 0x61E0, - 0x61E0, 0x60E0, 0x60E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x7060, 0x7060, 0x7860, - 0x7860, 0x6C60, 0x6C60, 0x6660, 0x6660, 0x6360, 0x6360, 0x61E0, - 0x61E0, 0x60E0, 0x60E0, 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x6060, 0x7060, 0x7060, 0x7860, - 0x7860, 0x6C60, 0x6C60, 0x6660, 0x6660, 0x6360, 0x6360, 0x61E0, - 0x61E0, 0x60E0, 0x60E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x30C0, 0x1980, 0x0F00, 0x0600, 0x0000, 0x0000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x3000, 0x3000, 0x6000, 0xC000, 0x0000, 0x0000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x7060, 0x7060, 0x7860, - 0x7860, 0x6C60, 0x6C60, 0x6660, 0x6660, 0x6360, 0x6360, 0x61E0, - 0x61E0, 0x60E0, 0x60E0, 0x0060, 0x0060, 0x00C0, 0x0380, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0060, 0x0060, 0x00C0, 0x0380, 0x0000 }, - { 0x0000, 0x3FC0, 0x0000, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FC0, 0x0000, 0x0000, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x0F00, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x1980, 0x1980, 0x0F00, 0x0000, 0x0000, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0660, 0x0CC0, 0x1980, 0x0000, 0x1F80, 0x30C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0660, 0x0CC0, 0x1980, 0x3300, 0x0000, 0x0000, - 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x30C0, 0x1F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3300, 0x6300, 0x6300, - 0x6300, 0x6300, 0x6300, 0x63C0, 0x6300, 0x6300, 0x6300, 0x6300, - 0x6300, 0x3300, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1DE0, 0x3760, 0x6660, 0x6660, 0x67E0, 0x6600, 0x6600, 0x6600, - 0x6600, 0x3700, 0x1DE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x7F80, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x60C0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7F80, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x60C0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x7F80, 0x60C0, 0x6060, 0x6060, - 0x6060, 0x6060, 0x60C0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x30C0, 0x1980, 0x0F00, 0x0600, 0x0000, 0x0000, - 0x1FE0, 0x3060, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x3000, 0x1F80, 0x00C0, 0x0060, 0x0060, 0x0060, - 0x0060, 0x00C0, 0x7F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x3FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x3FC0, 0x0060, 0x0060, - 0x0060, 0x0060, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x3000, 0x1F80, 0x00C0, 0x0060, 0x0060, 0x0060, - 0x0060, 0x00C0, 0x7F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x3FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x3FC0, 0x0060, 0x0060, - 0x0060, 0x0060, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x3000, 0x1F80, 0x00C0, 0x0060, 0x0060, 0x0060, - 0x0060, 0x00C0, 0x7F80, 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x3FC0, 0x0060, 0x0060, - 0x0060, 0x0060, 0x7FC0, 0x0600, 0x0600, 0x0600, 0x0C00, 0x1800 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x1FE0, 0x3000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x3000, 0x1F80, 0x00C0, 0x0060, 0x0060, 0x0060, - 0x0060, 0x00C0, 0x7F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x30C0, 0x1980, 0x0F00, 0x0600, 0x0000, 0x0000, - 0x3FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x3FC0, 0x0060, 0x0060, - 0x0060, 0x0060, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x3F80, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0300, 0x0300, 0x0300, 0x0600, 0x0C00 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x7FE0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x3F80, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x1F80, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x3F80, 0x0C00, 0x0C00, 0x3F80, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0E00, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1C60, 0x3FC0, 0x6380, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1860, 0x3C60, 0x66C0, 0x6380, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3FC0, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FC0, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x0F00, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x1980, 0x1980, 0x0F00, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x1980, 0x0F00, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0F00, 0x1980, 0x1980, 0x0F00, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0660, 0x0CC0, 0x1980, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0660, 0x0CC0, 0x1980, 0x3300, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x00C0, 0x0180, 0x0180, 0x00F0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x00C0, 0x0180, 0x0180, 0x00F0, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6660, 0x6F60, - 0x79E0, 0x70E0, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, - 0x6660, 0x3660, 0x19E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x1980, 0x30C0, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x00E0, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0F00, 0x1980, 0x30C0, 0x0000, 0x0000, - 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, 0x00C0, 0x7F80 }, - { 0x0000, 0x30C0, 0x30C0, 0x0000, 0x6060, 0x6060, 0x6060, 0x6060, - 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x00E0, 0x7FC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0300, 0x0600, 0x0000, 0x7FE0, 0x0060, 0x0060, 0x0060, - 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6000, - 0x6000, 0x6000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0300, 0x0600, 0x0C00, 0x0000, 0x0000, - 0x7FE0, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, - 0x3000, 0x6000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0600, 0x0600, 0x0000, 0x7FE0, 0x0060, 0x0060, 0x0060, - 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6000, - 0x6000, 0x6000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, - 0x7FE0, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, - 0x3000, 0x6000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x30C0, 0x1980, 0x0F00, 0x0000, 0x7FE0, 0x0060, 0x0060, 0x0060, - 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6000, - 0x6000, 0x6000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x30C0, 0x1980, 0x0F00, 0x0600, 0x0000, 0x0000, - 0x7FE0, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, - 0x3000, 0x6000, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x07C0, 0x0E00, 0x0C00, 0x0C00, - 0x3C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0F00, 0x1F80, 0x1F80, 0x1F80, 0x1F80, 0x0F00, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x6660, 0x6660, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0780, 0x0CC0, 0x1860, 0x1860, - 0x3000, 0x3000, 0xFF00, 0x3000, 0x3000, 0xFF00, 0x3000, 0x3000, - 0x1860, 0x1860, 0x0CC0, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x6660, 0x6660, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x6660, 0x6660, 0x6660, 0x6660, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xDB60, 0xDB60, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xDB60, 0xDB60, 0xDB60, 0xDB60, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000 }, - { 0x0000, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0000, 0x0000, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0000, 0x0000, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0000, 0x0000, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x07F0, 0x07F0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x07F0, 0x07F0, 0x07F0, 0x07F0, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0FF0, 0x0FF0, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFE00, 0xFE00, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFF00, 0xFF00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x07F0, 0x07F0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x07F0, 0x07F0, 0x07F0, 0x07F0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0FF0, 0x0FF0, 0x0FF0, 0x0FF0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0xFE00, 0xFE00, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0xFF00, 0xFF00, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x07F0, 0x07F0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x07F0, 0x07F0, 0x07F0, 0x07F0, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0FF0, 0x0FF0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0FF0, 0x0FF0, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0FF0, 0x0FF0, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0FF0, 0x0FF0, 0x0FF0, 0x0FF0, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0FF0, 0x0FF0, 0x0FF0, 0x0FF0, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0FF0, 0x0FF0, 0x0FF0, 0x0FF0, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0xFE00, 0xFE00, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0xFF00, 0xFF00, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0xFF00, 0xFF00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0xFF00, 0xFF00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFE00, 0xFFF0, 0xFFF0, 0xFE00, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x07F0, 0xFFF0, 0xFFF0, 0x07F0, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFF00, 0xFFF0, 0xFFF0, 0xFF00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0FF0, 0xFFF0, 0xFFF0, 0x0FF0, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0xFE00, 0xFFF0, 0xFFF0, 0xFE00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x07F0, 0xFFF0, 0xFFF0, 0x07F0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0xFF00, 0xFFF0, 0xFFF0, 0xFF00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0FF0, 0xFFF0, 0xFFF0, 0x0FF0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0xFFF0, 0xFFF0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0xFE00, 0xFFF0, 0xFFF0, 0xFE00, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x07F0, 0xFFF0, 0xFFF0, 0x07F0, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0xFFF0, 0xFFF0, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0xFFF0, 0xFFF0, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0xFFF0, 0xFFF0, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0xFF00, 0xFFF0, 0xFFF0, 0xFE00, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0FF0, 0xFFF0, 0xFFF0, 0x07F0, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0xFE00, 0xFFF0, 0xFFF0, 0xFF00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x07F0, 0xFFF0, 0xFFF0, 0x0FF0, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0xFF00, 0xFFF0, 0xFFF0, 0xFF00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0FF0, 0xFFF0, 0xFFF0, 0x0FF0, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x79E0, 0x79E0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x79E0, 0x79E0, 0x79E0, 0x79E0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000 }, - { 0x0000, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0000, 0x0000, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x07F0, 0x07F0, 0x0600, 0x0600, 0x07F0, 0x07F0, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x1FF0, 0x1FF0, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x1FF0, 0x1FF0, 0x1800, 0x1800, 0x19F0, 0x19F0, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFE00, 0xFE00, 0x0600, 0x0600, 0xFE00, 0xFE00, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFF80, 0xFF80, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFF80, 0xFF80, 0x0180, 0x0180, 0xF980, 0xF980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x07F0, 0x07F0, 0x0600, 0x0600, 0x07F0, 0x07F0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1FF0, 0x1FF0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x19F0, 0x19F0, 0x1800, 0x1800, 0x1FF0, 0x1FF0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0xFE00, 0xFE00, 0x0600, 0x0600, 0xFE00, 0xFE00, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0xFF80, 0xFF80, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0xF980, 0xF980, 0x0180, 0x0180, 0xFF80, 0xFF80, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x07F0, 0x07F0, 0x0600, 0x0600, 0x07F0, 0x07F0, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x19F0, 0x19F0, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x19F0, 0x19F0, 0x1800, 0x1800, 0x19F0, 0x19F0, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0xFE00, 0xFE00, 0x0600, 0x0600, 0xFE00, 0xFE00, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0xF980, 0xF980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0xF980, 0xF980, 0x0180, 0x0180, 0xF980, 0xF980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0xF9F0, 0xF9F0, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0xF9F0, 0xF9F0, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0xFFF0, 0xFFF0, 0x0600, 0x0600, 0xFFF0, 0xFFF0, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0xFFF0, 0xFFF0, 0x1980, 0x1980, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, - 0x1980, 0xF9F0, 0xF9F0, 0x0000, 0x0000, 0xF9F0, 0xF9F0, 0x1980, - 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01F0, 0x03F0, 0x0700, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xF800, 0xFC00, 0x0E00, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0E00, 0xFC00, 0xF800, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0700, 0x03F0, 0x01F0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0010, 0x0030, 0x0030, 0x0060, 0x0060, 0x00C0, 0x00C0, 0x0180, - 0x0180, 0x0300, 0x0300, 0x0600, 0x0600, 0x0C00, 0x0C00, 0x1800, - 0x1800, 0x3000, 0x3000, 0x6000, 0x6000, 0xC000, 0xC000, 0x8000 }, - { 0x8000, 0xC000, 0xC000, 0x6000, 0x6000, 0x3000, 0x3000, 0x1800, - 0x1800, 0x0C00, 0x0C00, 0x0600, 0x0600, 0x0300, 0x0300, 0x0180, - 0x0180, 0x00C0, 0x00C0, 0x0060, 0x0060, 0x0030, 0x0030, 0x0010 }, - { 0x8010, 0xC030, 0xC030, 0x6060, 0x6060, 0x30C0, 0x30C0, 0x1980, - 0x1980, 0x0F00, 0x0F00, 0x0600, 0x0600, 0x0F00, 0x0F00, 0x1980, - 0x1980, 0x30C0, 0x30C0, 0x6060, 0x6060, 0xC030, 0xC030, 0x8010 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFC00, 0xFC00, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x03F0, 0x03F0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x03F0, 0xFFF0, 0xFFF0, 0x03F0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFC00, 0xFFF0, 0xFFF0, 0xFC00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0F00, - 0x0F00, 0x0F00, 0x0F00, 0x0F00, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600 }, - { 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0x0000, 0x0000, 0x0000, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, - 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, - 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0 }, - { 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, - 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, - 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80 }, - { 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, - 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, - 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00, 0xFE00 }, - { 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00 }, - { 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, - 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, - 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000 }, - { 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, - 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, - 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000 }, - { 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, - 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, - 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000 }, - { 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, - 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, - 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0 }, - { 0x0C30, 0x6DB0, 0x6180, 0x0C30, 0x6DB0, 0x6180, 0x0C30, 0x6DB0, - 0x6180, 0x0C30, 0x6DB0, 0x6180, 0x0C30, 0x6DB0, 0x6180, 0x0C30, - 0x6DB0, 0x6180, 0x0C30, 0x6DB0, 0x6180, 0x0C30, 0x6DB0, 0x6180 }, - { 0x3330, 0x3330, 0xCCC0, 0xCCC0, 0x3330, 0x3330, 0xCCC0, 0xCCC0, - 0x3330, 0x3330, 0xCCC0, 0xCCC0, 0x3330, 0x3330, 0xCCC0, 0xCCC0, - 0x3330, 0x3330, 0xCCC0, 0xCCC0, 0x3330, 0x3330, 0xCCC0, 0xCCC0 }, - { 0xE790, 0xE790, 0x3CF0, 0x3CF0, 0xE790, 0xE790, 0x3CF0, 0x3CF0, - 0xE790, 0xE790, 0x3CF0, 0x3CF0, 0xE790, 0xE790, 0x3CF0, 0x3CF0, - 0xE790, 0xE790, 0x3CF0, 0x3CF0, 0xE790, 0xE790, 0x3CF0, 0x3CF0 }, - { 0xFFF0, 0xFFF0, 0xFFF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x03F0, 0x03F0, 0x03F0, 0x03F0, - 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0 }, - { 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0x03F0, 0x03F0, 0x03F0, 0x03F0, - 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0 }, - { 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00 }, - { 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, - 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0 }, - { 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, - 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, - 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00 }, - { 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0x03F0, - 0x03F0, 0x03F0, 0x03F0, 0x03F0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x7FE0, - 0x0000, 0x0000, 0x0000, 0x7FE0, 0x7FE0, 0x0000, 0x0000, 0x0000, - 0x7FE0, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79E0, 0x79E0, - 0x0000, 0x0000, 0x0000, 0x7FE0, 0x7FE0, 0x0000, 0x0000, 0x0000, - 0x7FE0, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x7FE0, - 0x0000, 0x0000, 0x0000, 0x79E0, 0x79E0, 0x0000, 0x0000, 0x0000, - 0x7FE0, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79E0, 0x79E0, - 0x0000, 0x0000, 0x0000, 0x79E0, 0x79E0, 0x0000, 0x0000, 0x0000, - 0x7FE0, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x7FE0, - 0x0000, 0x0000, 0x0000, 0x7FE0, 0x7FE0, 0x0000, 0x0000, 0x0000, - 0x79E0, 0x79E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79E0, 0x79E0, - 0x0000, 0x0000, 0x0000, 0x7FE0, 0x7FE0, 0x0000, 0x0000, 0x0000, - 0x79E0, 0x79E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FE0, 0x7FE0, - 0x0000, 0x0000, 0x0000, 0x79E0, 0x79E0, 0x0000, 0x0000, 0x0000, - 0x79E0, 0x79E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79E0, 0x79E0, - 0x0000, 0x0000, 0x0000, 0x79E0, 0x79E0, 0x0000, 0x0000, 0x0000, - 0x79E0, 0x79E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 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, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 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, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, 0x7800, 0x7800, - 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x3000, - 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x3000, 0x7800, 0x7800, 0x3000, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, 0x01E0, 0x01E0, - 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x00C0, - 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x00C0, 0x01E0, 0x01E0, 0x00C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, - 0x79E0, 0x79E0, 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, - 0x30C0, 0x0000, 0x0000, 0x30C0, 0x79E0, 0x79E0, 0x30C0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6180, 0x63C0, 0x67E0, - 0x6180, 0x6180, 0x6180, 0x6300, 0x4600, 0x0C00, 0x1800, 0x3000, - 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x6000, 0x6000, - 0x6000, 0x6000, 0x6000, 0x3E00, 0x0000, 0x0660, 0x0660, 0x0760, - 0x0760, 0x06E0, 0x06E0, 0x0660, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0F00, 0x1F80, 0x1980, 0x1980, - 0x1980, 0x1980, 0x7FE0, 0x7FE0, 0x7FE0, 0x79E0, 0x70E0, 0x70E0, - 0x79E0, 0x7FE0, 0x7FE0, 0x7FE0, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x8000, 0xC000, 0xE000, 0xF000, 0xF800, 0xFC00, 0xFE00, 0xFF00, - 0xFF80, 0xFFC0, 0xFFE0, 0xFFF0, 0xFFF0, 0xFFE0, 0xFFC0, 0xFF80, - 0xFF00, 0xFE00, 0xFC00, 0xF800, 0xF000, 0xE000, 0xC000, 0x8000 }, - { 0x8000, 0xC000, 0x6000, 0x3000, 0x1800, 0x0C00, 0x0600, 0x0300, - 0x0180, 0x00C0, 0x0060, 0x0030, 0x0030, 0x0060, 0x00C0, 0x0180, - 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6000, 0xC000, 0x8000 }, - { 0x0010, 0x0030, 0x0070, 0x00F0, 0x01F0, 0x03F0, 0x07F0, 0x0FF0, - 0x1FF0, 0x3FF0, 0x7FF0, 0xFFF0, 0xFFF0, 0x7FF0, 0x3FF0, 0x1FF0, - 0x0FF0, 0x07F0, 0x03F0, 0x01F0, 0x00F0, 0x0070, 0x0030, 0x0010 }, - { 0x0010, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, - 0x1800, 0x3000, 0x6000, 0xC000, 0xC000, 0x6000, 0x3000, 0x1800, - 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0010 } -}; - -u16 font_32[758][32] = { - - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, - 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818, 0x1818, 0x1818, 0x7FFE, - 0x7FFE, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x7FFE, 0x7FFE, - 0x1818, 0x1818, 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0FFC, 0x1FFC, 0x3980, 0x3180, 0x3180, - 0x3180, 0x3180, 0x3980, 0x1FF0, 0x0FF8, 0x019C, 0x018C, 0x018C, 0x018C, 0x018C, 0x018C, - 0x018C, 0x019C, 0x3FF8, 0x3FF0, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000C, 0x0E0C, 0x1B18, 0x1B18, 0x1B30, - 0x0E30, 0x0060, 0x0060, 0x00C0, 0x00C0, 0x0180, 0x0180, 0x0300, 0x0300, 0x0638, 0x066C, - 0x0C6C, 0x0C6C, 0x1838, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07E0, 0x0FF0, 0x1C38, 0x1818, 0x1818, - 0x1818, 0x1818, 0x1C38, 0x0FF0, 0x07E0, 0x1F80, 0x3FC0, 0x70EC, 0x607C, 0x6038, 0x6030, - 0x6038, 0x707C, 0x3FEE, 0x1FC6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x003C, 0x00FC, 0x01E0, 0x0380, 0x0700, 0x0600, 0x0E00, 0x0C00, - 0x1C00, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1C00, 0x0C00, - 0x0E00, 0x0600, 0x0700, 0x0380, 0x01E0, 0x00FC, 0x003C, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x3C00, 0x3F00, 0x0780, 0x01C0, 0x00E0, 0x0060, 0x0070, 0x0030, - 0x0038, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0038, 0x0030, - 0x0070, 0x0060, 0x00E0, 0x01C0, 0x0780, 0x3F00, 0x3C00, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x1C38, 0x0E70, 0x07E0, 0x03C0, 0x03C0, 0x7FFE, 0x7FFE, 0x03C0, 0x03C0, 0x07E0, 0x0E70, - 0x1C38, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000C, 0x000C, 0x0018, 0x0018, 0x0030, 0x0030, - 0x0060, 0x0060, 0x00C0, 0x00C0, 0x0180, 0x0180, 0x0300, 0x0300, 0x0600, 0x0600, 0x0C00, - 0x0C00, 0x1800, 0x1800, 0x3000, 0x3000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x301C, 0x303C, 0x307C, 0x30EC, 0x31CC, 0x338C, 0x370C, 0x3E0C, 0x3C0C, 0x380C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0380, 0x0780, 0x0D80, 0x1980, 0x1180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x000C, - 0x000C, 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, - 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x000C, - 0x000C, 0x000C, 0x0018, 0x07F0, 0x07F0, 0x0018, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3030, - 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3FFC, 0x3FFC, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3FF0, 0x3FF8, 0x001C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x000C, - 0x000C, 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0300, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x1818, 0x0FF0, 0x0FF0, 0x1818, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x000C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, - 0x0380, 0x0700, 0x0E00, 0x1C00, 0x3800, 0x3800, 0x1C00, 0x0E00, 0x0700, 0x0380, 0x01C0, - 0x00E0, 0x0070, 0x0038, 0x001C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3800, 0x1C00, 0x0E00, 0x0700, 0x0380, - 0x01C0, 0x00E0, 0x0070, 0x0038, 0x001C, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0380, - 0x0700, 0x0E00, 0x1C00, 0x3800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x000C, - 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x00C0, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, - 0x300C, 0x300C, 0x31CC, 0x31CC, 0x31CC, 0x31CC, 0x31CC, 0x31CC, 0x31FC, 0x31FC, 0x3000, - 0x3000, 0x3800, 0x1FF8, 0x0FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x3018, 0x3FF0, 0x3FF0, 0x3018, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x30FC, 0x30FC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0380, 0x7F00, 0x7E00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x3018, 0x3030, 0x3060, 0x3FC0, 0x3FC0, 0x3060, 0x3030, 0x3018, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x381C, 0x3C3C, 0x3E7C, 0x37EC, - 0x33CC, 0x318C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x380C, 0x380C, 0x3C0C, - 0x3C0C, 0x360C, 0x360C, 0x330C, 0x330C, 0x318C, 0x318C, 0x30CC, 0x30CC, 0x306C, 0x306C, - 0x303C, 0x303C, 0x301C, 0x301C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x318C, 0x318C, - 0x30CC, 0x38DC, 0x1FF8, 0x0FF0, 0x0030, 0x0030, 0x0018, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x3018, 0x3FF0, 0x3FF0, 0x3018, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FFE, 0x7FFE, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x381C, 0x1C38, - 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x318C, 0x33CC, 0x37EC, - 0x3E7C, 0x3C3C, 0x381C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1C38, 0x0E70, 0x07E0, 0x07E0, 0x0E70, 0x1C38, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, - 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, - 0x3000, 0x3000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0FFC, 0x0FFC, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0FFC, 0x0FFC, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x6000, 0x6000, 0x3000, 0x3000, 0x1800, 0x1800, 0x0C00, 0x0C00, - 0x0600, 0x0600, 0x0300, 0x0300, 0x0180, 0x0180, 0x00C0, 0x00C0, 0x0060, 0x0060, 0x0030, - 0x0030, 0x0018, 0x0018, 0x000C, 0x000C, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x3FF0, 0x3FF0, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x3FF0, 0x3FF0, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x381C, 0x700E, - 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FFE, 0x7FFE, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0700, 0x0380, 0x01C0, 0x00E0, 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, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01F8, 0x03F8, 0x0700, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x1FE0, 0x1FE0, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0018, 0x000C, 0x000C, 0x001C, 0x3FF8, 0x3FF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0380, 0x1F00, 0x1E00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, - 0x1800, 0x1830, 0x1870, 0x18E0, 0x19C0, 0x1B80, 0x1F00, 0x1F00, 0x1B80, 0x19C0, 0x18E0, - 0x1870, 0x1838, 0x181C, 0x180C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3E70, 0x3E78, 0x319C, 0x318C, 0x318C, 0x318C, 0x318C, 0x318C, 0x318C, 0x318C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x1FE0, 0x1FE0, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x381C, 0x1C38, - 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x318C, 0x318C, 0x318C, 0x318C, 0x318C, 0x318C, - 0x318C, 0x398C, 0x1E7C, 0x0E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x300C, 0x381C, 0x1C38, 0x0E70, 0x07E0, 0x03C0, 0x03C0, 0x07E0, 0x0E70, 0x1C38, - 0x1818, 0x381C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x001C, 0x3FF8, 0x3FF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, - 0x0C00, 0x1800, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x00FC, 0x01FC, 0x0380, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0700, 0x3E00, 0x3C00, 0x3C00, 0x3E00, 0x0700, 0x0300, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0380, 0x01FC, 0x00FC, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x3F00, 0x3F80, 0x01C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00E0, 0x007C, 0x003C, 0x003C, 0x007C, 0x00E0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x01C0, 0x3F80, 0x3F00, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0E0C, 0x1F0C, 0x3B9C, 0x31F8, 0x30F0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, - 0x00C0, 0x0FFC, 0x1FFC, 0x38C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, - 0x30C0, 0x38C0, 0x1FFC, 0x0FFC, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x0C00, - 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x3FF0, 0x3FF0, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, - 0x1800, 0x1800, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1C38, 0x0E70, - 0x07E0, 0x0FF0, 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C38, 0x0FF0, 0x07E0, 0x0E70, - 0x1C38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x1818, 0x1818, 0x0C30, - 0x0C30, 0x0660, 0x0660, 0x03C0, 0x03C0, 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0180, 0x0180, - 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x07E0, 0x0FF0, 0x1C70, 0x1800, 0x1800, 0x1C00, 0x0E00, - 0x07E0, 0x0FF0, 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C38, 0x0FF0, 0x07E0, 0x0070, - 0x0038, 0x0018, 0x0018, 0x0E38, 0x0FF0, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, - 0x1FF8, 0x381C, 0x300C, 0x33EC, 0x37EC, 0x360C, 0x360C, 0x360C, 0x360C, 0x37EC, 0x33EC, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x07C0, 0x07E0, 0x0070, 0x0030, 0x07F0, 0x0FF0, 0x0C30, - 0x0C30, 0x0FF0, 0x07F0, 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x039C, 0x0738, 0x0E70, 0x1CE0, 0x39C0, 0x39C0, 0x1CE0, 0x0E70, - 0x0738, 0x039C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, - 0x300C, 0x37CC, 0x37EC, 0x366C, 0x37EC, 0x37CC, 0x366C, 0x366C, 0x366C, 0x300C, 0x381C, - 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07E0, 0x0E70, 0x0C30, 0x0C30, 0x0C30, - 0x0E70, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, - 0x0180, 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07E0, 0x0C30, 0x0030, 0x0030, 0x0060, - 0x00C0, 0x0180, 0x0300, 0x0630, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07E0, 0x0C30, 0x0030, 0x0030, 0x01E0, - 0x01E0, 0x0030, 0x0030, 0x0C30, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0300, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, - 0x3030, 0x3878, 0x3FFE, 0x37CE, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x398C, 0x318C, 0x318C, - 0x318C, 0x318C, 0x398C, 0x1F8C, 0x0F8C, 0x018C, 0x018C, 0x018C, 0x018C, 0x018C, 0x018C, - 0x018C, 0x018C, 0x018C, 0x018C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0380, 0x0780, 0x0580, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x07E0, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07E0, 0x0E70, 0x0C30, 0x0C30, 0x0C30, - 0x0E70, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x39C0, 0x1CE0, 0x0E70, 0x0738, 0x039C, 0x039C, 0x0738, 0x0E70, - 0x1CE0, 0x39C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3800, 0x7800, 0x5800, 0x1800, 0x1800, 0x1800, 0x1806, 0x180E, - 0x181C, 0x7E38, 0x7E70, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0E00, 0x1D80, 0x3980, 0x7198, - 0x6198, 0x0198, 0x0198, 0x01FE, 0x01FE, 0x0018, 0x0018, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3800, 0x7800, 0x5800, 0x1800, 0x1800, 0x1800, 0x1806, 0x180E, - 0x181C, 0x7E38, 0x7E70, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0E78, 0x1CFC, 0x3986, 0x7006, - 0x6006, 0x000C, 0x0018, 0x0030, 0x0060, 0x00C6, 0x01FE, 0x01FE, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1E00, 0x3F00, 0x6180, 0x0180, 0x0180, 0x0F00, 0x0F00, 0x0186, 0x018E, - 0x619C, 0x3F38, 0x1E70, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0E00, 0x1D80, 0x3980, 0x7198, - 0x6198, 0x0198, 0x0198, 0x01FE, 0x01FE, 0x0018, 0x0018, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0180, 0x0300, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x3000, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0F0C, 0x1F9C, 0x39F8, 0x30F0, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x0660, 0x0660, 0x03C0, 0x0180, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x38C0, 0x30C0, 0x30C0, - 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x3FFC, 0x3FFC, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, - 0x30C0, 0x30C0, 0x30FC, 0x30FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x00C0, 0x00C0, 0x00C0, 0x01C0, 0x0380, 0x0300 }, - { 0x0000, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0xFF0C, 0xFF0C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0F0C, 0x1F9C, 0x39F8, 0x30F0, 0x0000, 0x300C, 0x300C, 0x380C, 0x380C, 0x3C0C, - 0x3C0C, 0x360C, 0x360C, 0x330C, 0x330C, 0x318C, 0x318C, 0x30CC, 0x30CC, 0x306C, 0x306C, - 0x303C, 0x303C, 0x301C, 0x301C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0F0C, 0x1F9C, 0x39F8, 0x30F0, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, - 0x381C, 0x1C38, 0x0E70, 0x07E0, 0x03C0, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x381C, 0x300C, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x000C, 0x000C, 0x0FF8, 0x1FF8, 0x383C, 0x303C, 0x306C, - 0x306C, 0x30CC, 0x30CC, 0x318C, 0x318C, 0x330C, 0x330C, 0x360C, 0x360C, 0x3C0C, 0x3C0C, - 0x380C, 0x381C, 0x3FF8, 0x3FF0, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FC0, 0x1FE0, 0x3870, 0x3030, 0x3030, - 0x3030, 0x3030, 0x3070, 0x3FE0, 0x3FC0, 0x31F0, 0x3078, 0x301C, 0x300C, 0x300C, 0x300C, - 0x3C0C, 0x3E1C, 0x37F8, 0x33F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0060, 0x0000, - 0x0000, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0300, 0x0000, - 0x0000, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0E0C, 0x1F0C, 0x3B9C, 0x31F8, 0x30F0, 0x0000, 0x0000, - 0x0000, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, - 0x0000, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x01C0, 0x03E0, 0x0630, 0x0630, 0x0630, 0x03E0, 0x01C0, 0x0000, - 0x0000, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x1F3F, 0x1FFF, 0x01E3, 0x00C3, 0x00C3, 0x0FC3, 0x1FFF, 0x38FF, 0x30C0, 0x30C0, - 0x30C0, 0x39E0, 0x1FFF, 0x0F3F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x00C0, 0x00C0, 0x00C0, 0x01C0, 0x0380, 0x0300 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0060, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0300, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0060, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0600, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1980, 0x1980, 0x0F00, 0x0F00, 0x1F80, 0x19C0, - 0x00E0, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0E0C, 0x1F0C, 0x3B9C, 0x31F8, 0x30F0, 0x0000, 0x0000, - 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0060, 0x0000, - 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0600, 0x0000, - 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0E0C, 0x1F0C, 0x3B9C, 0x31F8, 0x30F0, 0x0000, 0x0000, - 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, - 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0180, 0x0180, - 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FF6, 0x1FFE, 0x381C, 0x303C, 0x307C, 0x30EC, 0x31CC, 0x338C, 0x370C, 0x3E0C, - 0x3C0C, 0x381C, 0x7FF8, 0x6FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0060, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0600, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0600, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x001C, 0x3FF8, 0x3FF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x001C, 0x3FF8, 0x3FF0 }, - { 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, - 0x0000, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, - 0x0000, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x003C, 0x0070, 0x0060, 0x007E, 0x003E, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x1FF0, 0x1FF8, 0x001C, 0x000C, 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0038, 0x0070, 0x0060, 0x007E, 0x003E, 0x0000 }, - { 0x0000, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0300, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1C38, 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0xFF0C, 0xFF0C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000C, 0x000C, 0x00FF, 0x00FF, 0x000C, - 0x000C, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0038, 0x0070, 0x0060, 0x007E, 0x003E, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0038, 0x0070, 0x0060, 0x007E, 0x003E, 0x0000 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3FE0, 0x3FE0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1C38, 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x30FC, 0x30FC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0018, 0x000C, 0x000C, 0x001C, 0x3FF8, 0x3FF0 }, - { 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x30FC, 0x30FC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0018, 0x000C, 0x000C, 0x001C, 0x3FF8, 0x3FF0 }, - { 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x30FC, 0x30FC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0018, 0x000C, 0x000C, 0x001C, 0x3FF8, 0x3FF0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x30FC, 0x30FC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x00C0, 0x00C0, 0x00C0, 0x01C0, 0x0380, 0x0300 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, 0x00C0, 0x01C0, 0x0380, 0x0300, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0018, 0x000C, 0x000C, 0x001C, 0x3FF8, 0x3FF0 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0xFFFF, 0xFFFF, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0xFF00, 0xFF00, 0x3000, - 0x3000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0F0C, 0x1F9C, 0x39F8, 0x30F0, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0E0C, 0x1F0C, 0x3B9C, 0x31F8, 0x30F0, 0x0000, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0070, 0x00E0, 0x00C0, 0x00FC, 0x007C, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x00E0, 0x01C0, 0x0180, 0x01F8, 0x00F8, 0x0000 }, - { 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0780, 0x0780, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01E0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFC3F, 0xFC3F, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x301C, 0xFCF8, 0xFCF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C0C, 0x0C0C, 0x0C0C, 0x0000, 0x0000, - 0x0000, 0x3C0C, 0x3C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, - 0x0C0C, 0x0C0C, 0x0F0C, 0x0F0C, 0x000C, 0x000C, 0x000C, 0x001C, 0x00F8, 0x00F0 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x1FF8, 0x1FF8, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0380, 0x7F00, 0x7E00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0380, 0x1F00, 0x1E00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x3018, 0x3030, 0x3060, 0x3FC0, 0x3FC0, 0x3060, 0x3030, 0x3018, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, - 0x1800, 0x1830, 0x1870, 0x18E0, 0x19C0, 0x1B80, 0x1F00, 0x1F00, 0x1B80, 0x19C0, 0x18E0, - 0x1870, 0x1838, 0x181C, 0x180C, 0x00C0, 0x00C0, 0x00C0, 0x01C0, 0x0380, 0x0300 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x1818, 0x1838, 0x1870, 0x18E0, 0x19C0, 0x1B80, 0x1F00, 0x1F00, 0x1B80, 0x19C0, - 0x18E0, 0x1870, 0x1838, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x00C0, 0x00C0, 0x00C0, 0x01C0, 0x0380, 0x0300 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x00C0, 0x00C0, 0x00C0, 0x01C0, 0x0380, 0x0300 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3030, 0x3030, 0x3030, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0630, 0x0630, 0x0630, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3300, 0x3700, 0x3E00, 0x3C00, 0x3800, 0x7000, 0xF000, 0xF000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3800, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0660, 0x06E0, 0x07C0, 0x0780, 0x0700, 0x0E00, 0x1E00, 0x1E00, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x300C, 0x300C, 0x380C, 0x380C, 0x3C0C, - 0x3C0C, 0x360C, 0x360C, 0x330C, 0x330C, 0x318C, 0x318C, 0x30CC, 0x30CC, 0x306C, 0x306C, - 0x303C, 0x303C, 0x301C, 0x301C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0600, 0x0000, - 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x380C, 0x380C, 0x3C0C, - 0x3C0C, 0x360C, 0x360C, 0x330C, 0x330C, 0x318C, 0x318C, 0x30CC, 0x30CC, 0x306C, 0x306C, - 0x303C, 0x303C, 0x301C, 0x301C, 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x300C, 0x300C, 0x380C, 0x380C, 0x3C0C, - 0x3C0C, 0x360C, 0x360C, 0x330C, 0x330C, 0x318C, 0x318C, 0x30CC, 0x30CC, 0x306C, 0x306C, - 0x303C, 0x303C, 0x301C, 0x301C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1C38, 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, - 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x7000, 0xE000, 0xC000, 0x0000, - 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x380C, 0x380C, 0x3C0C, - 0x3C0C, 0x360C, 0x360C, 0x330C, 0x330C, 0x318C, 0x318C, 0x30CC, 0x30CC, 0x306C, 0x306C, - 0x303C, 0x303C, 0x301C, 0x301C, 0x000C, 0x000C, 0x001C, 0x00F8, 0x00F0, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x000C, 0x000C, 0x001C, 0x00F8, 0x00F0, 0x0000 }, - { 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, - 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, - 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x039C, 0x0738, 0x0E70, 0x1CE0, 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x018C, 0x039C, 0x0738, 0x0E70, 0x1CE0, 0x18C0, 0x0000, - 0x0000, 0x0FF0, 0x1FF8, 0x381C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x381C, 0x1FF8, 0x0FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x38C0, 0x30C0, 0x30C0, - 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30FC, 0x30FC, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x30C0, - 0x30C0, 0x38C0, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0F3F, 0x1FFF, 0x39E3, 0x30C3, 0x30C3, 0x30C3, 0x30FF, 0x30FF, 0x30C0, 0x30C0, - 0x30C0, 0x39E0, 0x1FFF, 0x0F3F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x3018, 0x3FF0, 0x3FF0, 0x3018, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0600, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x3018, 0x3FF0, 0x3FF0, 0x3018, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x3FF0, 0x3FF8, 0x301C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x3018, 0x3FF0, 0x3FF0, 0x3018, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1C38, 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0300, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0180, 0x0180, 0x0180, 0x0380, 0x0700, 0x0600 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1C38, 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, - 0x0000, 0x0FFC, 0x1FFC, 0x3800, 0x3000, 0x3000, 0x3800, 0x1FF0, 0x0FF8, 0x001C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FFE, 0x7FFE, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x01C0, 0x0380, 0x0300 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x1FE0, 0x1FE0, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x0060, 0x0060, 0x0060, 0x00E0, 0x01C0, 0x0180 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x7FFE, 0x7FFE, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x1FE0, 0x1FE0, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FFE, 0x7FFE, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0FF0, 0x0FF0, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x1FE0, 0x1FE0, 0x0600, 0x0600, 0x1FE0, 0x1FE0, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0700, 0x03F8, 0x01F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0F0C, 0x1F9C, 0x39F8, 0x30F0, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0E0C, 0x1F0C, 0x3B9C, 0x31F8, 0x30F0, 0x0000, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FF0, 0x0FF0, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C30, 0x0C30, 0x07E0, 0x03C0, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x0660, 0x0660, 0x03C0, 0x0180, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x01C0, 0x03E0, 0x0630, 0x0630, 0x0630, 0x03E0, 0x01C0, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x039C, 0x0738, 0x0E70, 0x1CE0, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x018C, 0x039C, 0x0738, 0x0E70, 0x1CE0, 0x18C0, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0038, 0x0070, 0x0060, 0x007E, 0x003E, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x0038, 0x0070, 0x0060, 0x007E, 0x003E, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x318C, 0x33CC, 0x37EC, - 0x3E7C, 0x3C3C, 0x381C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x318C, 0x318C, 0x318C, 0x318C, 0x318C, 0x318C, - 0x318C, 0x398C, 0x1E7C, 0x0E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x03C0, 0x07E0, 0x0E70, 0x1C38, 0x1818, 0x0000, - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x001C, 0x3FF8, 0x3FF0 }, - { 0x0000, 0x0C30, 0x0C30, 0x0C30, 0x0000, 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x380C, 0x1FFC, 0x0FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x001C, 0x3FF8, 0x3FF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, - 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, - 0x3000, 0x3000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0300, 0x0000, - 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, - 0x0C00, 0x1800, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, - 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, - 0x3000, 0x3000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, - 0x0C00, 0x1800, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, - 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, - 0x3000, 0x3000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1C38, 0x0E70, 0x07E0, 0x03C0, 0x0180, 0x0000, - 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, - 0x0C00, 0x1800, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01F8, 0x03F8, 0x0700, 0x0600, 0x0600, - 0x0600, 0x1E00, 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, - 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, - 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x03C0, 0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x03C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x318C, 0x318C, 0x318C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03F0, 0x07F8, 0x0E1C, 0x1C0C, 0x1800, - 0x3000, 0x3000, 0xFFC0, 0xFFC0, 0x3000, 0x3000, 0xFFC0, 0xFFC0, 0x3000, 0x3000, 0x1800, - 0x1C0C, 0x0E1C, 0x07F8, 0x03F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x739C, 0x739C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x739C, 0x739C, 0x739C, 0x739C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x6666, 0x6666, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x6666, 0x6666, 0x6666, 0x6666, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x01FF, 0x01FF, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01FF, 0x01FF, 0x01FF, 0x01FF, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x03FF, 0x03FF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFF80, 0xFF80, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFC0, 0xFFC0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x01FF, 0x01FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x01FF, 0x01FF, 0x01FF, 0x01FF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03FF, 0x03FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03FF, 0x03FF, 0x03FF, 0x03FF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0xFF80, 0xFF80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0xFFC0, 0xFFC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x01FF, 0x01FF, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x01FF, 0x01FF, 0x01FF, 0x01FF, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03FF, 0x03FF, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x03FF, 0x03FF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03FF, 0x03FF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03FF, 0x03FF, 0x03FF, 0x03FF, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x03FF, 0x03FF, 0x03FF, 0x03FF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03FF, 0x03FF, 0x03FF, 0x03FF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0xFF80, 0xFF80, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0xFFC0, 0xFFC0, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0xFFC0, 0xFFC0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0xFFC0, 0xFFC0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFF80, 0xFFFF, 0xFFFF, 0xFF80, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01FF, 0xFFFF, 0xFFFF, 0x01FF, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFC0, 0xFFFF, 0xFFFF, 0xFFC0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x03FF, 0xFFFF, 0xFFFF, 0x03FF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0xFF80, 0xFFFF, 0xFFFF, 0xFF80, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x01FF, 0xFFFF, 0xFFFF, 0x01FF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0xFFC0, 0xFFFF, 0xFFFF, 0xFFC0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03FF, 0xFFFF, 0xFFFF, 0x03FF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0xFFFF, 0xFFFF, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0xFF80, 0xFFFF, 0xFFFF, 0xFF80, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x01FF, 0xFFFF, 0xFFFF, 0x01FF, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0xFFFF, 0xFFFF, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0xFFFF, 0xFFFF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0xFFFF, 0xFFFF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0xFFC0, 0xFFFF, 0xFFFF, 0xFF80, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03FF, 0xFFFF, 0xFFFF, 0x01FF, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0xFF80, 0xFFFF, 0xFFFF, 0xFFC0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x01FF, 0xFFFF, 0xFFFF, 0x03FF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0xFFC0, 0xFFFF, 0xFFFF, 0xFFC0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03FF, 0xFFFF, 0xFFFF, 0x03FF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x7E7E, 0x7E7E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x7E7E, 0x7E7E, 0x7E7E, 0x7E7E, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01FF, 0x01FF, 0x0180, 0x0180, 0x01FF, 0x01FF, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x07FF, 0x07FF, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x07FF, 0x07FF, 0x0600, 0x0600, 0x067F, 0x067F, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFF80, 0xFF80, 0x0180, 0x0180, 0xFF80, 0xFF80, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFE0, 0xFFE0, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFE0, 0xFFE0, 0x0060, 0x0060, 0xFE60, 0xFE60, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01FF, 0x01FF, 0x0180, 0x0180, 0x01FF, 0x01FF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x07FF, 0x07FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x067F, 0x067F, 0x0600, 0x0600, 0x07FF, 0x07FF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0xFF80, 0xFF80, 0x0180, 0x0180, 0xFF80, 0xFF80, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0xFFE0, 0xFFE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0xFE60, 0xFE60, 0x0060, 0x0060, 0xFFE0, 0xFFE0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x01FF, 0x01FF, 0x0180, 0x0180, 0x01FF, 0x01FF, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x067F, 0x067F, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x067F, 0x067F, 0x0600, 0x0600, 0x067F, 0x067F, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0xFF80, 0xFF80, 0x0180, 0x0180, 0xFF80, 0xFF80, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0xFE60, 0xFE60, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0xFE60, 0xFE60, 0x0060, 0x0060, 0xFE60, 0xFE60, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFE7F, 0xFE7F, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0xFE7F, 0xFE7F, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0xFFFF, 0xFFFF, 0x0180, 0x0180, 0xFFFF, 0xFFFF, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0xFFFF, 0xFFFF, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0xFE7F, 0xFE7F, 0x0000, 0x0000, 0xFE7F, 0xFE7F, 0x0660, 0x0660, 0x0660, - 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660, 0x0660 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x007F, 0x00FF, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFE00, 0xFF00, 0x0380, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0380, 0xFF00, 0xFE00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x01C0, 0x00FF, 0x007F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0001, 0x0003, 0x0003, 0x0006, 0x0006, 0x000C, 0x000C, 0x0018, 0x0018, 0x0030, 0x0030, - 0x0060, 0x0060, 0x00C0, 0x00C0, 0x0180, 0x0180, 0x0300, 0x0300, 0x0600, 0x0600, 0x0C00, - 0x0C00, 0x1800, 0x1800, 0x3000, 0x3000, 0x6000, 0x6000, 0xC000, 0xC000, 0x8000 }, - { 0x8000, 0xC000, 0xC000, 0x6000, 0x6000, 0x3000, 0x3000, 0x1800, 0x1800, 0x0C00, 0x0C00, - 0x0600, 0x0600, 0x0300, 0x0300, 0x0180, 0x0180, 0x00C0, 0x00C0, 0x0060, 0x0060, 0x0030, - 0x0030, 0x0018, 0x0018, 0x000C, 0x000C, 0x0006, 0x0006, 0x0003, 0x0003, 0x0001 }, - { 0x8001, 0xC003, 0xC003, 0x6006, 0x6006, 0x300C, 0x300C, 0x1818, 0x1818, 0x0C30, 0x0C30, - 0x0660, 0x0660, 0x03C0, 0x03C0, 0x0180, 0x0180, 0x03C0, 0x03C0, 0x0660, 0x0660, 0x0C30, - 0x0C30, 0x1818, 0x1818, 0x300C, 0x300C, 0x6006, 0x6006, 0xC003, 0xC003, 0x8001 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFF00, 0xFF00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x00FF, 0x00FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00FF, 0xFFFF, 0xFFFF, 0x00FF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFF00, 0xFFFF, 0xFFFF, 0xFF00, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, - 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x03C0, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180 }, - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, - 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, - 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC }, - { 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, - 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0 }, - { 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, - 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, - 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0 }, - { 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, - 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, - 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00 }, - { 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, - 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00 }, - { 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, - 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, - 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000 }, - { 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, - 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, - 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000 }, - { 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, - 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, - 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF }, - { 0x0303, 0x0303, 0x3030, 0x3030, 0x0303, 0x0303, 0x3030, 0x3030, 0x0303, 0x0303, 0x3030, - 0x3030, 0x0303, 0x0303, 0x3030, 0x3030, 0x0303, 0x0303, 0x3030, 0x3030, 0x0303, 0x0303, - 0x3030, 0x3030, 0x0303, 0x0303, 0x3030, 0x3030, 0x0303, 0x0303, 0x3030, 0x3030 }, - { 0x3333, 0x3333, 0xCCCC, 0xCCCC, 0x3333, 0x3333, 0xCCCC, 0xCCCC, 0x3333, 0x3333, 0xCCCC, - 0xCCCC, 0x3333, 0x3333, 0xCCCC, 0xCCCC, 0x3333, 0x3333, 0xCCCC, 0xCCCC, 0x3333, 0x3333, - 0xCCCC, 0xCCCC, 0x3333, 0x3333, 0xCCCC, 0xCCCC, 0x3333, 0x3333, 0xCCCC, 0xCCCC }, - { 0xF3F3, 0xF3F3, 0x3F3F, 0x3F3F, 0xF3F3, 0xF3F3, 0x3F3F, 0x3F3F, 0xF3F3, 0xF3F3, 0x3F3F, - 0x3F3F, 0xF3F3, 0xF3F3, 0x3F3F, 0x3F3F, 0xF3F3, 0xF3F3, 0x3F3F, 0x3F3F, 0xF3F3, 0xF3F3, - 0x3F3F, 0x3F3F, 0xF3F3, 0xF3F3, 0x3F3F, 0x3F3F, 0xF3F3, 0xF3F3, 0x3F3F, 0x3F3F }, - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, - 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, - 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, - 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, - 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF }, - { 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, - 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, - 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, - 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, - 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF }, - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, - 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00 }, - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, - 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF }, - { 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, - 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, - 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, - 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00 }, - { 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, - 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3E7C, 0x3E7C, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3E7C, 0x3E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3E7C, 0x3E7C, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3E7C, 0x3E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3E7C, 0x3E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3E7C, 0x3E7C, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3E7C, 0x3E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x3FFC, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3E7C, 0x3E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3E7C, 0x3E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3E7C, 0x3E7C, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3E7C, 0x3E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3E7C, 0x3E7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 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, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 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, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 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, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 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, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, - 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1800, 0x3C00, 0x3C00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, - 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0018, 0x003C, 0x003C, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, - 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, - 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x3C3C, 0x3C3C, 0x1818, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3030, 0x3078, 0x30FC, 0x31FE, 0x3030, - 0x3030, 0x3030, 0x3030, 0x3060, 0x30C0, 0x2180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, - 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, - 0x3000, 0x3000, 0x3000, 0x1F80, 0x0000, 0x0000, 0x018C, 0x018C, 0x01CC, 0x01CC, 0x01AC, - 0x01AC, 0x019C, 0x019C, 0x018C, 0x018C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07E0, 0x0E70, 0x0C30, 0x0C30, - 0x0C30, 0x0C30, 0x0C30, 0x3FFC, 0x3FFC, 0x3FFC, 0x3C3C, 0x381C, 0x381C, 0x381C, 0x381C, - 0x3C3C, 0x3FFC, 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { 0x8000, 0xC000, 0xE000, 0xF000, 0xF800, 0xFC00, 0xFE00, 0xFF00, 0xFF80, 0xFFC0, 0xFFE0, - 0xFFF0, 0xFFF8, 0xFFFC, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFC, 0xFFF8, 0xFFF0, 0xFFE0, - 0xFFC0, 0xFF80, 0xFF00, 0xFE00, 0xFC00, 0xF800, 0xF000, 0xE000, 0xC000, 0x8000 }, - { 0x8000, 0xC000, 0x6000, 0x3000, 0x1800, 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, - 0x0030, 0x0018, 0x000C, 0x0006, 0x0003, 0x0003, 0x0006, 0x000C, 0x0018, 0x0030, 0x0060, - 0x00C0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6000, 0xC000, 0x8000 }, - { 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, - 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF, 0x0FFF, 0x07FF, - 0x03FF, 0x01FF, 0x00FF, 0x007F, 0x003F, 0x001F, 0x000F, 0x0007, 0x0003, 0x0001 }, - { 0x0001, 0x0003, 0x0006, 0x000C, 0x0018, 0x0030, 0x0060, 0x00C0, 0x0180, 0x0300, 0x0600, - 0x0C00, 0x1800, 0x3000, 0x6000, 0xC000, 0xC000, 0x6000, 0x3000, 0x1800, 0x0C00, 0x0600, - 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, 0x000C, 0x0006, 0x0003, 0x0001 } -};
\ No newline at end of file diff --git a/src/shared/common.h b/src/shared/common.h deleted file mode 100644 index 4f6814c..0000000 --- a/src/shared/common.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef MELVIX_COMMON_H -#define MELVIX_COMMON_H - -// Syscalls -#define SYS_HALT 0 // Halt (debug) -#define SYS_EXIT 1 // Exit process -#define SYS_READ 2 // Read file -#define SYS_WRITE 3 // Write file -#define SYS_EXEC 4 // Execute file and kill parent -#define SYS_SPAWN 5 // Execute file and let parent alive -#define SYS_WAIT 6 // Wait for PID -#define SYS_GET_PID 7 // Get process id -#define SYS_MALLOC 8 // Allocate memory -#define SYS_FREE 9 // Free memory -#define SYS_GET 10 // Get kernel variable -#define SYS_MAP 11 // Map input to function - -// Get -#define GET_FRAMEBUFFER 0 - -// Mappings -#define MAP_KEYBOARD 0 -#define MAP_MOUSE 1 - -// Common event structs -struct keyboard_event { - int scancode; -}; - -struct mouse_event { - int mouse_x; - int mouse_y; -}; - -#endif
\ No newline at end of file diff --git a/src/shared/stdarg.h b/src/shared/stdarg.h deleted file mode 100644 index 2f45f23..0000000 --- a/src/shared/stdarg.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef MELVIX_STDARG_H -#define MELVIX_STDARG_H - -typedef __builtin_va_list va_list; -#define va_start __builtin_va_start -#define va_end __builtin_va_end -#define va_arg __builtin_va_arg - -#endif
\ No newline at end of file diff --git a/src/shared/stdbool.h b/src/shared/stdbool.h deleted file mode 100644 index 733ec28..0000000 --- a/src/shared/stdbool.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef MELVIX_STDBOOL_H -#define MELVIX_STDBOOL_H - -typedef int bool; - -#define true 1 -#define false 0 - -// For the strange people in the world -#define TRUE 1 -#define FALSE 0 - -#endif
\ No newline at end of file diff --git a/src/shared/stddef.h b/src/shared/stddef.h deleted file mode 100644 index f4bd1a2..0000000 --- a/src/shared/stddef.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef MELVIX_STDDEF_H -#define MELVIX_STDDEF_H - -// u32 - -#define NULL ((void *)0) - -#endif
\ No newline at end of file diff --git a/src/shared/stdint.h b/src/shared/stdint.h deleted file mode 100644 index 8ed1198..0000000 --- a/src/shared/stdint.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef MELVIX_STDINT_H -#define MELVIX_STDINT_H - -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; - -#endif
\ No newline at end of file diff --git a/src/userspace/libc/assert.h b/src/userspace/libc/assert.h deleted file mode 100644 index 5ff70ab..0000000 --- a/src/userspace/libc/assert.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef MELVIX_ASSERT_H -#define MELVIX_ASSERT_H - -#define __FILENAME__ \ - (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__) -#define assert(exp) (exp) ? 0 : _assert(__FILENAME__, __LINE__, __func__, #exp) - -#endif
\ No newline at end of file diff --git a/src/userspace/libc/assert/assert.c b/src/userspace/libc/assert/assert.c deleted file mode 100644 index efd9083..0000000 --- a/src/userspace/libc/assert/assert.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -void _assert(const char *file, int line, const char *func, const char *exp) -{ - printf("%s:%d: %s: Assertion '%s' failed", file, line, func, exp); - exit(1); -}
\ No newline at end of file diff --git a/src/userspace/libc/math.h b/src/userspace/libc/math.h deleted file mode 100644 index 0ecde4e..0000000 --- a/src/userspace/libc/math.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef MELVIX_MATH_H -#define MELVIX_MATH_H - -// Trigonometric - -// Hyperbolic - -// Exponential and logarithmic - -// Power -int pow(int base, int exp); - -// Error and gamma - -// Rounding and remainder - -// Floating point manipulation - -// Minimum, maximum, difference - -#endif
\ No newline at end of file diff --git a/src/userspace/libc/math/pow.c b/src/userspace/libc/math/pow.c deleted file mode 100644 index 5cdcfa5..0000000 --- a/src/userspace/libc/math/pow.c +++ /dev/null @@ -1,13 +0,0 @@ -int pow(int base, int exp) -{ - if (exp < 0) - return 0; - - if (!exp) - return 1; - - int ret = base; - for (int i = 1; i < exp; i++) - ret *= base; - return ret; -}
\ No newline at end of file diff --git a/src/userspace/libc/stdio.h b/src/userspace/libc/stdio.h deleted file mode 100644 index d6779dd..0000000 --- a/src/userspace/libc/stdio.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef MELVIX_STDIO_H -#define MELVIX_STDIO_H - -#include <stdarg.h> - -// File operations - -// Character input/output -char getch(); -void putch(char ch); -void puts(char *data); - -void printf(char *fmt, ...); -void vprintf(char *fmt, va_list args); - -#endif
\ No newline at end of file diff --git a/src/userspace/libc/stdio/getch.c b/src/userspace/libc/stdio/getch.c deleted file mode 100644 index 5f9655a..0000000 --- a/src/userspace/libc/stdio/getch.c +++ /dev/null @@ -1,75 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -// TODO: Move keymaps somewhere more appropriate -char keymap[128] = { - 0 /*E*/, 27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', - '\b', '\t', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', - '\n', 17 /*C*/, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '`', - 14 /*LS*/, '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 14 /*RS*/, '*', - 0, // Alt key - ' ', // Space bar - 15, // Caps lock - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // F keys - 0, // Num lock - 0, // Scroll lock - 0, // Home key - 0, // Up arrow - 0, // Page up - '-', - 0, // Left arrow - 0, - 0, // Right arrow - '+', - 0, // End key - 0, // Down arrow - 0, // Page down - 0, // Insert key - 0, // Delete key - 0, 0, 0, - 0, // F11 - 0, // F12 - 0, // Other keys -}; - -char shift_keymap[128] = { - 0 /*E*/, 27, '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', - '\b', '\t', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', - '\n', 17 /*C*/, 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', '~', - 14 /*LS*/, '|', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '<', '>', '?', 14 /*RS*/, '*', - 0, // Alt key - ' ', // Space bar - 15, // Caps lock - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // F keys - 0, // Num lock - 0, // Scroll lock - 0, // Home key - 0, // Up arrow - 0, // Page up - '-', - 0, // Left arrow - 0, - 0, // Right arrow - '+', - 0, // End key - 0, // Down arrow - 0, // Page down - 0, // Insert key - 0, // Delete key - 0, 0, 0, - 0, // F11 - 0, // F12 - 0, // Other keys -}; - -char *getch() -{ - // TODO: Add shift support - // TODO: Implement keyboard dev driver - u8 scancode = 42; //syscall_scancode(); - if ((scancode & 0x80) == 0) { // Press - return keymap[scancode]; - } else { // Release - return 0; - } -}
\ No newline at end of file diff --git a/src/userspace/libc/stdio/printf.c b/src/userspace/libc/stdio/printf.c deleted file mode 100644 index 3951250..0000000 --- a/src/userspace/libc/stdio/printf.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <stdarg.h> -#include <stdio.h> - -void printf(char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - vprintf(fmt, args); - va_end(args); -}
\ No newline at end of file diff --git a/src/userspace/libc/stdio/putch.c b/src/userspace/libc/stdio/putch.c deleted file mode 100644 index 2dad6dc..0000000 --- a/src/userspace/libc/stdio/putch.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <syscall.h> - -int is_transmit_empty() -{ - u8 value; - asm volatile("inb %1, %0" : "=a"(value) : "Nd"(0x3f8 + 5)); - return value & 0x20; -} - -void putch(char ch) -{ - while (is_transmit_empty() == 0) - ; - asm volatile("outb %0, %1" ::"a"(ch), "Nd"(0x3f8)); -} - -/*void putch(char ch) -{ - // TODO: Implement framebuffer writing - //if (ch != 0) - //syscall_putch(ch); -}*/
\ No newline at end of file diff --git a/src/userspace/libc/stdio/puts.c b/src/userspace/libc/stdio/puts.c deleted file mode 100644 index 979dd0a..0000000 --- a/src/userspace/libc/stdio/puts.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <stdint.h> -#include <stdio.h> -#include <string.h> - -void puts(char *data) -{ - for (u32 i = 0; i < strlen(data); i++) - putch(data[i]); -}
\ No newline at end of file diff --git a/src/userspace/libc/stdio/vprintf.c b/src/userspace/libc/stdio/vprintf.c deleted file mode 100644 index 691f153..0000000 --- a/src/userspace/libc/stdio/vprintf.c +++ /dev/null @@ -1,46 +0,0 @@ -#include <stdarg.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> - -void vprintf(char *fmt, va_list args) -{ - u8 readyToFormat = 0; - - char buff = 0; - - for (; *fmt; fmt++) { - if (readyToFormat) { - if (*fmt == '%') { - putch('%'); - readyToFormat = 0; - continue; - } - - buff = *fmt; - if (buff == 's') { - char *str = va_arg(args, char *); - puts(str); - readyToFormat = 0; - } else if (buff == 'x') { - char *p = htoa((u32)va_arg(args, int)); - puts(p); - free(p); - readyToFormat = 0; - } else if (buff == 'd') { - char *p = itoa(va_arg(args, int)); - puts(p); - free(p); - readyToFormat = 0; - } else if (buff == 'c') { - putch((char)va_arg(args, int)); - readyToFormat = 0; - } - } else { - if (*fmt == '%') - readyToFormat = 1; - else - putch(*fmt); - } - } -}
\ No newline at end of file diff --git a/src/userspace/libc/stdlib.h b/src/userspace/libc/stdlib.h deleted file mode 100644 index 4670b8c..0000000 --- a/src/userspace/libc/stdlib.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef MELVIX_STDLIB_H -#define MELVIX_STDLIB_H - -#include <stdint.h> - -// String conversion -char *itoa(int n); -int atoi(char *str); -char *htoa(u32 n); -int htoi(char *str); - -// Exit functions -void exit(u32 code); -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 - -// Memory management -void *malloc(u32 size); -void free(void *addr); - -#endif
\ No newline at end of file diff --git a/src/userspace/libc/stdlib/atoi.c b/src/userspace/libc/stdlib/atoi.c deleted file mode 100644 index 80897eb..0000000 --- a/src/userspace/libc/stdlib/atoi.c +++ /dev/null @@ -1,28 +0,0 @@ -#include <math.h> -#include <stddef.h> -#include <stdint.h> -#include <string.h> - -int atoi(char *str) -{ - u32 s_str = strlen(str); - if (!s_str) - return 0; - - u32 negative = 0; - if (str[0] == '-') - negative = 1; - - u32 i = 0; - if (negative) - i++; - - int ret = 0; - for (; i < s_str; i++) { - ret += (str[i] - '0') * pow(10, (int)((s_str - i) - 1)); - } - - if (negative) - ret *= -1; - return ret; -}
\ No newline at end of file diff --git a/src/userspace/libc/stdlib/exit.c b/src/userspace/libc/stdlib/exit.c deleted file mode 100644 index 03b54fe..0000000 --- a/src/userspace/libc/stdlib/exit.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -void exit(u32 code) -{ - syscall_exit(code); - while (1) { - }; -}
\ No newline at end of file diff --git a/src/userspace/libc/stdlib/free.c b/src/userspace/libc/stdlib/free.c deleted file mode 100644 index 65e9769..0000000 --- a/src/userspace/libc/stdlib/free.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -void free(void *addr) -{ - syscall_free((u32)addr); -}
\ No newline at end of file diff --git a/src/userspace/libc/stdlib/htoa.c b/src/userspace/libc/stdlib/htoa.c deleted file mode 100644 index 2b7d5c4..0000000 --- a/src/userspace/libc/stdlib/htoa.c +++ /dev/null @@ -1,31 +0,0 @@ -#include <stdint.h> -#include <stdlib.h> -#include <string.h> - -static const char HTOA_TABLE[] = "0123456789ABCDEF"; - -char *htoa(u32 n) -{ - char *ret = (char *)malloc(10); - - int i = 0; - while (n) { - ret[i++] = HTOA_TABLE[n & 0xF]; - n >>= 4; - } - - if (!i) { - ret[0] = '0'; - i++; - } - - for (; i <= 9; i++) - ret[i] = 0; - - char *aux = strdup(ret); - free(ret); - ret = aux; - - strinv(ret); - return ret; -}
\ No newline at end of file diff --git a/src/userspace/libc/stdlib/htoi.c b/src/userspace/libc/stdlib/htoi.c deleted file mode 100644 index 0d0ab30..0000000 --- a/src/userspace/libc/stdlib/htoi.c +++ /dev/null @@ -1,24 +0,0 @@ -#include <math.h> -#include <stddef.h> -#include <stdint.h> -#include <string.h> - -int htoi(char *str) -{ - u32 s_str = strlen(str); - - u32 i = 0; - int ret = 0; - for (; i < s_str; i++) { - char c = str[i]; - int aux = 0; - if (c >= '0' && c <= '9') - aux = c - '0'; - else if (c >= 'A' && c <= 'F') - aux = (c - 'A') + 10; - - ret += aux * pow(16, (int)((s_str - i) - 1)); - } - - return ret; -}
\ No newline at end of file diff --git a/src/userspace/libc/stdlib/itoa.c b/src/userspace/libc/stdlib/itoa.c deleted file mode 100644 index b960796..0000000 --- a/src/userspace/libc/stdlib/itoa.c +++ /dev/null @@ -1,43 +0,0 @@ -#include <math.h> -#include <stdint.h> -#include <stdlib.h> -#include <string.h> - -static const char ITOA_TABLE[] = "0123456789"; - -char *itoa(int n) -{ - if (!n) { - char *ret = (char *)malloc(2); - ret[0] = '0'; - ret[1] = 0; - return ret; - } - u32 negative = (u32)(n < 0); - if (negative) - n *= -1; - - int sz; - for (sz = 0; n % pow(10, sz) != n; sz++) { - } - - char *ret = (char *)malloc((u32)(sz + 1)); - - for (int i = 0; i < sz; i++) { - int digit = (n % pow(10, i + 1)) / pow(10, i); - ret[i] = ITOA_TABLE[digit]; - } - ret[sz] = 0; - - if (negative) { - char *aux = (char *)malloc((u32)(sz + 2)); - strcpy(aux, ret); - aux[sz] = '-'; - aux[sz + 1] = 0; - free(ret); - ret = aux; - } - - strinv(ret); - return ret; -}
\ No newline at end of file diff --git a/src/userspace/libc/stdlib/malloc.c b/src/userspace/libc/stdlib/malloc.c deleted file mode 100644 index 5eb3caa..0000000 --- a/src/userspace/libc/stdlib/malloc.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -void *malloc(u32 size) -{ - return (void *)syscall_malloc(size); -}
\ No newline at end of file diff --git a/src/userspace/libc/string.h b/src/userspace/libc/string.h deleted file mode 100644 index 2eb2fb6..0000000 --- a/src/userspace/libc/string.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef MELVIX_STRING_H -#define MELVIX_STRING_H - -#include <stddef.h> -#include <stdint.h> - -u32 strlen(char *str); - -void strcpy(char *dest, char *orig); - -void strdisp(char *str, int n); - -void strcat(char *dest, char *orig); - -void strcati(char *dest, char *orig); - -char strcmp(char *a, char *b); - -int strncmp(char *s1, char *s2, int c); - -char *strdup(char *orig); - -void strinv(char *str); - -char *strstr(char *in, char *str); - -char *strsep(char **stringp, char *delim); - -#endif
\ No newline at end of file diff --git a/src/userspace/libc/string/strcat.c b/src/userspace/libc/string/strcat.c deleted file mode 100644 index bb8f09b..0000000 --- a/src/userspace/libc/string/strcat.c +++ /dev/null @@ -1,12 +0,0 @@ -#include <stdint.h> -#include <string.h> - -void strcat(char *dest, char *orig) -{ - u32 s_dest = strlen(dest); - u32 s_orig = strlen(orig); - - for (u32 i = 0; i < s_orig; i++) - dest[s_dest + i] = orig[i]; - dest[s_dest + s_orig] = 0; -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strcati.c b/src/userspace/libc/string/strcati.c deleted file mode 100644 index d82fbfc..0000000 --- a/src/userspace/libc/string/strcati.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <stdint.h> -#include <string.h> - -void strcati(char *dest, char *orig) -{ - u32 s_orig = strlen(orig); - strdisp(dest, (int)s_orig); - for (u32 i = 0; i < s_orig; i++) - dest[i] = orig[i]; -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strcmp.c b/src/userspace/libc/string/strcmp.c deleted file mode 100644 index 932877d..0000000 --- a/src/userspace/libc/string/strcmp.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <stdint.h> -#include <string.h> - -char strcmp(char *a, char *b) -{ - if (strlen(a) != strlen(b)) - return 1; - - for (u32 i = 0; i < strlen(a); i++) - if (a[i] != b[i]) - return 1; - - return 0; -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strcpy.c b/src/userspace/libc/string/strcpy.c deleted file mode 100644 index a12d3e0..0000000 --- a/src/userspace/libc/string/strcpy.c +++ /dev/null @@ -1,11 +0,0 @@ -#include <stdint.h> -#include <string.h> - -void strcpy(char *dest, char *orig) -{ - u32 s_orig = strlen(orig); - - for (u32 i = 0; i < s_orig; i++) - dest[i] = orig[i]; - dest[s_orig] = 0; -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strdisp.c b/src/userspace/libc/string/strdisp.c deleted file mode 100644 index 88815ef..0000000 --- a/src/userspace/libc/string/strdisp.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <stdint.h> -#include <string.h> - -void strdisponce(char *str) -{ - for (u32 i = sizeof(str) + 2; i > 0; i--) - str[i] = str[i - 1]; - str[0] = 0; -} - -void strdisp(char *str, int n) -{ - for (int i = 0; i < n; i++) - strdisponce(str); -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strdup.c b/src/userspace/libc/string/strdup.c deleted file mode 100644 index a42b02d..0000000 --- a/src/userspace/libc/string/strdup.c +++ /dev/null @@ -1,12 +0,0 @@ -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -char *strdup(char *orig) -{ - u32 s_orig = strlen(orig); - char *ret = (char *)malloc(s_orig + 1); - strcpy(ret, orig); - return ret; -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strinv.c b/src/userspace/libc/string/strinv.c deleted file mode 100644 index 261e57e..0000000 --- a/src/userspace/libc/string/strinv.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <stdint.h> -#include <string.h> - -void strinv(char *str) -{ - u32 s_str = strlen(str); - - int iterations = (int)s_str / 2; - for (int i = 0; i < iterations; i++) { - char aux = str[i]; - str[i] = str[(s_str - i) - 1]; - str[(s_str - i) - 1] = aux; - } -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strlen.c b/src/userspace/libc/string/strlen.c deleted file mode 100644 index cb04675..0000000 --- a/src/userspace/libc/string/strlen.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <stdint.h> - -u32 strlen(char *str) -{ - u32 len = 0; - while (str[len]) - len++; - return len; -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strncmp.c b/src/userspace/libc/string/strncmp.c deleted file mode 100644 index 450fbd8..0000000 --- a/src/userspace/libc/string/strncmp.c +++ /dev/null @@ -1,16 +0,0 @@ -int strncmp(char *s1, char *s2, int c) -{ - int result = 0; - - while (c) { - result = *s1 - *s2++; - - if ((result != 0) || (*s1++ == 0)) { - break; - } - - c--; - } - - return result; -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strsep.c b/src/userspace/libc/string/strsep.c deleted file mode 100644 index badbf0f..0000000 --- a/src/userspace/libc/string/strsep.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <stddef.h> - -char *strsep(char **stringp, char *delim) -{ - char *s; - const char *spanp; - int c, sc; - char *tok; - if ((s = *stringp) == NULL) - return (NULL); - for (tok = s;;) { - c = *s++; - spanp = delim; - do { - if ((sc = *spanp++) == c) { - if (c == 0) - s = NULL; - else - s[-1] = 0; - *stringp = s; - return (tok); - } - } while (sc != 0); - } -}
\ No newline at end of file diff --git a/src/userspace/libc/string/strstr.c b/src/userspace/libc/string/strstr.c deleted file mode 100644 index c87f3fc..0000000 --- a/src/userspace/libc/string/strstr.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <stdint.h> -#include <string.h> - -char *strstr(char *in, char *str) -{ - char c; - u32 len; - - c = *str++; - if (!c) - return (char *)in; - - len = strlen(str); - do { - char sc; - - do { - sc = *in++; - if (!sc) - return (char *)0; - } while (sc != c); - } while (strncmp(in, str, len) != 0); - - return (char *)(in - 1); -}
\ No newline at end of file diff --git a/src/userspace/libc/syscall.c b/src/userspace/libc/syscall.c deleted file mode 100644 index fb00a12..0000000 --- a/src/userspace/libc/syscall.c +++ /dev/null @@ -1,30 +0,0 @@ -#include <common.h> -#include <stdint.h> -#include <syscall.h> - -/** - * DEFINITIONS - */ -DEFN_SYSCALL0(halt, SYS_HALT); - -DEFN_SYSCALL1(exit, SYS_EXIT, u32); - -DEFN_SYSCALL4(read, SYS_READ, char *, u32, u32, u8 *); - -DEFN_SYSCALL4(write, SYS_WRITE, char *, u32, u32, u8 *); - -DEFN_SYSCALL1(exec, SYS_EXEC, char *); - -DEFN_SYSCALL1(spawn, SYS_SPAWN, char *); - -DEFN_SYSCALL3(wait, SYS_WAIT, u32, u32 *, u32); - -DEFN_SYSCALL0(get_pid, SYS_GET_PID); - -DEFN_SYSCALL1(malloc, SYS_MALLOC, u32); - -DEFN_SYSCALL1(free, SYS_FREE, u32); - -DEFN_SYSCALL1(get, SYS_GET, u32); - -DEFN_SYSCALL2(map, SYS_MAP, u32, u8 *);
\ No newline at end of file diff --git a/src/userspace/libc/syscall.h b/src/userspace/libc/syscall.h deleted file mode 100644 index cb1551a..0000000 --- a/src/userspace/libc/syscall.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef MELVIX_SYSCALL_H -#define MELVIX_SYSCALL_H - -#include <stdint.h> - -#define DECL_SYSCALL0(fn) int syscall_##fn(); -#define DECL_SYSCALL1(fn, p1) int syscall_##fn(p1); -#define DECL_SYSCALL2(fn, p1, p2) int syscall_##fn(p1, p2); -#define DECL_SYSCALL3(fn, p1, p2, p3) int syscall_##fn(p1, p2, p3); -#define DECL_SYSCALL4(fn, p1, p2, p3, p4) int syscall_##fn(p1, p2, p3, p4); -#define DECL_SYSCALL5(fn, p1, p2, p3, p4, p5) int syscall_##fn(p1, p2, p3, p4, p5); - -#define DEFN_SYSCALL0(fn, num) \ - int syscall_##fn() \ - { \ - int a; \ - asm volatile("int $0x80" : "=a"(a) : "0"(num)); \ - return a; \ - } - -#define DEFN_SYSCALL1(fn, num, P1) \ - int syscall_##fn(P1 p1) \ - { \ - int a; \ - asm volatile("int $0x80" : "=a"(a) : "0"(num), "b"((int)p1)); \ - return a; \ - } - -#define DEFN_SYSCALL2(fn, num, P1, P2) \ - int syscall_##fn(P1 p1, P2 p2) \ - { \ - int a; \ - asm volatile("int $0x80" : "=a"(a) : "0"(num), "b"((int)p1), "c"((int)p2)); \ - return a; \ - } - -#define DEFN_SYSCALL3(fn, num, P1, P2, P3) \ - int syscall_##fn(P1 p1, P2 p2, P3 p3) \ - { \ - int a; \ - asm volatile("int $0x80" \ - : "=a"(a) \ - : "0"(num), "b"((int)p1), "c"((int)p2), "d"((int)p3)); \ - return a; \ - } - -#define DEFN_SYSCALL4(fn, num, P1, P2, P3, P4) \ - int syscall_##fn(P1 p1, P2 p2, P3 p3, P4 p4) \ - { \ - int a; \ - asm volatile("int $0x80" \ - : "=a"(a) \ - : "0"(num), "b"((int)p1), "c"((int)p2), "d"((int)p3), "S"((int)p4)); \ - return a; \ - } - -#define DEFN_SYSCALL5(fn, num) \ - int syscall_##fn(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) \ - { \ - int a; \ - asm volatile("int $0x80" \ - : "=a"(a) \ - : "0"(num), "b"((int)p1), "c"((int)p2), "d"((int)p3), "S"((int)p4), \ - "D"((int)p5)); \ - return a; \ - } - -/** - * DECLARATIONS - */ -DECL_SYSCALL0(halt); - -DECL_SYSCALL1(exit, u32); - -DECL_SYSCALL0(fork); - -DECL_SYSCALL4(read, char *, u32, u32, u8 *); - -DECL_SYSCALL4(write, char *, u32, u32, u8 *); - -DECL_SYSCALL1(exec, char *); - -DECL_SYSCALL1(spawn, char *); - -DECL_SYSCALL3(wait, u32, u32 *, u32); - -DECL_SYSCALL0(get_pid); - -DECL_SYSCALL1(malloc, u32); - -DECL_SYSCALL1(free, u32); - -DECL_SYSCALL1(get, u32); - -DECL_SYSCALL2(map, u32, u8 *); - -#endif
\ No newline at end of file diff --git a/src/userspace/libc/unistd.h b/src/userspace/libc/unistd.h deleted file mode 100644 index efe25c7..0000000 --- a/src/userspace/libc/unistd.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef MELVIX_UNISTD_H -#define MELVIX_UNISTD_H - -#include <stdint.h> - -u32 exec(char *path); - -u32 spawn(char *path); - -u32 get_pid(); - -u32 read(char *path, u32 offset, u32 count, u8 *buf); - -u32 write(char *path, u32 offset, u32 count, u8 *buf); - -// These should be somewhere else ig -u32 wait(u32 *status); -u32 wait_pid(u32 pid, u32 *status, u32 options); - -#endif
\ No newline at end of file diff --git a/src/userspace/libc/unistd/exec.c b/src/userspace/libc/unistd/exec.c deleted file mode 100644 index fd08d57..0000000 --- a/src/userspace/libc/unistd/exec.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -u32 exec(char *path) -{ - return syscall_exec(path); -}
\ No newline at end of file diff --git a/src/userspace/libc/unistd/get_pid.c b/src/userspace/libc/unistd/get_pid.c deleted file mode 100644 index c42f460..0000000 --- a/src/userspace/libc/unistd/get_pid.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -u32 get_pid() -{ - return syscall_get_pid(); -}
\ No newline at end of file diff --git a/src/userspace/libc/unistd/read.c b/src/userspace/libc/unistd/read.c deleted file mode 100644 index 7ae2626..0000000 --- a/src/userspace/libc/unistd/read.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -u32 read(char *path, u32 offset, u32 count, u8 *buf) -{ - return syscall_read(path, offset, count, buf); -}
\ No newline at end of file diff --git a/src/userspace/libc/unistd/spawn.c b/src/userspace/libc/unistd/spawn.c deleted file mode 100644 index 91ed340..0000000 --- a/src/userspace/libc/unistd/spawn.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -u32 spawn(char *path) -{ - return syscall_spawn(path); -}
\ No newline at end of file diff --git a/src/userspace/libc/unistd/wait.c b/src/userspace/libc/unistd/wait.c deleted file mode 100644 index 7c0a6fb..0000000 --- a/src/userspace/libc/unistd/wait.c +++ /dev/null @@ -1,12 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -u32 wait_pid(u32 pid, u32 *status, u32 options) -{ - return syscall_wait(pid, status, options); -} - -u32 wait(u32 *status) -{ - return wait_pid(-1, status, 0); -}
\ No newline at end of file diff --git a/src/userspace/libc/unistd/write.c b/src/userspace/libc/unistd/write.c deleted file mode 100644 index cd1a0f6..0000000 --- a/src/userspace/libc/unistd/write.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdint.h> -#include <syscall.h> - -u32 write(char *path, u32 offset, u32 count, u8 *buf) -{ - return syscall_write(path, offset, count, buf); -}
\ No newline at end of file diff --git a/src/userspace/libgui/draw.c b/src/userspace/libgui/draw.c deleted file mode 100644 index 4576808..0000000 --- a/src/userspace/libgui/draw.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <gui.h> -#include <stdint.h> -#include <stdio.h> - -void gui_draw_rectangle(int x1, int y1, int x2, int y2, const u32 color[3]) -{ - int pos1 = x1 * vbe_bpl + y1 * vbe_pitch; - char *draw = (char *)&fb[pos1]; - for (int i = 0; i <= y2 - y1; i++) { - for (int j = 0; j <= x2 - x1; j++) { - draw[vbe_bpl * j] = (char)color[2]; - draw[vbe_bpl * j + 1] = (char)color[1]; - draw[vbe_bpl * j + 2] = (char)color[0]; - } - draw += vbe_pitch; - } -} - -void gui_screen_clear() -{ - gui_draw_rectangle(0, 0, vbe_width - 1, vbe_height - 1, terminal_background); -}
\ No newline at end of file diff --git a/src/userspace/libgui/gui.h b/src/userspace/libgui/gui.h deleted file mode 100644 index d210999..0000000 --- a/src/userspace/libgui/gui.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef MELVIX_GUI_H -#define MELVIX_GUI_H - -#include <stdint.h> - -struct vbe_mode_info { - u16 attributes; - u16 pitch; - u16 width; - u16 height; - u8 bpp; - u8 memory_model; - u32 framebuffer; -}; - -struct font { - u16 font_32[758][32]; - u16 font_24[758][24]; - u8 font_16[758][16]; - u16 cursor[19]; -}; - -struct pointers { - struct vbe_mode_info *mode_info; - struct font *font; -}; - -u32 terminal_color[3]; -u32 terminal_background[3]; -enum gui_color { - gui_black = 0x1d1f24, - gui_red = 0xE06C75, - gui_green = 0x98C379, - gui_yellow = 0xE5C07B, - gui_blue = 0x61AFEF, - gui_magenta = 0xC678DD, - gui_cyan = 0x56B6C2, - gui_white = 0xABB2BF, - gui_dark_black = 0x3E4452, - gui_dark_red = 0xBE5046, - gui_dark_green = 0x98C379, - gui_dark_yellow = 0xD19A66, - gui_dark_blue = 0x61AFEF, - gui_dark_magenta = 0xC678DD, - gui_dark_cyan = 0x56B6C2, - gui_dark_white = 0x5C6370, -}; - -u8 *fb; -int vbe_width; -int vbe_height; -int vbe_pitch; -int vbe_bpl; - -struct pointers *pointers; - -void gui_init(); - -void gui_draw_rectangle(int x1, int y1, int x2, int y2, const u32 color[3]); -void gui_screen_clear(); - -void gui_convert_color(u32 *color_array, u32 color); - -#endif
\ No newline at end of file diff --git a/src/userspace/libgui/init.c b/src/userspace/libgui/init.c deleted file mode 100644 index 2e5d9c5..0000000 --- a/src/userspace/libgui/init.c +++ /dev/null @@ -1,27 +0,0 @@ -#include <gui.h> -#include <stdint.h> -#include <stdio.h> -#include <syscall.h> - -struct pointers *pointers; - -u32 terminal_color[3] = { 0xab, 0xb2, 0xbf }; -u32 terminal_background[3] = { 0x1d, 0x1f, 0x24 }; - -void gui_init() -{ - // TODO: Implement framebuffer device - // pointers = syscall_pointers(); - - vbe_width = pointers->mode_info->width; - vbe_height = pointers->mode_info->height; - vbe_pitch = pointers->mode_info->pitch; - vbe_bpl = pointers->mode_info->bpp >> 3; - - // TODO: Why tf is the kheap magic stored in the first few bytes?! - fb = (pointers->mode_info->framebuffer << 16); - - /* gui_screen_clear(); */ - /* printf("%dx%dx%d\n", vbe_width, vbe_height, vbe_bpl << 3); */ - /* printf("0x%x\n", fb); */ -}
\ No newline at end of file diff --git a/src/userspace/libgui/util.c b/src/userspace/libgui/util.c deleted file mode 100644 index f108822..0000000 --- a/src/userspace/libgui/util.c +++ /dev/null @@ -1,33 +0,0 @@ -#include <gui.h> -#include <stdint.h> - -void gui_convert_color(u32 *color_array, u32 color) -{ - u8 red = (u8)((color >> 16) & 255); - u8 green = (u8)((color >> 8) & 255); - u8 blue = (u8)(color & 255); - - if ((vbe_bpl << 3) == 8) { - u32 new_color = - ((red * 7 / 255) << 5) + ((green * 7 / 255) << 2) + (blue * 3 / 255); - color_array[0] = (new_color >> 16) & 255; - color_array[1] = (new_color >> 8) & 255; - color_array[2] = new_color & 255; - } else if ((vbe_bpl << 3) == 16) { - u32 new_color = - (((red & 0b11111000) << 8) + ((green & 0b11111100) << 3) + (blue >> 3)); - color_array[0] = (new_color >> 16) & 255; - color_array[1] = (new_color >> 8) & 255; - color_array[2] = new_color & 255; - } else if ((vbe_bpl << 3) == 24 || (vbe_bpl << 3) == 32) { - color_array[0] = red; - color_array[1] = green; - color_array[2] = blue; - } -} - -void gui_set_color(u32 color) -{ - gui_convert_color(terminal_color, color); - gui_convert_color(terminal_background, gui_black); -}
\ No newline at end of file diff --git a/src/userspace/linker.ld b/src/userspace/linker.ld deleted file mode 100644 index 69018c4..0000000 --- a/src/userspace/linker.ld +++ /dev/null @@ -1,24 +0,0 @@ -ENTRY(main) -SECTIONS -{ - .text 0x40000000: - { - code = .; _code = .; __code = .; - *(.text) - } - - .data ALIGN(0x400000): - { - data = .; _data = .; __data = .; - *(.data) - *(.rodata) - } - - .bss ALIGN(0x400000): - { - bss = .; _bss = .; __bss = .; - *(.bss) - } - - end = .; _end = .; __end = .; -}
\ No newline at end of file diff --git a/src/userspace/programs/init.c b/src/userspace/programs/init.c deleted file mode 100644 index 8e5887f..0000000 --- a/src/userspace/programs/init.c +++ /dev/null @@ -1,46 +0,0 @@ -#include <common.h> -#include <gui.h> -#include <stdio.h> -#include <stdlib.h> -#include <syscall.h> -#include <unistd.h> - -u32 cpu_flags() -{ - u32 flags; - asm volatile("pushf\n" - "pop %0\n" - : "=rm"(flags)::"memory"); - return flags; -} - -int interrupts_enabled() -{ - return (cpu_flags() & 0x200) == 0x200; -} - -void main() -{ - while (1) { - }; - if (get_pid() != 1) { - printf("Wrong PID!\n"); - exit(1); - } - - if (interrupts_enabled()) - printf("INTs enabled :)\n"); - else - printf("INTs disabled :(\n"); - - // TODO: Fix page fault when mallocing - printf("Initializing userspace... %d\n", 42); - - // TODO: Fix scheduler turning off after spawn - spawn("/bin/sh"); - - printf("Looping in init\n"); - while (1) { - //printf("B"); - }; -}
\ No newline at end of file diff --git a/src/userspace/programs/sh.c b/src/userspace/programs/sh.c deleted file mode 100644 index 2575c26..0000000 --- a/src/userspace/programs/sh.c +++ /dev/null @@ -1,42 +0,0 @@ -#include <common.h> -#include <gui.h> -#include <stddef.h> -#include <stdint.h> -#include <stdio.h> -#include <syscall.h> -#include <unistd.h> - -void test(u8 *data) -{ - printf("."); -} - -u32 cpu_flags() -{ - u32 flags; - asm volatile("pushf\n" - "pop %0\n" - : "=rm"(flags)::"memory"); - return flags; -} - -int interrupts_enabled() -{ - return (cpu_flags() & 0x200) == 0x200; -} - -void main() -{ - printf("Shell started\n"); - if (interrupts_enabled()) - printf("INTs enabled :)\n"); - else - printf("INTs disabled :(\n"); - - //syscall_map(MAP_KEYBOARD, (u32)&test); - - printf("Looping in shell\n"); - while (1) { - //printf("A"); - }; -}
\ No newline at end of file |