From 014236c86143ff289b15747d684f9e81bd1ff697 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Wed, 4 Oct 2006 08:38:06 -0700 Subject: [PATCH] amd64 stub: fix length of move for non-small programs --- src/p_lx_elf.cpp | 13 +- src/stub/amd64-linux.elf-entry.h | 849 ++++++++++---------- src/stub/src/amd64-linux.elf-entry.S | 22 +- src/stub/tmp/amd64-linux.elf-entry.bin.dump | 8 +- 4 files changed, 443 insertions(+), 449 deletions(-) diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index d4091f49..24b58002 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -589,7 +589,7 @@ PackLinuxElf64amd::defineSymbols(Filter const *) adrx = adru + hlen; lenm = PAGE_SIZE + len; lenu = PAGE_SIZE + len; - cntc = len >> 3; + cntc = len >> 3; // over-estimate; corrected at runtime } else { adrm = lo_va_stub + len; @@ -603,14 +603,19 @@ PackLinuxElf64amd::defineSymbols(Filter const *) adrm = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary adrc = PAGE_MASK & (~PAGE_MASK + adrc); // round up to page boundary - //avoid circularity linker->defineSymbol("LENX", sz_pack2 - hlen); linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion - linker->defineSymbol("CNTC", cntc); // count for copy + // For actual moving, we need the true count, which depends on sz_pack2 + // and is not yet known. So the runtime stub detects "no move" + // if adrm==adrc, and otherwise uses actual sz_pack2 to compute cntc. + //linker->defineSymbol("CNTC", cntc); // count for copy + linker->defineSymbol("LENU", lenu); // len for unmap linker->defineSymbol("ADRC", adrc); // addr for copy linker->defineSymbol("ADRU", adru); // addr for unmap - linker->defineSymbol("JMPU", 12 + lo_va_user); // trampoline for unmap +#define EI_NIDENT 16 /* */ + linker->defineSymbol("JMPU", EI_NIDENT -4 + lo_va_user); // unmap trampoline +#undef EI_NIDENT linker->defineSymbol("LENM", lenm); // len for map linker->defineSymbol("ADRM", adrm); // addr for map #undef PAGE_SIZE diff --git a/src/stub/amd64-linux.elf-entry.h b/src/stub/amd64-linux.elf-entry.h index 78237cc5..6586fa51 100644 --- a/src/stub/amd64-linux.elf-entry.h +++ b/src/stub/amd64-linux.elf-entry.h @@ -1,4 +1,4 @@ -/* amd64-linux.elf-entry.h -- created from amd64-linux.elf-entry.bin, 12820 (0x3214) bytes +/* amd64-linux.elf-entry.h -- created from amd64-linux.elf-entry.bin, 12687 (0x318f) bytes This file is part of the UPX executable compressor. @@ -27,14 +27,14 @@ */ -#define LINUX_ELF64AMD_LOADER_SIZE 12820 -#define LINUX_ELF64AMD_LOADER_ADLER32 0x6f6b99a6 -#define LINUX_ELF64AMD_LOADER_CRC32 0xd35c8dea +#define LINUX_ELF64AMD_LOADER_SIZE 12687 +#define LINUX_ELF64AMD_LOADER_ADLER32 0xfad48a76 +#define LINUX_ELF64AMD_LOADER_CRC32 0x4e575312 -unsigned char linux_elf64amd_loader[12820] = { +unsigned char linux_elf64amd_loader[12687] = { 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ - 0, 0, 0, 0, 0, 0, 0, 0,104, 24, 0, 0, 0, 0, 0, 0, /* 0x 20 */ + 0, 0, 0, 0, 0, 0, 0, 0,112, 24, 0, 0, 0, 0, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 23, 0, 20, 0, /* 0x 30 */ 232, 0, 0, 0, 0, 85, 83, 81, 82, 72, 1,254, 86, 72,137,254, /* 0x 40 */ 72,137,215, 49,219, 49,201, 72,131,205,255,232, 80, 0, 0, 0, /* 0x 50 */ @@ -407,431 +407,422 @@ unsigned char linux_elf64amd_loader[12820] = { 5,106,127, 95,106, 60, 88, 15, 5, 91,191, 0, 0, 0, 0,106, /* 0x1740 */ 7, 90,190, 0, 0, 0, 0,106, 50, 65, 90, 69, 41,192,106, 9, /* 0x1750 */ 88, 15, 5, 57,199, 15,133, 0, 0, 0, 0,104, 0, 0, 0, 0, /* 0x1760 */ -104, 0, 0, 0, 0,190, 0, 0, 0, 0,104, 0, 0, 0, 0,185, /* 0x1770 */ - 0, 0, 0, 0,104, 0, 0, 0, 0, 65, 87,137,250, 41,242, 1, /* 0x1780 */ -213, 1,211,252,243, 72,165,151,137,222, 80,146,173, 80, 72,137, /* 0x1790 */ -225,173,151,173, 68, 15,182,192,135,254,255,213, 89,195, 93, 68, /* 0x17a0 */ -139,125,247, 65,129,239,200, 0, 0, 0,232,138,255,255,255, 0, /* 0x17b0 */ - 46,115,121,109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, /* 0x17c0 */ - 46,115,104,115,116,114,116, 97, 98, 0, 46,114,101,108, 97, 69, /* 0x17d0 */ - 76, 70, 77, 65, 73, 78, 88, 0, 78, 82, 86, 95, 72, 69, 65, 68, /* 0x17e0 */ - 0, 46,114,101,108, 97, 78, 82, 86, 50, 69, 0, 46,114,101,108, /* 0x17f0 */ - 97, 78, 82, 86, 50, 68, 0, 46,114,101,108, 97, 78, 82, 86, 50, /* 0x1800 */ - 66, 0, 46,114,101,108, 97, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x1810 */ - 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 0, 76, 90, 77, /* 0x1820 */ - 65, 95, 68, 69, 67, 50, 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1830 */ - 51, 48, 0, 78, 82, 86, 95, 84, 65, 73, 76, 0, 46,114,101,108, /* 0x1840 */ - 97, 69, 76, 70, 77, 65, 73, 78, 89, 0, 46,114,101,108, 97, 69, /* 0x1850 */ - 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1860 */ +104, 0, 0, 0, 0,190, 0, 0, 0, 0,104, 0, 0, 0, 0,104, /* 0x1770 */ + 0, 0, 0, 0, 65, 87, 41,201,137,250, 41,242,116, 14, 1,213, /* 0x1780 */ + 1,211, 68,137,249,193,233, 3,252,243, 72,165,151,137,222, 80, /* 0x1790 */ +146,173, 80, 72,137,225,173,151,173, 68, 15,182,192,135,254,255, /* 0x17a0 */ +213, 89,195, 93, 68,139,125,247, 65,129,239,200, 0, 0, 0,232, /* 0x17b0 */ +133,255,255,255, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116, /* 0x17c0 */ +114,116, 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46, /* 0x17d0 */ +114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 88, 0, 78, 82, 86, /* 0x17e0 */ + 95, 72, 69, 65, 68, 0, 46,114,101,108, 97, 78, 82, 86, 50, 69, /* 0x17f0 */ + 0, 46,114,101,108, 97, 78, 82, 86, 50, 68, 0, 46,114,101,108, /* 0x1800 */ + 97, 78, 82, 86, 50, 66, 0, 46,114,101,108, 97, 76, 90, 77, 65, /* 0x1810 */ + 95, 69, 76, 70, 48, 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x1820 */ + 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 0, 76, 90, 77, /* 0x1830 */ + 65, 95, 68, 69, 67, 51, 48, 0, 78, 82, 86, 95, 84, 65, 73, 76, /* 0x1840 */ + 0, 46,114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 89, 0, 46, /* 0x1850 */ +114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0, /* 0x1860 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1870 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1880 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1890 */ - 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, /* 0x18a0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18b0 */ - 64, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, /* 0x18c0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x18d0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, /* 0x18e0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18f0 */ -104, 32, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1900 */ - 21, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1910 */ - 24, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, /* 0x1920 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1930 */ - 77, 0, 0, 0, 0, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, /* 0x1940 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1950 */ - 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 1, 0, 0, 0, /* 0x1960 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1970 */ -179, 0, 0, 0, 0, 0, 0, 0,183, 0, 0, 0, 0, 0, 0, 0, /* 0x1980 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1990 */ - 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0, 0, 0, /* 0x19a0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19b0 */ -128, 32, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x19c0 */ - 21, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x19d0 */ - 24, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 1, 0, 0, 0, /* 0x19e0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19f0 */ -106, 1, 0, 0, 0, 0, 0, 0,158, 0, 0, 0, 0, 0, 0, 0, /* 0x1a00 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1a10 */ - 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 4, 0, 0, 0, /* 0x1a20 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a30 */ -176, 32, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x1a40 */ - 21, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1a50 */ - 24, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 1, 0, 0, 0, /* 0x1a60 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a70 */ - 8, 2, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, /* 0x1a80 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1a90 */ - 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 4, 0, 0, 0, /* 0x1aa0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ab0 */ -224, 32, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x1ac0 */ - 21, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1ad0 */ - 24, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 1, 0, 0, 0, /* 0x1ae0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1af0 */ -152, 2, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, /* 0x1b00 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1b10 */ - 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 4, 0, 0, 0, /* 0x1b20 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b30 */ - 16, 33, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1b40 */ - 21, 0, 0, 0, 10, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1b50 */ - 24, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 1, 0, 0, 0, /* 0x1b60 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b70 */ -252, 2, 0, 0, 0, 0, 0, 0,247, 9, 0, 0, 0, 0, 0, 0, /* 0x1b80 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1b90 */ - 0, 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0, 1, 0, 0, 0, /* 0x1ba0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bb0 */ -243, 12, 0, 0, 0, 0, 0, 0,247, 9, 0, 0, 0, 0, 0, 0, /* 0x1bc0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1bd0 */ - 0, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, /* 0x1be0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bf0 */ -234, 22, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, /* 0x1c00 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1c10 */ - 0, 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, /* 0x1c20 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c30 */ -254, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c40 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1c50 */ - 0, 0, 0, 0, 0, 0, 0, 0,146, 0, 0, 0, 1, 0, 0, 0, /* 0x1c60 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c70 */ -254, 22, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, /* 0x1c80 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1c90 */ - 0, 0, 0, 0, 0, 0, 0, 0,141, 0, 0, 0, 4, 0, 0, 0, /* 0x1ca0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1cb0 */ - 40, 33, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1cc0 */ - 21, 0, 0, 0, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1cd0 */ - 24, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, /* 0x1ce0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1cf0 */ - 56, 23, 0, 0, 0, 0, 0, 0,135, 0, 0, 0, 0, 0, 0, 0, /* 0x1d00 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1d10 */ - 0, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 4, 0, 0, 0, /* 0x1d20 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d30 */ - 64, 33, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, /* 0x1d40 */ - 21, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1d50 */ - 24, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, /* 0x1d60 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d70 */ -191, 23, 0, 0, 0, 0, 0, 0,169, 0, 0, 0, 0, 0, 0, 0, /* 0x1d80 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1d90 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, /* 0x1da0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1db0 */ - 40, 30, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0, /* 0x1dc0 */ - 22, 0, 0, 0, 13, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1dd0 */ - 24, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, /* 0x1de0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1df0 */ - 56, 32, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x1e00 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1e10 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e20 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18a0 */ + 32, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18b0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, /* 0x18c0 */ + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18d0 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18e0 */ + 27, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18f0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 88, 32, 0, 0, 0, 0, 0, 0, /* 0x1900 */ + 24, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, /* 0x1910 */ + 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1920 */ + 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1930 */ + 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, /* 0x1940 */ +102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1950 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1960 */ + 55, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1970 */ + 0, 0, 0, 0, 0, 0, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, /* 0x1980 */ +183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1990 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19a0 */ + 50, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19b0 */ + 0, 0, 0, 0, 0, 0, 0, 0,112, 32, 0, 0, 0, 0, 0, 0, /* 0x19c0 */ + 48, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 4, 0, 0, 0, /* 0x19d0 */ + 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x19e0 */ + 66, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19f0 */ + 0, 0, 0, 0, 0, 0, 0, 0,106, 1, 0, 0, 0, 0, 0, 0, /* 0x1a00 */ +158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a10 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a20 */ + 61, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a30 */ + 0, 0, 0, 0, 0, 0, 0, 0,160, 32, 0, 0, 0, 0, 0, 0, /* 0x1a40 */ + 48, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, /* 0x1a50 */ + 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1a60 */ + 77, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a70 */ + 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, /* 0x1a80 */ +144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a90 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1aa0 */ + 72, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ab0 */ + 0, 0, 0, 0, 0, 0, 0, 0,208, 32, 0, 0, 0, 0, 0, 0, /* 0x1ac0 */ + 48, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 8, 0, 0, 0, /* 0x1ad0 */ + 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1ae0 */ + 88, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1af0 */ + 0, 0, 0, 0, 0, 0, 0, 0,152, 2, 0, 0, 0, 0, 0, 0, /* 0x1b00 */ +100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b10 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b20 */ + 83, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b30 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, /* 0x1b40 */ + 24, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, /* 0x1b50 */ + 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1b60 */ + 99, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b70 */ + 0, 0, 0, 0, 0, 0, 0, 0,252, 2, 0, 0, 0, 0, 0, 0, /* 0x1b80 */ +247, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b90 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ba0 */ +110, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bb0 */ + 0, 0, 0, 0, 0, 0, 0, 0,243, 12, 0, 0, 0, 0, 0, 0, /* 0x1bc0 */ +247, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bd0 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1be0 */ +121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bf0 */ + 0, 0, 0, 0, 0, 0, 0, 0,234, 22, 0, 0, 0, 0, 0, 0, /* 0x1c00 */ + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c10 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c20 */ +132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c30 */ + 0, 0, 0, 0, 0, 0, 0, 0,254, 22, 0, 0, 0, 0, 0, 0, /* 0x1c40 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c50 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c60 */ +146, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c70 */ + 0, 0, 0, 0, 0, 0, 0, 0,254, 22, 0, 0, 0, 0, 0, 0, /* 0x1c80 */ + 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c90 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ca0 */ +141, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1cb0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 24, 33, 0, 0, 0, 0, 0, 0, /* 0x1cc0 */ + 24, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 16, 0, 0, 0, /* 0x1cd0 */ + 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1ce0 */ +160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1cf0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 56, 23, 0, 0, 0, 0, 0, 0, /* 0x1d00 */ +140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d10 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d20 */ +155, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d30 */ + 0, 0, 0, 0, 0, 0, 0, 0, 48, 33, 0, 0, 0, 0, 0, 0, /* 0x1d40 */ +192, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 18, 0, 0, 0, /* 0x1d50 */ + 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1d60 */ + 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d70 */ + 0, 0, 0, 0, 0, 0, 0, 0,196, 23, 0, 0, 0, 0, 0, 0, /* 0x1d80 */ +169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d90 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1da0 */ + 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1db0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 48, 30, 0, 0, 0, 0, 0, 0, /* 0x1dc0 */ +248, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 13, 0, 0, 0, /* 0x1dd0 */ + 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1de0 */ + 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1df0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 40, 32, 0, 0, 0, 0, 0, 0, /* 0x1e00 */ + 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e10 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e30 */ - 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e40 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 14, 0, /* 0x1e50 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e60 */ - 0, 0, 0, 0, 3, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e70 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 18, 0, /* 0x1e80 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e90 */ - 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ea0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, /* 0x1eb0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ec0 */ - 0, 0, 0, 0, 3, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ed0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 8, 0, /* 0x1ee0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ef0 */ - 0, 0, 0, 0, 3, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f00 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 0, /* 0x1f10 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f20 */ - 0, 0, 0, 0, 3, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f30 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 15, 0, /* 0x1f40 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f50 */ - 1, 0, 0, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f60 */ - 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, /* 0x1f70 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f80 */ - 13, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f90 */ - 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, /* 0x1fa0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fb0 */ - 23, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fc0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 16, 0, 0, 0, /* 0x1fd0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fe0 */ - 33, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ff0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 16, 0, 0, 0, /* 0x2000 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2010 */ - 43, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2020 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 95,115,116, 97,114,116, 0, /* 0x2030 */ - 65, 68, 82, 77, 0, 76, 69, 78, 77, 0, 74, 77, 80, 85, 0, 65, /* 0x2040 */ - 68, 82, 85, 0, 65, 68, 82, 67, 0, 76, 69, 78, 85, 0, 67, 78, /* 0x2050 */ - 84, 67, 0, 65, 68, 82, 88, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x2060 */ - 2, 0, 0, 0, 4, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, /* 0x2070 */ -174, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, /* 0x2080 */ - 33, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, /* 0x2090 */ - 2, 0, 0, 0, 3, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x20a0 */ -149, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, /* 0x20b0 */ - 33, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, /* 0x20c0 */ - 2, 0, 0, 0, 3, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x20d0 */ -138, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, /* 0x20e0 */ - 33, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, /* 0x20f0 */ - 2, 0, 0, 0, 3, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x2100 */ - 6, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, /* 0x2110 */ - 16, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x2120 */ - 2, 0, 0, 0, 4, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x2130 */ - 19, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, /* 0x2140 */ - 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, /* 0x2150 */ - 10, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2160 */ - 52, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 16, 0, 0, 0, /* 0x2170 */ - 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, /* 0x2180 */ - 10, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2190 */ - 62, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 18, 0, 0, 0, /* 0x21a0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, /* 0x21b0 */ - 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x21c0 */ - 72, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 20, 0, 0, 0, /* 0x21d0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, /* 0x21e0 */ - 10, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x21f0 */ - 47, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, /* 0x2200 */ - 13, 0, 0, 0, 0, 0, 0, 0,116,109,112, 47, 97,109,100, 54, /* 0x2210 */ - 52, 45,108,105,110,117,120, 46,101,108,102, 45,101,110,116,114, /* 0x2220 */ -121, 46, 98,105,110, 58, 32, 32, 32, 32, 32,102,105,108,101, 32, /* 0x2230 */ -102,111,114,109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, /* 0x2240 */ - 45, 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73, /* 0x2250 */ -100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2260 */ - 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, /* 0x2270 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, /* 0x2280 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, /* 0x2290 */ -105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70, /* 0x22a0 */ -108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x22b0 */ - 88, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,100, 32, /* 0x22c0 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22d0 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22e0 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, /* 0x22f0 */ - 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x2300 */ - 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2310 */ - 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, /* 0x2320 */ - 32, 48, 48, 48, 48, 48, 48, 54, 54, 32, 32, 48, 48, 48, 48, 48, /* 0x2330 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2340 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2350 */ - 48, 48, 48, 48, 48, 52,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x2360 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x2370 */ - 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, /* 0x2380 */ - 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 98, 55, 32, 32, 48, 48, /* 0x2390 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x23a0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x23b0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 98, 51, 32, 32, 50, 42, 42, 48, /* 0x23c0 */ - 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x23d0 */ - 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, /* 0x23e0 */ - 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x23f0 */ - 48, 48, 48, 48, 57,101, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2400 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2410 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x2420 */ - 48, 49, 54, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x2430 */ - 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x2440 */ - 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, /* 0x2450 */ - 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 57, 48, /* 0x2460 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2470 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2480 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 48, 56, 32, 32, /* 0x2490 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x24a0 */ - 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x24b0 */ - 32, 32, 53, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, /* 0x24c0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 54, 52, 32, 32, 48, 48, 48, 48, /* 0x24d0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x24e0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x24f0 */ - 48, 48, 48, 48, 48, 50, 57, 56, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x2500 */ - 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x2510 */ - 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, /* 0x2520 */ - 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x2530 */ - 48, 57,102, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2540 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2550 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, /* 0x2560 */ -102, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x2570 */ - 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, /* 0x2580 */ - 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, /* 0x2590 */ - 48, 48, 48, 48, 57,102, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x25a0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x25b0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x25c0 */ - 48, 48, 99,102, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x25d0 */ - 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x25e0 */ - 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, /* 0x25f0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 49, 52, 32, 32, 48, 48, 48, 48, /* 0x2600 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x2610 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2620 */ - 48, 48, 48, 48, 49, 54,101, 97, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x2630 */ - 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x2640 */ - 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, /* 0x2650 */ - 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2660 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2670 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2680 */ - 48, 32, 32, 48, 48, 48, 48, 49, 54,102,101, 32, 32, 50, 42, 42, /* 0x2690 */ - 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x26a0 */ - 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, 76, 70, 77, 65, 73, /* 0x26b0 */ - 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 51, 97, /* 0x26c0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x26d0 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x26e0 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 54,102,101, 32, 32, /* 0x26f0 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x2700 */ - 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x2710 */ - 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, /* 0x2720 */ - 32, 32, 48, 48, 48, 48, 48, 48, 56, 55, 32, 32, 48, 48, 48, 48, /* 0x2730 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x2740 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2750 */ - 48, 48, 48, 48, 49, 55, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x2760 */ - 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x2770 */ - 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, /* 0x2780 */ - 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2790 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x27a0 */ - 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, /* 0x27b0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, /* 0x27c0 */ - 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x27d0 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, /* 0x27e0 */ - 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x27f0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x2800 */ - 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2810 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, /* 0x2820 */ - 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2830 */ - 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, /* 0x2840 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2850 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x2860 */ - 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2870 */ - 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, /* 0x2880 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2890 */ - 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, /* 0x28a0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, /* 0x28b0 */ - 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x28c0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x28d0 */ - 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x28e0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, /* 0x28f0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x2900 */ - 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, /* 0x2910 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, /* 0x2920 */ - 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2930 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x2940 */ - 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2950 */ - 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, /* 0x2960 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2970 */ -100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, /* 0x2980 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, /* 0x2990 */ - 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, /* 0x29a0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x29b0 */ -100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, /* 0x29c0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, /* 0x29d0 */ - 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, /* 0x29e0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x29f0 */ -100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, /* 0x2a00 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, /* 0x2a10 */ - 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, /* 0x2a20 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2a30 */ -100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, /* 0x2a40 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, /* 0x2a50 */ - 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a60 */ - 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, /* 0x2a70 */ - 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a80 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, /* 0x2a90 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2aa0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, /* 0x2ab0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2ac0 */ - 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2ad0 */ - 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, /* 0x2ae0 */ - 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2af0 */ - 48, 48, 48, 48, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 48, /* 0x2b00 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, /* 0x2b10 */ - 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2b20 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 74, 77, 80, 85, 10, 48, /* 0x2b30 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2b40 */ - 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, /* 0x2b50 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, /* 0x2b60 */ - 68, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b70 */ - 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, /* 0x2b80 */ - 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b90 */ - 48, 48, 48, 32, 65, 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2ba0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2bb0 */ - 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2bc0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 85, 10, 48, 48, /* 0x2bd0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2be0 */ - 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, /* 0x2bf0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 78, /* 0x2c00 */ - 84, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2c10 */ - 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x2c20 */ - 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2c30 */ - 48, 48, 32, 65, 68, 82, 88, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2c40 */ - 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2c50 */ - 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, /* 0x2c60 */ - 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, /* 0x2c70 */ - 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x2c80 */ - 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2c90 */ - 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x2ca0 */ - 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x2cb0 */ - 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2cc0 */ - 48, 55, 50, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x2cd0 */ - 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, /* 0x2ce0 */ - 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, /* 0x2cf0 */ - 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2d00 */ - 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2d10 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97,101, 32, 82, /* 0x2d20 */ - 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, /* 0x2d30 */ - 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, /* 0x2d40 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, /* 0x2d50 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95, /* 0x2d60 */ - 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, /* 0x2d70 */ - 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102, /* 0x2d80 */ -102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, /* 0x2d90 */ - 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2da0 */ - 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, /* 0x2db0 */ - 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, /* 0x2dc0 */ - 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2dd0 */ - 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2de0 */ - 48, 48, 48, 48, 57, 53, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, /* 0x2df0 */ - 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x2e00 */ - 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2e10 */ - 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2e20 */ - 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x2e30 */ - 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2e40 */ - 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102, /* 0x2e50 */ -102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x2e60 */ - 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, /* 0x2e70 */ - 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, /* 0x2e80 */ - 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2e90 */ - 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2ea0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 97, 32, 82, /* 0x2eb0 */ - 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, /* 0x2ec0 */ - 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, /* 0x2ed0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, /* 0x2ee0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 50, 32, 82, 95, /* 0x2ef0 */ - 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, /* 0x2f00 */ - 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102, /* 0x2f10 */ -102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, /* 0x2f20 */ - 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2f30 */ - 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, /* 0x2f40 */ - 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2f50 */ - 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2f60 */ - 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, /* 0x2f70 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82, 95, 88, 56, /* 0x2f80 */ - 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 76, 90, /* 0x2f90 */ - 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, /* 0x2fa0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 10, 10, 82, 69, 76, /* 0x2fb0 */ - 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2fc0 */ - 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10, /* 0x2fd0 */ - 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2fe0 */ - 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2ff0 */ - 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x3000 */ - 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, 88, 56, 54, 95, /* 0x3010 */ - 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x3020 */ - 65, 73, 78, 90, 43, 48,120,102,102,102,102,102,102,102,102,102, /* 0x3030 */ -102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x3040 */ - 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x3050 */ - 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, /* 0x3060 */ - 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, /* 0x3070 */ - 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x3080 */ - 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x3090 */ - 48, 48, 48, 49, 51, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, /* 0x30a0 */ - 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, 48, /* 0x30b0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 98, 32, 82, 95, /* 0x30c0 */ - 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, /* 0x30d0 */ - 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x30e0 */ - 48, 48, 48, 51, 52, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, /* 0x30f0 */ - 50, 32, 32, 32, 32, 32, 32, 32, 74, 77, 80, 85, 10, 48, 48, 48, /* 0x3100 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 57, 32, 82, 95, /* 0x3110 */ - 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, /* 0x3120 */ - 65, 68, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x3130 */ - 48, 48, 48, 51,101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, /* 0x3140 */ - 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 67, 10, 48, 48, 48, /* 0x3150 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 51, 32, 82, 95, /* 0x3160 */ - 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, /* 0x3170 */ - 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x3180 */ - 48, 48, 48, 52, 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, /* 0x3190 */ - 50, 32, 32, 32, 32, 32, 32, 32, 67, 78, 84, 67, 10, 48, 48, 48, /* 0x31a0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,100, 32, 82, 95, /* 0x31b0 */ - 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, /* 0x31c0 */ - 65, 68, 82, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x31d0 */ - 48, 48, 48, 50,102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x31e0 */ - 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x31f0 */ - 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x3200 */ - 48, 48,100, 10 /* 0x3210 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, /* 0x1e40 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e50 */ + 0, 0, 0, 0, 3, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e60 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 16, 0, /* 0x1e70 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e80 */ + 0, 0, 0, 0, 3, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e90 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, /* 0x1ea0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1eb0 */ + 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ec0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 6, 0, /* 0x1ed0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ee0 */ + 0, 0, 0, 0, 3, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ef0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 10, 0, /* 0x1f00 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f10 */ + 0, 0, 0, 0, 3, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f20 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 13, 0, /* 0x1f30 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f40 */ + 0, 0, 0, 0, 3, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f50 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16, 0, 1, 0, /* 0x1f60 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f70 */ + 8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f80 */ + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, /* 0x1f90 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fa0 */ + 18, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fb0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 16, 0, 0, 0, /* 0x1fc0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fd0 */ + 28, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fe0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 16, 0, 0, 0, /* 0x1ff0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2000 */ + 38, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2010 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 95,115,116, 97,114,116, 0, /* 0x2020 */ + 65, 68, 82, 77, 0, 76, 69, 78, 77, 0, 74, 77, 80, 85, 0, 65, /* 0x2030 */ + 68, 82, 85, 0, 65, 68, 82, 67, 0, 76, 69, 78, 85, 0, 65, 68, /* 0x2040 */ + 82, 88, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x2050 */ + 2, 0, 0, 0, 4, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, /* 0x2060 */ +174, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, /* 0x2070 */ + 33, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, /* 0x2080 */ + 2, 0, 0, 0, 3, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x2090 */ +149, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, /* 0x20a0 */ + 33, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, /* 0x20b0 */ + 2, 0, 0, 0, 3, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x20c0 */ +138, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, /* 0x20d0 */ + 33, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, /* 0x20e0 */ + 2, 0, 0, 0, 3, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x20f0 */ + 6, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, /* 0x2100 */ + 16, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x2110 */ + 2, 0, 0, 0, 4, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x2120 */ + 19, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, /* 0x2130 */ + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, /* 0x2140 */ + 10, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2150 */ + 52, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 16, 0, 0, 0, /* 0x2160 */ + 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, /* 0x2170 */ + 10, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2180 */ + 62, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 18, 0, 0, 0, /* 0x2190 */ + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, /* 0x21a0 */ + 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x21b0 */ + 72, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 20, 0, 0, 0, /* 0x21c0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, /* 0x21d0 */ + 2, 0, 0, 0, 3, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, /* 0x21e0 */ +116,109,112, 47, 97,109,100, 54, 52, 45,108,105,110,117,120, 46, /* 0x21f0 */ +101,108,102, 45,101,110,116,114,121, 46, 98,105,110, 58, 32, 32, /* 0x2200 */ + 32, 32, 32,102,105,108,101, 32,102,111,114,109, 97,116, 32,101, /* 0x2210 */ +108,102, 54, 52, 45,120, 56, 54, 45, 54, 52, 10, 10, 83,101, 99, /* 0x2220 */ +116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, /* 0x2230 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, /* 0x2240 */ + 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2250 */ + 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2260 */ + 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, /* 0x2270 */ + 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, /* 0x2280 */ + 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, /* 0x2290 */ + 48, 48, 48, 48, 48, 48,100, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x22a0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x22b0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x22c0 */ + 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x22d0 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x22e0 */ + 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, /* 0x22f0 */ + 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 54, /* 0x2300 */ + 54, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2310 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2320 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52,100, 32, /* 0x2330 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x2340 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, /* 0x2350 */ + 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x2360 */ + 48, 48, 98, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2370 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2380 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2390 */ + 98, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x23a0 */ + 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x23b0 */ + 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32, /* 0x23c0 */ + 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 57,101, 32, 32, /* 0x23d0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x23e0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x23f0 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 54, 97, 32, 32, 50, 42, /* 0x2400 */ + 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x2410 */ + 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x2420 */ + 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2430 */ + 48, 48, 48, 48, 48, 48, 57, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2440 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x2450 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x2460 */ + 48, 48, 48, 50, 48, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x2470 */ + 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x2480 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, /* 0x2490 */ + 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x24a0 */ + 54, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x24b0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x24c0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 57, 56, /* 0x24d0 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x24e0 */ + 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x24f0 */ + 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, /* 0x2500 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 57,102, 55, 32, 32, 48, 48, /* 0x2510 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2520 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2530 */ + 32, 32, 48, 48, 48, 48, 48, 50,102, 99, 32, 32, 50, 42, 42, 48, /* 0x2540 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x2550 */ + 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x2560 */ + 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57,102, 55, 32, /* 0x2570 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2580 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2590 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 99,102, 51, 32, 32, 50, /* 0x25a0 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x25b0 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, /* 0x25c0 */ + 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x25d0 */ + 49, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x25e0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x25f0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 54,101, 97, /* 0x2600 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x2610 */ + 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, /* 0x2620 */ + 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x2630 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2640 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2650 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, /* 0x2660 */ + 54,102,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x2670 */ + 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, /* 0x2680 */ + 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, /* 0x2690 */ + 48, 48, 48, 48, 48, 48, 51, 97, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x26a0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x26b0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x26c0 */ + 48, 48, 49, 54,102,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x26d0 */ + 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x26e0 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, /* 0x26f0 */ + 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2700 */ + 56, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2710 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2720 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 51, 56, /* 0x2730 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x2740 */ + 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x2750 */ + 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, /* 0x2760 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2770 */ + 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x2780 */ + 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2790 */ + 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, /* 0x27a0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x27b0 */ + 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, /* 0x27c0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x27d0 */ + 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, /* 0x27e0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x27f0 */ + 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, /* 0x2800 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, /* 0x2810 */ + 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2820 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x2830 */ + 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, /* 0x2840 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, /* 0x2850 */ + 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2860 */ + 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, /* 0x2870 */ + 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2880 */ + 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, /* 0x2890 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x28a0 */ + 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, /* 0x28b0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x28c0 */ + 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x28d0 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, /* 0x28e0 */ + 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x28f0 */ + 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, /* 0x2900 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2910 */ + 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, /* 0x2920 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, /* 0x2930 */ + 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2940 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, /* 0x2950 */ + 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2960 */ + 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x2970 */ + 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2980 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, /* 0x2990 */ + 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x29a0 */ + 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x29b0 */ + 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x29c0 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, /* 0x29d0 */ + 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x29e0 */ + 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x29f0 */ + 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a00 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, /* 0x2a10 */ + 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a20 */ + 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, /* 0x2a30 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, /* 0x2a40 */ + 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, /* 0x2a50 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a60 */ + 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a70 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2a80 */ + 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a90 */ + 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, 48, /* 0x2aa0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x2ab0 */ + 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x2ac0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, /* 0x2ad0 */ + 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2ae0 */ + 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x2af0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b00 */ + 48, 32, 74, 77, 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b10 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2b20 */ + 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b30 */ + 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 85, 10, 48, 48, 48, 48, /* 0x2b40 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, /* 0x2b50 */ + 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, /* 0x2b60 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 67, /* 0x2b70 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b80 */ + 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, /* 0x2b90 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2ba0 */ + 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2bb0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x2bc0 */ + 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2bd0 */ + 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 10, 82, 69, 76, 79, /* 0x2be0 */ + 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x2bf0 */ + 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, /* 0x2c00 */ + 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2c10 */ + 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2c20 */ + 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2c30 */ + 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x2c40 */ + 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, /* 0x2c50 */ + 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2c60 */ + 48, 48, 48, 48, 55, 55, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x2c70 */ + 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x2c80 */ + 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x2c90 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2ca0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2cb0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97, /* 0x2cc0 */ +101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, /* 0x2cd0 */ + 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, /* 0x2ce0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, /* 0x2cf0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 98, /* 0x2d00 */ + 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, /* 0x2d10 */ + 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102, /* 0x2d20 */ +102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, /* 0x2d30 */ + 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2d40 */ + 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, /* 0x2d50 */ + 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2d60 */ + 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2d70 */ + 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2d80 */ + 48, 48, 48, 48, 48, 48, 48, 57, 53, 32, 82, 95, 88, 56, 54, 95, /* 0x2d90 */ + 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, /* 0x2da0 */ + 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2db0 */ + 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2dc0 */ + 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x2dd0 */ + 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, /* 0x2de0 */ + 73, 78, 89, 43, 48,120,102,102,102,102,102,102,102,102,102,102, /* 0x2df0 */ +102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x2e00 */ + 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x2e10 */ + 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x2e20 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2e30 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2e40 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, /* 0x2e50 */ + 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, /* 0x2e60 */ + 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, /* 0x2e70 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, /* 0x2e80 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 50, /* 0x2e90 */ + 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, /* 0x2ea0 */ + 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102, /* 0x2eb0 */ +102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, /* 0x2ec0 */ + 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2ed0 */ + 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x2ee0 */ + 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, /* 0x2ef0 */ + 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2f00 */ + 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2f10 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82, /* 0x2f20 */ + 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, /* 0x2f30 */ + 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, /* 0x2f40 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 10, 10, /* 0x2f50 */ + 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2f60 */ + 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2f70 */ + 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, /* 0x2f80 */ + 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2f90 */ + 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x2fa0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, 88, /* 0x2fb0 */ + 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, /* 0x2fc0 */ + 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,102,102, /* 0x2fd0 */ +102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, /* 0x2fe0 */ + 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x2ff0 */ + 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, /* 0x3000 */ + 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3010 */ + 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3020 */ + 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x3030 */ + 48, 48, 48, 48, 48, 48, 49, 51, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x3040 */ + 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, /* 0x3050 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 98, /* 0x3060 */ + 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, /* 0x3070 */ + 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x3080 */ + 48, 48, 48, 48, 48, 48, 51, 52, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x3090 */ + 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 74, 77, 80, 85, 10, /* 0x30a0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 57, /* 0x30b0 */ + 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, /* 0x30c0 */ + 32, 32, 32, 65, 68, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x30d0 */ + 48, 48, 48, 48, 48, 48, 51,101, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x30e0 */ + 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 67, 10, /* 0x30f0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 51, /* 0x3100 */ + 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, /* 0x3110 */ + 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x3120 */ + 48, 48, 48, 48, 48, 48, 52, 56, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x3130 */ + 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 88, 10, /* 0x3140 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50,102, /* 0x3150 */ + 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, /* 0x3160 */ + 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120, 48, 48, /* 0x3170 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 10 /* 0x3180 */ }; diff --git a/src/stub/src/amd64-linux.elf-entry.S b/src/stub/src/amd64-linux.elf-entry.S index 24abfa22..712c0e18 100644 --- a/src/stub/src/amd64-linux.elf-entry.S +++ b/src/stub/src/amd64-linux.elf-entry.S @@ -227,10 +227,10 @@ unfold: /* Get some pages. If small, then get 1 page located just after the end of the first PT_LOAD of the compressed program. This will still be below - all of the uncompressed program. If large (>=3MB compressed), then get enough + all of the uncompressed program. If large (>=3MB uncompressed), then enough to duplicate the entire compressed PT_LOAD, plus 1 page, located just after the brk() of the _un_compressed program. The address and length are pre- - calculated by PackLinuxElf64amd::pack3(), and patched in at compress time. + calculated by PackLinuxElf64amd::defineSymbols(). */ movl $ ADRM,%edi // XXX: 4GB push $ PROT_READ | PROT_WRITE | PROT_EXEC; pop %arg3 @@ -241,7 +241,7 @@ unfold: syscall // %rax= result; trashes %rcx,%r11 only cmpl %eax,%edi; jne msg_SELinux // XXX: 4GB -/* Load the addresses and lengths that ::pack3() patched in. +/* Load the addresses and lengths. XXX: 2GB Note that PUSH $imm32 sign-extends to 64 bits. XXX: 4GB Note that MOVL $imm32,reg zero-extends to 64-bits. (Use an temporary register to obtain 4GB range on PUSH constant.) @@ -250,20 +250,20 @@ unfold: push $ ADRU // for unmap in fold movl $ ADRC,%esi push $ LENU // for unmap in fold - movl $ CNTC,%ecx - push $ ADRX //# for upx_main + push $ ADRX // for upx_main push %r15 // LENX for upx_main -/* Move and relocate if compressed overlaps uncompressed. - Move by 0 when total compressed executable is < 3MB. -*/ + subl %ecx,%ecx // assume small, thus no copy movl %edi,%edx // ADRM subl %esi,%edx // (ADRM - ADRC) == relocation amount + je L80 // no copy addl %edx,%ebp // update &decompress addl %edx,%ebx // update &b_info - + movl %r15d,%ecx // LENX + shrl $3,%ecx // qwords to copy cld rep; movsq +L80: xchgl %eax,%edi /* Decompress the folded part of this stub, then execute it. */ @@ -282,8 +282,8 @@ unfold: main: //// int3 # uncomment for debugging pop %rbp // &decompress - movl -4-(ret_main - _start)(%rbp),%r15d // length which precedes stub - subl $ sz_Ehdr + 2*sz_Phdr + sz_l_info + sz_p_info,%r15d + movl -4-(ret_main - _start)(%rbp),%r15d // sz_pack2: length before stub + subl $ sz_Ehdr + 2*sz_Phdr + sz_l_info + sz_p_info,%r15d // XXX: 4GB call unfold // push &b_info // { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...} diff --git a/src/stub/tmp/amd64-linux.elf-entry.bin.dump b/src/stub/tmp/amd64-linux.elf-entry.bin.dump index 415e02e7..7564288c 100644 --- a/src/stub/tmp/amd64-linux.elf-entry.bin.dump +++ b/src/stub/tmp/amd64-linux.elf-entry.bin.dump @@ -13,7 +13,7 @@ Idx Name Size VMA LMA File off Algn 8 LZMA_DEC30 00000014 0000000000000000 0000000000000000 000016ea 2**0 CONTENTS, READONLY 9 NRV_TAIL 00000000 0000000000000000 0000000000000000 000016fe 2**0 CONTENTS, READONLY 10 ELFMAINY 0000003a 0000000000000000 0000000000000000 000016fe 2**0 CONTENTS, RELOC, READONLY - 11 ELFMAINZ 00000087 0000000000000000 0000000000000000 00001738 2**0 CONTENTS, RELOC, READONLY + 11 ELFMAINZ 0000008c 0000000000000000 0000000000000000 00001738 2**0 CONTENTS, RELOC, READONLY SYMBOL TABLE: 0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD 0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30 @@ -34,12 +34,11 @@ SYMBOL TABLE: 0000000000000000 *UND* 0000000000000000 ADRU 0000000000000000 *UND* 0000000000000000 ADRC 0000000000000000 *UND* 0000000000000000 LENU -0000000000000000 *UND* 0000000000000000 CNTC 0000000000000000 *UND* 0000000000000000 ADRX RELOCATION RECORDS FOR [ELFMAINX]: OFFSET TYPE VALUE -0000000000000001 R_X86_64_PC32 ELFMAINZ+0x0000000000000072 +0000000000000001 R_X86_64_PC32 ELFMAINZ+0x0000000000000077 RELOCATION RECORDS FOR [NRV2E]: OFFSET TYPE VALUE @@ -72,6 +71,5 @@ OFFSET TYPE VALUE 0000000000000039 R_X86_64_32 ADRU 000000000000003e R_X86_64_32 ADRC 0000000000000043 R_X86_64_32 LENU -0000000000000048 R_X86_64_32 CNTC -000000000000004d R_X86_64_32 ADRX +0000000000000048 R_X86_64_32 ADRX 000000000000002f R_X86_64_PC32 ELFMAINY+0x000000000000000d