// ftpd is a server implementation based on the following:
// - RFC 959 (https://tools.ietf.org/html/rfc959)
// - RFC 3659 (https://tools.ietf.org/html/rfc3659)
// - suggested implementation details from https://cr.yp.to/ftp/filesystem.html
//
// Copyright (C) 2020 Michael Theall
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
#include "imgui_nx.h"
#include "imgui.h"
#include "fs.h"
#include
#include
#include
#include
#include
#include
using namespace std::chrono_literals;
namespace
{
constexpr auto FONT_ATLAS_BIN = "ftpd-font.bin";
bool s_mouseJustPressed[IM_ARRAYSIZE (ImGuiIO::MouseDown)];
std::chrono::high_resolution_clock::time_point s_lastMouseUpdate;
bool s_focused = true;
float s_width = 1280.0f;
float s_height = 720.0f;
float s_showMouse = false;
ImVec2 s_mousePos = ImVec2 (0.0f, 0.0f);
std::string s_clipboard;
AppletHookCookie s_appletHookCookie;
ImWchar const nxFontRanges[] = {
// clang-format off
0x0020, 0x007e, 0x00a0, 0x017f, 0x0192, 0x0192, 0x01c0, 0x01c0,
0x01c5, 0x01c6, 0x01ce, 0x01ce, 0x01d0, 0x01d0, 0x01d2, 0x01d2,
0x01d4, 0x01d4, 0x01d6, 0x01d6, 0x01d8, 0x01d8, 0x01da, 0x01da,
0x01dc, 0x01dc, 0x01f2, 0x01f3, 0x01f9, 0x01ff, 0x0218, 0x021b,
0x0251, 0x0251, 0x0261, 0x0261, 0x02bc, 0x02bd, 0x02c6, 0x02c7,
0x02c9, 0x02cb, 0x02cd, 0x02cd, 0x02d0, 0x02d0, 0x02d8, 0x02dd,
0x0300, 0x0308, 0x030a, 0x030c, 0x0326, 0x0328, 0x0332, 0x0332,
0x0335, 0x0337, 0x0361, 0x0361, 0x0363, 0x0364, 0x0366, 0x0366,
0x036c, 0x036c, 0x037a, 0x037a, 0x037e, 0x037e, 0x0384, 0x038a,
0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x03ce, 0x0400, 0x045f,
0x0490, 0x0491, 0x1e02, 0x1e03, 0x1e0a, 0x1e0b, 0x1e1e, 0x1e1f,
0x1e3f, 0x1e41, 0x1e56, 0x1e57, 0x1e60, 0x1e61, 0x1e6a, 0x1e6b,
0x1e80, 0x1e85, 0x1e9e, 0x1e9e, 0x1ef2, 0x1ef3, 0x2010, 0x2022,
0x2024, 0x2027, 0x2030, 0x2030, 0x2032, 0x2036, 0x2039, 0x203c,
0x203e, 0x203e, 0x2042, 0x2042, 0x2044, 0x2044, 0x2060, 0x2060,
0x2074, 0x2074, 0x207a, 0x207f, 0x2081, 0x2084, 0x20a3, 0x20a4,
0x20a7, 0x20a7, 0x20a9, 0x20a9, 0x20ac, 0x20ac, 0x20af, 0x20af,
0x20bd, 0x20bd, 0x20dd, 0x20dd, 0x2103, 0x2103, 0x2105, 0x2105,
0x2109, 0x210a, 0x2113, 0x2113, 0x2116, 0x2116, 0x2121, 0x2122,
0x2126, 0x2126, 0x212b, 0x212b, 0x212e, 0x212e, 0x2153, 0x2154,
0x215b, 0x215e, 0x2160, 0x216b, 0x2170, 0x217b, 0x217f, 0x217f,
0x2190, 0x2199, 0x21a8, 0x21a8, 0x21b0, 0x21b4, 0x21bc, 0x21bc,
0x21c0, 0x21c0, 0x21c4, 0x21c6, 0x21cd, 0x21cd, 0x21cf, 0x21d4,
0x21e0, 0x21e3, 0x21e6, 0x21e9, 0x2200, 0x2200, 0x2202, 0x2203,
0x2206, 0x2209, 0x220b, 0x220c, 0x220f, 0x220f, 0x2211, 0x2213,
0x2215, 0x2215, 0x2219, 0x221a, 0x221d, 0x2220, 0x2222, 0x2222,
0x2225, 0x222c, 0x222e, 0x222e, 0x2234, 0x2237, 0x223c, 0x223d,
0x2243, 0x2243, 0x2245, 0x2245, 0x2248, 0x2248, 0x2250, 0x2253,
0x225a, 0x225a, 0x2260, 0x2262, 0x2264, 0x2267, 0x226a, 0x226b,
0x226e, 0x2273, 0x2276, 0x2277, 0x2279, 0x227b, 0x2280, 0x2287,
0x228a, 0x228b, 0x2295, 0x2297, 0x2299, 0x2299, 0x22a3, 0x22a5,
0x22bb, 0x22bc, 0x22bf, 0x22bf, 0x22ce, 0x22cf, 0x22da, 0x22db,
0x22ee, 0x22ef, 0x2302, 0x2302, 0x2306, 0x2306, 0x2310, 0x2310,
0x2312, 0x2312, 0x2314, 0x2314, 0x2320, 0x2321, 0x2460, 0x2487,
0x249c, 0x24f4, 0x2500, 0x2503, 0x250c, 0x254b, 0x2550, 0x256c,
0x2573, 0x2573, 0x2580, 0x2580, 0x2584, 0x2584, 0x2588, 0x2588,
0x258c, 0x258c, 0x2590, 0x2593, 0x25a0, 0x25a1, 0x25a3, 0x25ac,
0x25b1, 0x25b3, 0x25b5, 0x25b7, 0x25b9, 0x25ba, 0x25bc, 0x25bd,
0x25bf, 0x25c1, 0x25c3, 0x25c4, 0x25c6, 0x25cc, 0x25ce, 0x25d1,
0x25d8, 0x25d9, 0x25e6, 0x25e6, 0x25ef, 0x25ef, 0x2600, 0x2603,
0x2605, 0x2606, 0x260e, 0x260f, 0x261c, 0x261f, 0x262f, 0x262f,
0x263a, 0x263c, 0x2640, 0x2640, 0x2642, 0x2642, 0x2660, 0x266d,
0x266f, 0x266f, 0x2716, 0x2716, 0x271a, 0x271a, 0x273d, 0x273d,
0x2756, 0x2756, 0x2776, 0x277f, 0x278a, 0x2793, 0x2f00, 0x2f00,
0x2f04, 0x2f04, 0x2f06, 0x2f06, 0x2f08, 0x2f08, 0x2f0a, 0x2f0b,
0x2f11, 0x2f12, 0x2f14, 0x2f14, 0x2f17, 0x2f18, 0x2f1c, 0x2f1d,
0x2f1f, 0x2f20, 0x2f23, 0x2f26, 0x2f28, 0x2f29, 0x2f2b, 0x2f2b,
0x2f2d, 0x2f2d, 0x2f2f, 0x2f32, 0x2f38, 0x2f38, 0x2f3c, 0x2f40,
0x2f42, 0x2f4c, 0x2f4f, 0x2f52, 0x2f54, 0x2f58, 0x2f5a, 0x2f66,
0x2f69, 0x2f70, 0x2f72, 0x2f76, 0x2f78, 0x2f78, 0x2f7a, 0x2f7d,
0x2f7f, 0x2f8b, 0x2f8e, 0x2f90, 0x2f92, 0x2f97, 0x2f99, 0x2fa0,
0x2fa2, 0x2fa3, 0x2fa5, 0x2fa9, 0x2fac, 0x2fb1, 0x2fb3, 0x2fbc,
0x2fc1, 0x2fca, 0x2fcd, 0x2fd4, 0x3000, 0x3019, 0x301c, 0x3020,
0x3036, 0x3036, 0x3041, 0x3094, 0x309b, 0x309e, 0x30a1, 0x30f6,
0x30fb, 0x30fe, 0x3131, 0x318e, 0x3200, 0x321c, 0x322a, 0x3243,
0x3260, 0x327b, 0x327f, 0x327f, 0x328a, 0x3290, 0x3294, 0x3294,
0x329e, 0x329e, 0x32a4, 0x32a8, 0x3303, 0x3303, 0x330d, 0x330d,
0x3314, 0x3314, 0x3318, 0x3318, 0x3322, 0x3323, 0x3326, 0x3327,
0x332b, 0x332b, 0x3336, 0x3336, 0x333b, 0x333b, 0x3349, 0x334a,
0x334d, 0x334d, 0x3351, 0x3351, 0x3357, 0x3357, 0x337b, 0x33cd,
0x33cf, 0x33d0, 0x33d3, 0x33d4, 0x33d6, 0x33d6, 0x33d8, 0x33d8,
0x33db, 0x33dd, 0x4e00, 0x4e01, 0x4e03, 0x4e03, 0x4e07, 0x4e0b,
0x4e0d, 0x4e0e, 0x4e10, 0x4e11, 0x4e14, 0x4e19, 0x4e1e, 0x4e1e,
0x4e21, 0x4e21, 0x4e26, 0x4e26, 0x4e28, 0x4e28, 0x4e2a, 0x4e2a,
0x4e2d, 0x4e2d, 0x4e31, 0x4e32, 0x4e36, 0x4e36, 0x4e38, 0x4e39,
0x4e3b, 0x4e3c, 0x4e3f, 0x4e3f, 0x4e42, 0x4e43, 0x4e45, 0x4e45,
0x4e4b, 0x4e4b, 0x4e4d, 0x4e4f, 0x4e55, 0x4e59, 0x4e5d, 0x4e5f,
0x4e62, 0x4e62, 0x4e6b, 0x4e6b, 0x4e6d, 0x4e6d, 0x4e71, 0x4e71,
0x4e73, 0x4e73, 0x4e76, 0x4e77, 0x4e7e, 0x4e7e, 0x4e80, 0x4e80,
0x4e82, 0x4e82, 0x4e85, 0x4e86, 0x4e88, 0x4e8c, 0x4e8e, 0x4e8e,
0x4e90, 0x4e92, 0x4e94, 0x4e95, 0x4e98, 0x4e99, 0x4e9b, 0x4e9c,
0x4e9e, 0x4ea2, 0x4ea4, 0x4ea6, 0x4ea8, 0x4ea8, 0x4eab, 0x4eae,
0x4eb0, 0x4eb0, 0x4eb3, 0x4eb3, 0x4eb6, 0x4eb6, 0x4eba, 0x4eba,
0x4ec0, 0x4ec2, 0x4ec4, 0x4ec4, 0x4ec6, 0x4ec7, 0x4eca, 0x4ecb,
0x4ecd, 0x4ecf, 0x4ed4, 0x4ed9, 0x4edd, 0x4edf, 0x4ee1, 0x4ee1,
0x4ee3, 0x4ee5, 0x4eed, 0x4eee, 0x4ef0, 0x4ef0, 0x4ef2, 0x4ef2,
0x4ef6, 0x4ef7, 0x4efb, 0x4efc, 0x4f00, 0x4f01, 0x4f03, 0x4f03,
0x4f09, 0x4f0b, 0x4f0d, 0x4f11, 0x4f1a, 0x4f1a, 0x4f1c, 0x4f1d,
0x4f2f, 0x4f30, 0x4f34, 0x4f34, 0x4f36, 0x4f36, 0x4f38, 0x4f3a,
0x4f3c, 0x4f3d, 0x4f43, 0x4f43, 0x4f46, 0x4f48, 0x4f4d, 0x4f51,
0x4f53, 0x4f53, 0x4f55, 0x4f57, 0x4f59, 0x4f5e, 0x4f69, 0x4f69,
0x4f6f, 0x4f70, 0x4f73, 0x4f73, 0x4f75, 0x4f76, 0x4f7a, 0x4f7c,
0x4f7e, 0x4f7f, 0x4f81, 0x4f81, 0x4f83, 0x4f84, 0x4f86, 0x4f86,
0x4f88, 0x4f88, 0x4f8a, 0x4f8b, 0x4f8d, 0x4f8d, 0x4f8f, 0x4f8f,
0x4f91, 0x4f92, 0x4f94, 0x4f94, 0x4f96, 0x4f96, 0x4f98, 0x4f98,
0x4f9a, 0x4f9b, 0x4f9d, 0x4f9d, 0x4fa0, 0x4fa1, 0x4fab, 0x4fab,
0x4fad, 0x4faf, 0x4fb5, 0x4fb6, 0x4fbf, 0x4fbf, 0x4fc2, 0x4fc4,
0x4fc9, 0x4fca, 0x4fcd, 0x4fce, 0x4fd0, 0x4fd1, 0x4fd3, 0x4fd4,
0x4fd7, 0x4fd8, 0x4fda, 0x4fdb, 0x4fdd, 0x4fdd, 0x4fdf, 0x4fe1,
0x4fe3, 0x4fe5, 0x4fee, 0x4fef, 0x4ff1, 0x4ff1, 0x4ff3, 0x4ff3,
0x4ff5, 0x4ff6, 0x4ff8, 0x4ff8, 0x4ffa, 0x4ffa, 0x4ffe, 0x4fff,
0x5002, 0x5002, 0x5005, 0x5006, 0x5009, 0x5009, 0x500b, 0x500b,
0x500d, 0x500d, 0x500f, 0x500f, 0x5011, 0x5012, 0x5014, 0x5014,
0x5016, 0x5016, 0x5019, 0x501a, 0x501c, 0x501c, 0x501e, 0x501f,
0x5021, 0x502d, 0x5036, 0x5036, 0x5039, 0x5039, 0x503b, 0x503b,
0x5040, 0x5040, 0x5042, 0x5043, 0x5046, 0x5049, 0x504f, 0x5050,
0x5055, 0x5056, 0x505a, 0x505a, 0x505c, 0x505c, 0x5065, 0x5065,
0x506c, 0x506c, 0x5070, 0x5070, 0x5072, 0x5072, 0x5074, 0x5076,
0x5078, 0x5078, 0x507d, 0x507d, 0x5080, 0x5080, 0x5085, 0x5085,
0x508d, 0x508d, 0x5091, 0x5091, 0x5094, 0x5094, 0x5098, 0x509a,
0x50ac, 0x50ad, 0x50b2, 0x50b5, 0x50b7, 0x50b7, 0x50be, 0x50be,
0x50c2, 0x50c2, 0x50c5, 0x50c5, 0x50c9, 0x50ca, 0x50cd, 0x50cd,
0x50cf, 0x50cf, 0x50d1, 0x50d1, 0x50d5, 0x50d6, 0x50d8, 0x50d8,
0x50da, 0x50da, 0x50de, 0x50de, 0x50e3, 0x50e3, 0x50e5, 0x50e5,
0x50e7, 0x50e7, 0x50ed, 0x50ee, 0x50f4, 0x50f5, 0x50f9, 0x50f9,
0x50fb, 0x50fb, 0x50ff, 0x5102, 0x5104, 0x5104, 0x5106, 0x5106,
0x5109, 0x5109, 0x5112, 0x5112, 0x5114, 0x5116, 0x5118, 0x5118,
0x511a, 0x511a, 0x511f, 0x511f, 0x5121, 0x5121, 0x512a, 0x512a,
0x5132, 0x5132, 0x5137, 0x5137, 0x513a, 0x513c, 0x513f, 0x5141,
0x5143, 0x514e, 0x5150, 0x5150, 0x5152, 0x5152, 0x5154, 0x5154,
0x515a, 0x515a, 0x515c, 0x515c, 0x5162, 0x5162, 0x5164, 0x5165,
0x5167, 0x516e, 0x5171, 0x5171, 0x5175, 0x5178, 0x517c, 0x517c,
0x5180, 0x5180, 0x5182, 0x5182, 0x5185, 0x5186, 0x5189, 0x518a,
0x518c, 0x518d, 0x518f, 0x5193, 0x5195, 0x5197, 0x5199, 0x5199,
0x519d, 0x519d, 0x51a0, 0x51a0, 0x51a2, 0x51a2, 0x51a4, 0x51a6,
0x51a8, 0x51ac, 0x51b0, 0x51b7, 0x51bd, 0x51be, 0x51c4, 0x51c6,
0x51c9, 0x51c9, 0x51cb, 0x51cd, 0x51d6, 0x51d6, 0x51db, 0x51de,
0x51e0, 0x51e1, 0x51e6, 0x51e7, 0x51e9, 0x51ea, 0x51ec, 0x51ed,
0x51f0, 0x51f1, 0x51f5, 0x51f6, 0x51f8, 0x51fa, 0x51fd, 0x51fe,
0x5200, 0x5200, 0x5203, 0x5204, 0x5206, 0x5208, 0x520a, 0x520b,
0x520e, 0x520e, 0x5211, 0x5211, 0x5214, 0x5215, 0x5217, 0x5217,
0x521d, 0x521d, 0x5224, 0x5225, 0x5227, 0x5227, 0x5229, 0x522a,
0x522e, 0x522e, 0x5230, 0x5230, 0x5233, 0x5233, 0x5236, 0x523b,
0x5243, 0x5244, 0x5247, 0x5247, 0x524a, 0x524d, 0x524f, 0x524f,
0x5254, 0x5254, 0x5256, 0x5256, 0x525b, 0x525b, 0x525d, 0x525e,
0x5261, 0x5261, 0x5263, 0x5265, 0x5269, 0x526a, 0x526f, 0x5275,
0x527d, 0x527d, 0x527f, 0x527f, 0x5283, 0x5283, 0x5287, 0x5289,
0x528d, 0x528d, 0x5291, 0x5292, 0x5294, 0x5294, 0x529b, 0x529c,
0x529f, 0x52a0, 0x52a3, 0x52a4, 0x52a6, 0x52a6, 0x52a9, 0x52ad,
0x52af, 0x52af, 0x52b1, 0x52b1, 0x52b4, 0x52b5, 0x52b9, 0x52b9,
0x52bc, 0x52bc, 0x52be, 0x52be, 0x52c0, 0x52c1, 0x52c3, 0x52c3,
0x52c5, 0x52c5, 0x52c7, 0x52c7, 0x52c9, 0x52c9, 0x52cd, 0x52cd,
0x52d2, 0x52d2, 0x52d5, 0x52d9, 0x52db, 0x52db, 0x52dd, 0x52e0,
0x52e2, 0x52e4, 0x52e6, 0x52e7, 0x52f2, 0x52f3, 0x52f5, 0x52f5,
0x52f8, 0x52fb, 0x52fe, 0x5302, 0x5305, 0x5308, 0x530d, 0x530d,
0x530f, 0x5310, 0x5315, 0x5317, 0x5319, 0x531a, 0x531d, 0x531d,
0x5320, 0x5321, 0x5323, 0x5324, 0x532a, 0x532a, 0x532f, 0x532f,
0x5331, 0x5331, 0x5333, 0x5333, 0x5338, 0x533b, 0x533f, 0x5341,
0x5343, 0x534a, 0x534d, 0x534d, 0x5351, 0x5354, 0x5357, 0x5358,
0x535a, 0x535a, 0x535c, 0x535c, 0x535e, 0x535e, 0x5360, 0x5360,
0x5366, 0x5366, 0x5368, 0x5369, 0x536e, 0x5375, 0x5377, 0x5378,
0x537b, 0x537b, 0x537d, 0x537d, 0x537f, 0x537f, 0x5382, 0x5382,
0x5384, 0x5384, 0x5393, 0x5393, 0x5396, 0x5396, 0x5398, 0x5398,
0x539a, 0x539a, 0x539f, 0x53a0, 0x53a5, 0x53a6, 0x53a8, 0x53a9,
0x53ad, 0x53ae, 0x53b0, 0x53b0, 0x53b2, 0x53b3, 0x53b6, 0x53b6,
0x53bb, 0x53bb, 0x53c2, 0x53c3, 0x53c8, 0x53ce, 0x53d4, 0x53d4,
0x53d6, 0x53d7, 0x53d9, 0x53d9, 0x53db, 0x53db, 0x53dd, 0x53dd,
0x53df, 0x53df, 0x53e1, 0x53e5, 0x53e8, 0x53f3, 0x53f6, 0x53f8,
0x53fa, 0x53fa, 0x5401, 0x5401, 0x5403, 0x5404, 0x5408, 0x5411,
0x541b, 0x541b, 0x541d, 0x541d, 0x541f, 0x5420, 0x5426, 0x5426,
0x5429, 0x5429, 0x542b, 0x542e, 0x5433, 0x5433, 0x5436, 0x5436,
0x5438, 0x5439, 0x543b, 0x543e, 0x5440, 0x5440, 0x5442, 0x5442,
0x5446, 0x5446, 0x5448, 0x544a, 0x544e, 0x544e, 0x5451, 0x5451,
0x545f, 0x545f, 0x5468, 0x5468, 0x546a, 0x546a, 0x5470, 0x5471,
0x5473, 0x5473, 0x5475, 0x5477, 0x547b, 0x547d, 0x5480, 0x5480,
0x5484, 0x5484, 0x5486, 0x5486, 0x548a, 0x548c, 0x548e, 0x5490,
0x5492, 0x5492, 0x549c, 0x549c, 0x54a2, 0x54a2, 0x54a4, 0x54a5,
0x54a8, 0x54a9, 0x54ab, 0x54ac, 0x54af, 0x54af, 0x54b2, 0x54b3,
0x54b8, 0x54b8, 0x54bc, 0x54be, 0x54c0, 0x54c2, 0x54c4, 0x54c4,
0x54c7, 0x54c9, 0x54d8, 0x54d8, 0x54e1, 0x54e2, 0x54e5, 0x54e6,
0x54e8, 0x54e9, 0x54ed, 0x54ee, 0x54f2, 0x54f2, 0x54fa, 0x54fa,
0x54fd, 0x54fd, 0x54ff, 0x54ff, 0x5504, 0x5504, 0x5506, 0x5507,
0x550e, 0x5510, 0x5514, 0x5514, 0x5516, 0x5516, 0x551c, 0x551c,
0x552e, 0x552f, 0x5531, 0x5531, 0x5533, 0x5533, 0x5535, 0x5535,
0x5538, 0x5539, 0x553e, 0x553e, 0x5540, 0x5540, 0x5544, 0x5546,
0x554c, 0x554c, 0x554f, 0x554f, 0x5553, 0x5553, 0x5556, 0x5557,
0x555c, 0x555e, 0x5563, 0x5563, 0x557b, 0x557c, 0x557e, 0x557e,
0x5580, 0x5580, 0x5583, 0x5584, 0x5586, 0x5587, 0x5589, 0x558b,
0x5598, 0x559a, 0x559c, 0x559f, 0x55a7, 0x55ac, 0x55ae, 0x55ae,
0x55b0, 0x55b0, 0x55b6, 0x55b6, 0x55c4, 0x55c5, 0x55c7, 0x55c7,
0x55d4, 0x55d4, 0x55da, 0x55da, 0x55dc, 0x55dc, 0x55df, 0x55df,
0x55e3, 0x55e4, 0x55f7, 0x55f7, 0x55f9, 0x55f9, 0x55fd, 0x55fe,
0x5606, 0x5606, 0x5609, 0x5609, 0x5614, 0x5614, 0x5616, 0x5618,
0x561b, 0x561b, 0x5629, 0x5629, 0x562f, 0x562f, 0x5631, 0x5632,
0x5634, 0x5634, 0x5636, 0x5636, 0x5638, 0x5638, 0x5642, 0x5642,
0x564c, 0x564c, 0x564e, 0x564e, 0x5650, 0x5650, 0x5653, 0x5653,
0x565b, 0x565b, 0x5664, 0x5664, 0x5668, 0x5668, 0x566a, 0x566c,
0x5674, 0x5674, 0x5678, 0x5678, 0x567a, 0x567a, 0x5680, 0x5680,
0x5686, 0x5687, 0x568a, 0x568a, 0x568f, 0x568f, 0x5694, 0x5694,
0x56a0, 0x56a0, 0x56a2, 0x56a2, 0x56a5, 0x56a5, 0x56ac, 0x56ac,
0x56ae, 0x56ae, 0x56b4, 0x56b4, 0x56b6, 0x56b6, 0x56bc, 0x56bc,
0x56c0, 0x56c3, 0x56c8, 0x56c8, 0x56ca, 0x56ca, 0x56cd, 0x56ce,
0x56d1, 0x56d1, 0x56d3, 0x56d3, 0x56d7, 0x56d8, 0x56da, 0x56db,
0x56de, 0x56de, 0x56e0, 0x56e0, 0x56e3, 0x56e3, 0x56ee, 0x56ee,
0x56f0, 0x56f0, 0x56f2, 0x56f3, 0x56f9, 0x56fa, 0x56fd, 0x56fd,
0x56ff, 0x5700, 0x5703, 0x5704, 0x5708, 0x5709, 0x570b, 0x570b,
0x570d, 0x570d, 0x570f, 0x570f, 0x5712, 0x5713, 0x5716, 0x5716,
0x5718, 0x5718, 0x571c, 0x571c, 0x571f, 0x571f, 0x5726, 0x5728,
0x572d, 0x572d, 0x5730, 0x5730, 0x5737, 0x5738, 0x573b, 0x573b,
0x5740, 0x5740, 0x5742, 0x5742, 0x5747, 0x5747, 0x574a, 0x574a,
0x574d, 0x5751, 0x5759, 0x5759, 0x5761, 0x5761, 0x5764, 0x5766,
0x5769, 0x576a, 0x576e, 0x576e, 0x5770, 0x5770, 0x5775, 0x5775,
0x577c, 0x577c, 0x577f, 0x577f, 0x5782, 0x5782, 0x5788, 0x5789,
0x578b, 0x578b, 0x5793, 0x5793, 0x57a0, 0x57a0, 0x57a2, 0x57a4,
0x57aa, 0x57aa, 0x57ac, 0x57ac, 0x57b0, 0x57b0, 0x57b3, 0x57b3,
0x57c0, 0x57c0, 0x57c3, 0x57c3, 0x57c6, 0x57c8, 0x57cb, 0x57cb,
0x57ce, 0x57ce, 0x57d2, 0x57d4, 0x57d6, 0x57d6, 0x57dc, 0x57dc,
0x57df, 0x57e0, 0x57e3, 0x57e3, 0x57f0, 0x57f0, 0x57f4, 0x57f4,
0x57f7, 0x57f7, 0x57f9, 0x57fa, 0x57fc, 0x57fc, 0x5800, 0x5800,
0x5802, 0x5802, 0x5805, 0x5806, 0x5808, 0x580b, 0x5815, 0x5815,
0x5819, 0x5819, 0x581d, 0x581e, 0x5821, 0x5821, 0x5824, 0x5824,
0x5827, 0x5827, 0x582a, 0x582a, 0x582f, 0x5831, 0x5834, 0x5835,
0x583a, 0x583a, 0x583d, 0x583d, 0x5840, 0x5841, 0x584a, 0x584b,
0x584f, 0x584f, 0x5851, 0x5852, 0x5854, 0x5854, 0x5857, 0x585a,
0x585e, 0x585e, 0x5861, 0x5862, 0x5864, 0x5864, 0x5869, 0x5869,
0x586b, 0x586b, 0x5870, 0x5870, 0x5872, 0x5872, 0x5875, 0x5875,
0x5879, 0x5879, 0x587c, 0x587c, 0x587e, 0x587e, 0x5883, 0x5883,
0x5885, 0x5885, 0x5889, 0x5889, 0x5893, 0x5893, 0x5897, 0x5897,
0x589c, 0x589c, 0x589e, 0x589f, 0x58a8, 0x58a9, 0x58ab, 0x58ab,
0x58ae, 0x58ae, 0x58b2, 0x58b3, 0x58b8, 0x58bb, 0x58be, 0x58be,
0x58c1, 0x58c1, 0x58c5, 0x58c5, 0x58c7, 0x58c7, 0x58ca, 0x58ca,
0x58cc, 0x58cc, 0x58ce, 0x58ce, 0x58d1, 0x58d1, 0x58d3, 0x58d3,
0x58d5, 0x58d5, 0x58d7, 0x58d9, 0x58dc, 0x58dc, 0x58de, 0x58df,
0x58e4, 0x58e5, 0x58eb, 0x58ec, 0x58ee, 0x58f2, 0x58f7, 0x58f7,
0x58f9, 0x58fd, 0x5902, 0x5902, 0x5909, 0x590b, 0x590f, 0x5910,
0x5914, 0x5916, 0x5918, 0x591c, 0x5922, 0x5922, 0x5925, 0x5925,
0x5927, 0x5927, 0x5929, 0x592e, 0x5931, 0x5932, 0x5937, 0x5938,
0x593e, 0x593e, 0x5944, 0x5944, 0x5947, 0x5949, 0x594e, 0x5951,
0x5953, 0x5955, 0x5957, 0x5958, 0x595a, 0x595b, 0x595d, 0x595d,
0x5960, 0x5960, 0x5962, 0x5963, 0x5965, 0x5965, 0x5967, 0x596e,
0x5973, 0x5974, 0x5978, 0x5978, 0x597d, 0x597d, 0x5981, 0x5984,
0x598a, 0x598a, 0x598d, 0x598d, 0x5993, 0x5993, 0x5996, 0x5997,
0x5999, 0x5999, 0x599b, 0x599b, 0x599d, 0x599d, 0x59a3, 0x59a5,
0x59a8, 0x59a8, 0x59ac, 0x59ac, 0x59b2, 0x59b2, 0x59b9, 0x59bb,
0x59be, 0x59be, 0x59c3, 0x59c3, 0x59c6, 0x59c6, 0x59c9, 0x59c9,
0x59cb, 0x59cb, 0x59d0, 0x59d1, 0x59d3, 0x59d4, 0x59d9, 0x59da,
0x59dc, 0x59dd, 0x59e5, 0x59e6, 0x59e8, 0x59e8, 0x59ea, 0x59ec,
0x59ee, 0x59ee, 0x59f6, 0x59f6, 0x59f8, 0x59f8, 0x59fb, 0x59fb,
0x59ff, 0x59ff, 0x5a01, 0x5a01, 0x5a03, 0x5a03, 0x5a09, 0x5a09,
0x5a11, 0x5a11, 0x5a18, 0x5a18, 0x5a1a, 0x5a1c, 0x5a1f, 0x5a20,
0x5a25, 0x5a25, 0x5a29, 0x5a29, 0x5a2f, 0x5a2f, 0x5a35, 0x5a36,
0x5a3c, 0x5a3c, 0x5a40, 0x5a41, 0x5a46, 0x5a46, 0x5a49, 0x5a49,
0x5a5a, 0x5a5a, 0x5a62, 0x5a62, 0x5a66, 0x5a66, 0x5a6a, 0x5a6a,
0x5a6c, 0x5a6c, 0x5a7f, 0x5a7f, 0x5a92, 0x5a92, 0x5a9a, 0x5a9b,
0x5aa4, 0x5aa4, 0x5abc, 0x5abe, 0x5ac1, 0x5ac2, 0x5ac4, 0x5ac4,
0x5ac9, 0x5ac9, 0x5acb, 0x5acc, 0x5ad0, 0x5ad0, 0x5ad6, 0x5ad7,
0x5ae1, 0x5ae1, 0x5ae3, 0x5ae3, 0x5ae6, 0x5ae6, 0x5ae9, 0x5ae9,
0x5afa, 0x5afb, 0x5b05, 0x5b05, 0x5b09, 0x5b09, 0x5b0b, 0x5b0c,
0x5b16, 0x5b16, 0x5b22, 0x5b22, 0x5b2a, 0x5b2a, 0x5b2c, 0x5b2c,
0x5b30, 0x5b30, 0x5b32, 0x5b32, 0x5b36, 0x5b36, 0x5b3e, 0x5b3e,
0x5b40, 0x5b40, 0x5b43, 0x5b43, 0x5b45, 0x5b45, 0x5b50, 0x5b51,
0x5b54, 0x5b58, 0x5b5a, 0x5b5d, 0x5b5f, 0x5b5f, 0x5b63, 0x5b66,
0x5b69, 0x5b69, 0x5b6b, 0x5b6b, 0x5b70, 0x5b71, 0x5b73, 0x5b73,
0x5b75, 0x5b75, 0x5b78, 0x5b78, 0x5b7a, 0x5b7a, 0x5b7c, 0x5b7c,
0x5b80, 0x5b80, 0x5b83, 0x5b83, 0x5b85, 0x5b85, 0x5b87, 0x5b89,
0x5b8b, 0x5b8d, 0x5b8f, 0x5b8f, 0x5b93, 0x5b93, 0x5b95, 0x5b9d,
0x5b9f, 0x5b9f, 0x5ba2, 0x5ba6, 0x5bac, 0x5bac, 0x5bae, 0x5bae,
0x5bb0, 0x5bb0, 0x5bb3, 0x5bb6, 0x5bb8, 0x5bb9, 0x5bbf, 0x5bc0,
0x5bc2, 0x5bc7, 0x5bc9, 0x5bc9, 0x5bcc, 0x5bcc, 0x5bd0, 0x5bd0,
0x5bd2, 0x5bd4, 0x5bd7, 0x5bd8, 0x5bdb, 0x5bdb, 0x5bdd, 0x5bdf,
0x5be1, 0x5be2, 0x5be4, 0x5be9, 0x5beb, 0x5bec, 0x5bee, 0x5bf0,
0x5bf3, 0x5bf3, 0x5bf5, 0x5bf6, 0x5bf8, 0x5bf8, 0x5bfa, 0x5bfa,
0x5bfe, 0x5bff, 0x5c01, 0x5c02, 0x5c04, 0x5c0b, 0x5c0d, 0x5c0f,
0x5c11, 0x5c11, 0x5c13, 0x5c13, 0x5c16, 0x5c16, 0x5c19, 0x5c1a,
0x5c1e, 0x5c1e, 0x5c20, 0x5c20, 0x5c22, 0x5c22, 0x5c24, 0x5c24,
0x5c28, 0x5c28, 0x5c2d, 0x5c2d, 0x5c31, 0x5c31, 0x5c38, 0x5c41,
0x5c45, 0x5c46, 0x5c48, 0x5c48, 0x5c4a, 0x5c4b, 0x5c4d, 0x5c51,
0x5c53, 0x5c53, 0x5c55, 0x5c55, 0x5c5b, 0x5c5b, 0x5c5e, 0x5c5e,
0x5c60, 0x5c62, 0x5c64, 0x5c65, 0x5c6c, 0x5c6c, 0x5c6e, 0x5c6f,
0x5c71, 0x5c71, 0x5c76, 0x5c76, 0x5c79, 0x5c79, 0x5c8c, 0x5c8c,
0x5c90, 0x5c91, 0x5c94, 0x5c94, 0x5ca1, 0x5ca1, 0x5ca6, 0x5ca6,
0x5ca8, 0x5ca9, 0x5cab, 0x5cac, 0x5cb1, 0x5cb1, 0x5cb3, 0x5cb3,
0x5cb5, 0x5cb8, 0x5cba, 0x5cbc, 0x5cbe, 0x5cbe, 0x5cc0, 0x5cc0,
0x5cc5, 0x5cc5, 0x5cc7, 0x5cc7, 0x5cd9, 0x5cd9, 0x5ce0, 0x5ce1,
0x5ce8, 0x5cea, 0x5ced, 0x5ced, 0x5cef, 0x5cf0, 0x5cf4, 0x5cf6,
0x5cfa, 0x5cfb, 0x5cfd, 0x5cfd, 0x5d07, 0x5d07, 0x5d0b, 0x5d0b,
0x5d0d, 0x5d0e, 0x5d11, 0x5d11, 0x5d14, 0x5d1b, 0x5d1f, 0x5d1f,
0x5d22, 0x5d22, 0x5d27, 0x5d27, 0x5d29, 0x5d29, 0x5d42, 0x5d42,
0x5d4b, 0x5d4c, 0x5d4e, 0x5d4e, 0x5d50, 0x5d50, 0x5d52, 0x5d53,
0x5d5c, 0x5d5c, 0x5d69, 0x5d69, 0x5d6c, 0x5d6d, 0x5d6f, 0x5d6f,
0x5d73, 0x5d73, 0x5d76, 0x5d76, 0x5d82, 0x5d82, 0x5d84, 0x5d84,
0x5d87, 0x5d87, 0x5d8b, 0x5d8c, 0x5d90, 0x5d90, 0x5d9d, 0x5d9d,
0x5da0, 0x5da0, 0x5da2, 0x5da2, 0x5daa, 0x5daa, 0x5dac, 0x5dac,
0x5dae, 0x5dae, 0x5db7, 0x5dba, 0x5dbc, 0x5dbd, 0x5dc9, 0x5dc9,
0x5dcc, 0x5dcd, 0x5dd0, 0x5dd0, 0x5dd2, 0x5dd3, 0x5dd6, 0x5dd6,
0x5ddb, 0x5ddb, 0x5ddd, 0x5dde, 0x5de1, 0x5de3, 0x5de5, 0x5de8,
0x5deb, 0x5deb, 0x5dee, 0x5dee, 0x5df1, 0x5df5, 0x5df7, 0x5df7,
0x5dfb, 0x5dfb, 0x5dfd, 0x5dfe, 0x5e02, 0x5e03, 0x5e06, 0x5e06,
0x5e0b, 0x5e0c, 0x5e11, 0x5e11, 0x5e16, 0x5e16, 0x5e19, 0x5e1b,
0x5e1d, 0x5e1d, 0x5e25, 0x5e25, 0x5e2b, 0x5e2b, 0x5e2d, 0x5e2d,
0x5e2f, 0x5e30, 0x5e33, 0x5e33, 0x5e36, 0x5e38, 0x5e3d, 0x5e3d,
0x5e3f, 0x5e40, 0x5e43, 0x5e45, 0x5e47, 0x5e47, 0x5e4c, 0x5e4c,
0x5e4e, 0x5e4e, 0x5e54, 0x5e55, 0x5e57, 0x5e57, 0x5e5f, 0x5e5f,
0x5e61, 0x5e64, 0x5e72, 0x5e7f, 0x5e81, 0x5e81, 0x5e83, 0x5e84,
0x5e87, 0x5e87, 0x5e8a, 0x5e8a, 0x5e8f, 0x5e8f, 0x5e95, 0x5e97,
0x5e9a, 0x5e9a, 0x5e9c, 0x5e9c, 0x5ea0, 0x5ea0, 0x5ea6, 0x5ea7,
0x5eab, 0x5eab, 0x5ead, 0x5ead, 0x5eb5, 0x5eb8, 0x5ebe, 0x5ebe,
0x5ec1, 0x5ec3, 0x5ec8, 0x5eca, 0x5ecf, 0x5ed0, 0x5ed3, 0x5ed3,
0x5ed6, 0x5ed6, 0x5eda, 0x5edb, 0x5edd, 0x5edd, 0x5edf, 0x5ee3,
0x5ee8, 0x5ee9, 0x5eec, 0x5eec, 0x5ef0, 0x5ef1, 0x5ef3, 0x5ef4,
0x5ef6, 0x5ef8, 0x5efa, 0x5efc, 0x5efe, 0x5eff, 0x5f01, 0x5f01,
0x5f03, 0x5f04, 0x5f09, 0x5f0d, 0x5f0f, 0x5f11, 0x5f13, 0x5f18,
0x5f1b, 0x5f1b, 0x5f1f, 0x5f1f, 0x5f21, 0x5f21, 0x5f25, 0x5f27,
0x5f29, 0x5f29, 0x5f2d, 0x5f2d, 0x5f2f, 0x5f2f, 0x5f31, 0x5f31,
0x5f34, 0x5f35, 0x5f37, 0x5f38, 0x5f3a, 0x5f3a, 0x5f3c, 0x5f3c,
0x5f3e, 0x5f3e, 0x5f41, 0x5f41, 0x5f45, 0x5f45, 0x5f48, 0x5f48,
0x5f4a, 0x5f4a, 0x5f4c, 0x5f4c, 0x5f4e, 0x5f4e, 0x5f51, 0x5f51,
0x5f53, 0x5f53, 0x5f56, 0x5f57, 0x5f59, 0x5f59, 0x5f5b, 0x5f5d,
0x5f61, 0x5f62, 0x5f66, 0x5f67, 0x5f69, 0x5f6d, 0x5f70, 0x5f71,
0x5f73, 0x5f73, 0x5f77, 0x5f77, 0x5f79, 0x5f79, 0x5f7c, 0x5f7c,
0x5f7f, 0x5f85, 0x5f87, 0x5f88, 0x5f8a, 0x5f8c, 0x5f90, 0x5f93,
0x5f97, 0x5f99, 0x5f9e, 0x5f9e, 0x5fa0, 0x5fa1, 0x5fa8, 0x5faa,
0x5fad, 0x5fae, 0x5fb3, 0x5fb5, 0x5fb7, 0x5fb7, 0x5fb9, 0x5fb9,
0x5fbc, 0x5fbd, 0x5fc3, 0x5fc3, 0x5fc5, 0x5fc5, 0x5fcc, 0x5fcd,
0x5fd6, 0x5fd9, 0x5fdc, 0x5fde, 0x5fe0, 0x5fe0, 0x5fe4, 0x5fe4,
0x5feb, 0x5feb, 0x5ff0, 0x5ff1, 0x5ff5, 0x5ff5, 0x5ff8, 0x5ff8,
0x5ffb, 0x5ffb, 0x5ffd, 0x5ffd, 0x5fff, 0x5fff, 0x600e, 0x6010,
0x6012, 0x6012, 0x6015, 0x6016, 0x6019, 0x6019, 0x601b, 0x601d,
0x6020, 0x6021, 0x6025, 0x602b, 0x602f, 0x602f, 0x6031, 0x6031,
0x603a, 0x603a, 0x6041, 0x6043, 0x6046, 0x6046, 0x604a, 0x604b,
0x604d, 0x604d, 0x6050, 0x6050, 0x6052, 0x6052, 0x6055, 0x6055,
0x6059, 0x605a, 0x605d, 0x605d, 0x605f, 0x6060, 0x6062, 0x6065,
0x6068, 0x606d, 0x606f, 0x6070, 0x6075, 0x6075, 0x6077, 0x6077,
0x6081, 0x6081, 0x6083, 0x6085, 0x6089, 0x608d, 0x6092, 0x6092,
0x6094, 0x6094, 0x6096, 0x6097, 0x609a, 0x609b, 0x609f, 0x60a0,
0x60a3, 0x60a4, 0x60a6, 0x60a7, 0x60a9, 0x60aa, 0x60b0, 0x60b0,
0x60b2, 0x60b6, 0x60b8, 0x60b8, 0x60bc, 0x60bd, 0x60c5, 0x60c7,
0x60d1, 0x60d1, 0x60d3, 0x60d3, 0x60d5, 0x60d5, 0x60d8, 0x60d8,
0x60da, 0x60da, 0x60dc, 0x60dc, 0x60de, 0x60e1, 0x60e3, 0x60e3,
0x60e7, 0x60e8, 0x60f0, 0x60f4, 0x60f6, 0x60f7, 0x60f9, 0x60fb,
0x6100, 0x6101, 0x6103, 0x6103, 0x6106, 0x6106, 0x6108, 0x6109,
0x610d, 0x610f, 0x6111, 0x6111, 0x6115, 0x6115, 0x611a, 0x611b,
0x611f, 0x6121, 0x6127, 0x6128, 0x612c, 0x612c, 0x6130, 0x6130,
0x6134, 0x6134, 0x6137, 0x6137, 0x613c, 0x613f, 0x6142, 0x6142,
0x6144, 0x6144, 0x6147, 0x6148, 0x614a, 0x614e, 0x6153, 0x6153,
0x6155, 0x6155, 0x6158, 0x615a, 0x615d, 0x615d, 0x615f, 0x615f,
0x6162, 0x6165, 0x6167, 0x6168, 0x616b, 0x616b, 0x616e, 0x6171,
0x6173, 0x6177, 0x617d, 0x617e, 0x6181, 0x6182, 0x6187, 0x6187,
0x618a, 0x618a, 0x618e, 0x618e, 0x6190, 0x6191, 0x6194, 0x6194,
0x6196, 0x6196, 0x6198, 0x619a, 0x61a4, 0x61a4, 0x61a7, 0x61a7,
0x61a9, 0x61a9, 0x61ab, 0x61ac, 0x61ae, 0x61ae, 0x61b2, 0x61b2,
0x61b6, 0x61b6, 0x61ba, 0x61ba, 0x61be, 0x61be, 0x61c3, 0x61c3,
0x61c6, 0x61cd, 0x61d0, 0x61d0, 0x61e3, 0x61e3, 0x61e6, 0x61e6,
0x61f2, 0x61f2, 0x61f4, 0x61f4, 0x61f6, 0x61f8, 0x61fa, 0x61fa,
0x61fc, 0x6200, 0x6207, 0x620a, 0x620c, 0x620e, 0x6210, 0x6214,
0x6216, 0x6216, 0x621a, 0x621b, 0x621d, 0x621f, 0x6221, 0x6221,
0x6226, 0x6226, 0x622a, 0x622a, 0x622e, 0x6234, 0x6236, 0x6236,
0x6238, 0x6238, 0x623b, 0x623b, 0x623e, 0x6241, 0x6247, 0x6249,
0x624b, 0x624b, 0x624d, 0x624e, 0x6253, 0x6253, 0x6255, 0x6255,
0x6258, 0x6258, 0x625b, 0x625b, 0x625e, 0x625e, 0x6260, 0x6260,
0x6263, 0x6263, 0x6268, 0x6268, 0x626e, 0x626e, 0x6271, 0x6271,
0x6276, 0x6276, 0x6279, 0x6279, 0x627c, 0x627c, 0x627e, 0x6280,
0x6282, 0x6284, 0x6289, 0x628a, 0x6291, 0x6298, 0x629b, 0x629c,
0x629e, 0x629e, 0x62a6, 0x62a6, 0x62ab, 0x62ac, 0x62b1, 0x62b1,
0x62b5, 0x62b5, 0x62b9, 0x62b9, 0x62bb, 0x62bd, 0x62c2, 0x62c2,
0x62c5, 0x62ca, 0x62cc, 0x62cd, 0x62cf, 0x62d4, 0x62d6, 0x62d9,
0x62db, 0x62dd, 0x62e0, 0x62e1, 0x62ec, 0x62ef, 0x62f1, 0x62f1,
0x62f3, 0x62f3, 0x62f5, 0x62f7, 0x62fe, 0x62ff, 0x6301, 0x6302,
0x6307, 0x6309, 0x630c, 0x630c, 0x6311, 0x6311, 0x6319, 0x6319,
0x631f, 0x631f, 0x6327, 0x6328, 0x632b, 0x632b, 0x632f, 0x632f,
0x633a, 0x633b, 0x633d, 0x633f, 0x6349, 0x6349, 0x634c, 0x634d,
0x634f, 0x6350, 0x6355, 0x6355, 0x6357, 0x6357, 0x635c, 0x635c,
0x6367, 0x6369, 0x636b, 0x636b, 0x636e, 0x636e, 0x6372, 0x6372,
0x6376, 0x6377, 0x637a, 0x637b, 0x637f, 0x6380, 0x6383, 0x6383,
0x6388, 0x6389, 0x638c, 0x638c, 0x638e, 0x638f, 0x6392, 0x6392,
0x6396, 0x6396, 0x6398, 0x6398, 0x639b, 0x639b, 0x639f, 0x63a3,
0x63a5, 0x63a5, 0x63a7, 0x63ac, 0x63b2, 0x63b2, 0x63b4, 0x63b5,
0x63bb, 0x63bb, 0x63be, 0x63be, 0x63c0, 0x63c0, 0x63c3, 0x63c4,
0x63c6, 0x63c6, 0x63c9, 0x63c9, 0x63cf, 0x63d0, 0x63d2, 0x63d2,
0x63d6, 0x63d6, 0x63da, 0x63db, 0x63e1, 0x63e1, 0x63e3, 0x63e3,
0x63e9, 0x63e9, 0x63ed, 0x63ee, 0x63f4, 0x63f7, 0x63fa, 0x63fa,
0x6406, 0x6406, 0x640d, 0x640d, 0x640f, 0x640f, 0x6413, 0x6414,
0x6416, 0x6417, 0x641c, 0x641c, 0x6422, 0x6422, 0x6426, 0x6426,
0x6428, 0x6428, 0x642c, 0x642d, 0x6434, 0x6434, 0x6436, 0x6436,
0x643a, 0x643a, 0x643e, 0x643e, 0x6442, 0x6442, 0x644e, 0x644e,
0x6458, 0x6458, 0x6460, 0x6460, 0x6467, 0x6467, 0x6469, 0x6469,
0x646f, 0x646f, 0x6476, 0x6476, 0x6478, 0x647a, 0x6483, 0x6483,
0x6488, 0x6488, 0x6491, 0x6493, 0x6495, 0x6495, 0x649a, 0x649a,
0x649d, 0x649e, 0x64a4, 0x64a5, 0x64a9, 0x64a9, 0x64ab, 0x64ab,
0x64ad, 0x64ae, 0x64b0, 0x64b0, 0x64b2, 0x64b2, 0x64b9, 0x64b9,
0x64bb, 0x64bc, 0x64c1, 0x64c2, 0x64c4, 0x64c5, 0x64c7, 0x64c7,
0x64ca, 0x64ca, 0x64cd, 0x64ce, 0x64d2, 0x64d2, 0x64d4, 0x64d4,
0x64d8, 0x64d8, 0x64da, 0x64da, 0x64e0, 0x64e3, 0x64e5, 0x64e7,
0x64ec, 0x64ec, 0x64ef, 0x64ef, 0x64f1, 0x64f2, 0x64f4, 0x64f4,
0x64f6, 0x64f6, 0x64fa, 0x64fa, 0x64fd, 0x64fe, 0x6500, 0x6500,
0x6504, 0x6505, 0x6518, 0x6518, 0x651c, 0x651d, 0x6523, 0x6524,
0x652a, 0x652c, 0x652f, 0x652f, 0x6534, 0x6539, 0x653b, 0x653b,
0x653e, 0x653f, 0x6545, 0x6545, 0x6548, 0x6548, 0x654d, 0x654f,
0x6551, 0x6551, 0x6555, 0x6559, 0x655d, 0x655e, 0x6562, 0x6563,
0x6566, 0x6566, 0x656c, 0x656d, 0x6570, 0x6570, 0x6572, 0x6572,
0x6574, 0x6575, 0x6577, 0x6578, 0x657e, 0x657e, 0x6582, 0x6583,
0x6585, 0x6585, 0x6587, 0x6589, 0x658c, 0x658c, 0x658e, 0x658e,
0x6590, 0x6591, 0x6597, 0x6597, 0x6599, 0x6599, 0x659b, 0x659c,
0x659f, 0x659f, 0x65a1, 0x65a1, 0x65a4, 0x65a5, 0x65a7, 0x65a7,
0x65ab, 0x65ad, 0x65af, 0x65b0, 0x65b7, 0x65b7, 0x65b9, 0x65b9,
0x65bc, 0x65bd, 0x65c1, 0x65c1, 0x65c3, 0x65c6, 0x65cb, 0x65cc,
0x65cf, 0x65cf, 0x65d2, 0x65d2, 0x65d7, 0x65d7, 0x65d9, 0x65d9,
0x65db, 0x65db, 0x65e0, 0x65e3, 0x65e5, 0x65e9, 0x65ec, 0x65ed,
0x65f1, 0x65f1, 0x65f4, 0x65f4, 0x65fa, 0x65fd, 0x65ff, 0x6600,
0x6602, 0x6603, 0x6606, 0x6607, 0x6609, 0x660a, 0x660c, 0x660c,
0x660e, 0x6611, 0x6613, 0x6615, 0x661c, 0x661c, 0x661e, 0x6620,
0x6624, 0x6625, 0x6627, 0x6628, 0x662d, 0x6631, 0x6634, 0x6636,
0x663a, 0x663c, 0x663f, 0x663f, 0x6641, 0x6644, 0x6649, 0x6649,
0x664b, 0x664b, 0x664f, 0x664f, 0x6652, 0x6652, 0x6657, 0x6657,
0x6659, 0x6659, 0x665b, 0x665b, 0x665d, 0x665f, 0x6662, 0x6662,
0x6664, 0x6669, 0x666b, 0x666b, 0x666e, 0x6670, 0x6673, 0x6674,
0x6676, 0x6678, 0x667a, 0x667a, 0x6681, 0x6681, 0x6683, 0x6684,
0x6687, 0x6689, 0x668e, 0x668e, 0x6690, 0x6691, 0x6696, 0x6699,
0x669d, 0x669d, 0x66a0, 0x66a0, 0x66a2, 0x66a2, 0x66a6, 0x66a6,
0x66ab, 0x66ab, 0x66ae, 0x66ae, 0x66b2, 0x66b4, 0x66b8, 0x66b9,
0x66bb, 0x66bc, 0x66be, 0x66bf, 0x66c1, 0x66c1, 0x66c4, 0x66c4,
0x66c6, 0x66c7, 0x66c9, 0x66c9, 0x66d6, 0x66d6, 0x66d9, 0x66da,
0x66dc, 0x66dd, 0x66e0, 0x66e0, 0x66e6, 0x66e6, 0x66e9, 0x66e9,
0x66f0, 0x66f0, 0x66f2, 0x66f5, 0x66f7, 0x6700, 0x6703, 0x6703,
0x6708, 0x6709, 0x670b, 0x670b, 0x670d, 0x670f, 0x6714, 0x6717,
0x671b, 0x671b, 0x671d, 0x671f, 0x6726, 0x6728, 0x672a, 0x672e,
0x6731, 0x6731, 0x6734, 0x6734, 0x6736, 0x6738, 0x673a, 0x673a,
0x673d, 0x673d, 0x673f, 0x673f, 0x6741, 0x6741, 0x6746, 0x6746,
0x6749, 0x6749, 0x674e, 0x6751, 0x6753, 0x6753, 0x6756, 0x6756,
0x6759, 0x6759, 0x675c, 0x675c, 0x675e, 0x6766, 0x676a, 0x676a,
0x676d, 0x676d, 0x676f, 0x6773, 0x6775, 0x6775, 0x6777, 0x6777,
0x677b, 0x677c, 0x677e, 0x677f, 0x6785, 0x6785, 0x6787, 0x6787,
0x6789, 0x6789, 0x678b, 0x678c, 0x678f, 0x6790, 0x6793, 0x6793,
0x6795, 0x6795, 0x6797, 0x6797, 0x679a, 0x679a, 0x679c, 0x679d,
0x67a0, 0x67a2, 0x67a6, 0x67a6, 0x67a9, 0x67a9, 0x67af, 0x67b0,
0x67b3, 0x67b4, 0x67b6, 0x67b9, 0x67bb, 0x67bb, 0x67be, 0x67be,
0x67c0, 0x67c1, 0x67c4, 0x67c4, 0x67c6, 0x67c6, 0x67ca, 0x67ca,
0x67ce, 0x67d4, 0x67d8, 0x67d8, 0x67da, 0x67da, 0x67dd, 0x67de,
0x67e2, 0x67e2, 0x67e4, 0x67e4, 0x67e7, 0x67e7, 0x67e9, 0x67e9,
0x67ec, 0x67ec, 0x67ee, 0x67f1, 0x67f3, 0x67f6, 0x67fb, 0x67fb,
0x67fe, 0x67ff, 0x6801, 0x6804, 0x6812, 0x6813, 0x6816, 0x6817,
0x681e, 0x681e, 0x6821, 0x6822, 0x6829, 0x682b, 0x682f, 0x682f,
0x6832, 0x6832, 0x6834, 0x6834, 0x6838, 0x6839, 0x683c, 0x683d,
0x6840, 0x6844, 0x6846, 0x6846, 0x6848, 0x6848, 0x684d, 0x684e,
0x6850, 0x6854, 0x6859, 0x6859, 0x685c, 0x685d, 0x685f, 0x685f,
0x6863, 0x6863, 0x6867, 0x6867, 0x686d, 0x686d, 0x6874, 0x6874,
0x6876, 0x6877, 0x687e, 0x687f, 0x6881, 0x6881, 0x6883, 0x6883,
0x6885, 0x6885, 0x688d, 0x688d, 0x688f, 0x688f, 0x6893, 0x6894,
0x6897, 0x6897, 0x689b, 0x689b, 0x689d, 0x689d, 0x689f, 0x68a2,
0x68a6, 0x68a8, 0x68ad, 0x68ad, 0x68af, 0x68b1, 0x68b3, 0x68b3,
0x68b5, 0x68b6, 0x68b9, 0x68ba, 0x68bc, 0x68bc, 0x68c4, 0x68c6,
0x68c8, 0x68cb, 0x68cd, 0x68cd, 0x68cf, 0x68cf, 0x68d2, 0x68d2,
0x68d4, 0x68d5, 0x68d7, 0x68d8, 0x68da, 0x68da, 0x68df, 0x68e1,
0x68e3, 0x68e3, 0x68e7, 0x68e8, 0x68ee, 0x68ef, 0x68f2, 0x68f2,
0x68f9, 0x68fa, 0x6900, 0x6901, 0x6904, 0x6905, 0x6908, 0x6908,
0x690b, 0x690f, 0x6912, 0x6912, 0x6919, 0x691c, 0x6921, 0x6923,
0x6925, 0x6928, 0x692a, 0x692a, 0x6930, 0x6930, 0x6934, 0x6934,
0x6936, 0x6936, 0x6939, 0x6939, 0x693d, 0x693d, 0x693f, 0x693f,
0x694a, 0x694a, 0x6953, 0x6955, 0x6957, 0x6957, 0x6959, 0x695a,
0x695c, 0x695e, 0x6960, 0x6963, 0x6968, 0x6968, 0x696a, 0x696b,
0x696d, 0x696f, 0x6973, 0x6975, 0x6977, 0x6979, 0x697c, 0x697e,
0x6981, 0x6982, 0x698a, 0x698a, 0x698e, 0x698e, 0x6991, 0x6991,
0x6994, 0x6995, 0x6998, 0x6998, 0x699b, 0x699c, 0x69a0, 0x69a0,
0x69a5, 0x69a5, 0x69a7, 0x69a7, 0x69ae, 0x69ae, 0x69b1, 0x69b2,
0x69b4, 0x69b4, 0x69bb, 0x69bb, 0x69be, 0x69bf, 0x69c1, 0x69c1,
0x69c3, 0x69c3, 0x69c7, 0x69c7, 0x69ca, 0x69ce, 0x69d0, 0x69d0,
0x69d3, 0x69d3, 0x69d8, 0x69d9, 0x69dd, 0x69de, 0x69e2, 0x69e2,
0x69e7, 0x69e8, 0x69ea, 0x69eb, 0x69ed, 0x69ed, 0x69f2, 0x69f2,
0x69f9, 0x69f9, 0x69fb, 0x69fb, 0x69fd, 0x69fd, 0x69ff, 0x69ff,
0x6a02, 0x6a02, 0x6a05, 0x6a05, 0x6a0a, 0x6a0c, 0x6a11, 0x6a14,
0x6a17, 0x6a17, 0x6a19, 0x6a19, 0x6a1b, 0x6a1b, 0x6a1e, 0x6a1f,
0x6a21, 0x6a23, 0x6a29, 0x6a2b, 0x6a2e, 0x6a2e, 0x6a30, 0x6a30,
0x6a35, 0x6a36, 0x6a38, 0x6a3a, 0x6a3d, 0x6a3d, 0x6a44, 0x6a44,
0x6a46, 0x6a48, 0x6a4b, 0x6a4b, 0x6a52, 0x6a53, 0x6a58, 0x6a59,
0x6a5f, 0x6a5f, 0x6a61, 0x6a62, 0x6a66, 0x6a66, 0x6a6b, 0x6a6b,
0x6a72, 0x6a73, 0x6a78, 0x6a78, 0x6a7e, 0x6a80, 0x6a84, 0x6a84,
0x6a89, 0x6a89, 0x6a8d, 0x6a8e, 0x6a90, 0x6a90, 0x6a97, 0x6a97,
0x6a9c, 0x6a9c, 0x6aa0, 0x6aa0, 0x6aa2, 0x6aa3, 0x6aaa, 0x6aaa,
0x6aac, 0x6aac, 0x6aae, 0x6aae, 0x6ab3, 0x6ab3, 0x6ab8, 0x6ab8,
0x6abb, 0x6abb, 0x6ac1, 0x6ac3, 0x6ad1, 0x6ad1, 0x6ad3, 0x6ad3,
0x6ada, 0x6adb, 0x6ade, 0x6adf, 0x6ae2, 0x6ae2, 0x6ae4, 0x6ae4,
0x6ae8, 0x6ae8, 0x6aea, 0x6aea, 0x6af6, 0x6af6, 0x6afa, 0x6afb,
0x6b04, 0x6b05, 0x6b0a, 0x6b0a, 0x6b0c, 0x6b0c, 0x6b12, 0x6b12,
0x6b16, 0x6b16, 0x6b1d, 0x6b1d, 0x6b1f, 0x6b21, 0x6b23, 0x6b23,
0x6b27, 0x6b27, 0x6b32, 0x6b32, 0x6b37, 0x6b3a, 0x6b3d, 0x6b3e,
0x6b43, 0x6b43, 0x6b46, 0x6b47, 0x6b49, 0x6b49, 0x6b4c, 0x6b4c,
0x6b4e, 0x6b4e, 0x6b50, 0x6b50, 0x6b53, 0x6b54, 0x6b59, 0x6b59,
0x6b5b, 0x6b5b, 0x6b5f, 0x6b5f, 0x6b61, 0x6b66, 0x6b69, 0x6b6a,
0x6b6f, 0x6b6f, 0x6b72, 0x6b74, 0x6b77, 0x6b79, 0x6b7b, 0x6b7b,
0x6b7f, 0x6b80, 0x6b83, 0x6b84, 0x6b86, 0x6b86, 0x6b89, 0x6b8b,
0x6b8d, 0x6b8d, 0x6b95, 0x6b96, 0x6b98, 0x6b98, 0x6b9e, 0x6b9e,
0x6ba4, 0x6ba4, 0x6baa, 0x6bab, 0x6bae, 0x6baf, 0x6bb1, 0x6bb5,
0x6bb7, 0x6bb7, 0x6bba, 0x6bbc, 0x6bbf, 0x6bc1, 0x6bc5, 0x6bc6,
0x6bcb, 0x6bcb, 0x6bcd, 0x6bcf, 0x6bd2, 0x6bd4, 0x6bd6, 0x6bd8,
0x6bdb, 0x6bdb, 0x6bdf, 0x6bdf, 0x6beb, 0x6bec, 0x6bef, 0x6bef,
0x6bf3, 0x6bf3, 0x6c08, 0x6c08, 0x6c0f, 0x6c0f, 0x6c11, 0x6c11,
0x6c13, 0x6c14, 0x6c17, 0x6c17, 0x6c1b, 0x6c1b, 0x6c23, 0x6c24,
0x6c34, 0x6c34, 0x6c37, 0x6c38, 0x6c3e, 0x6c42, 0x6c4e, 0x6c4e,
0x6c50, 0x6c50, 0x6c55, 0x6c55, 0x6c57, 0x6c57, 0x6c5a, 0x6c5a,
0x6c5c, 0x6c60, 0x6c62, 0x6c62, 0x6c68, 0x6c68, 0x6c6a, 0x6c6a,
0x6c6d, 0x6c6d, 0x6c6f, 0x6c70, 0x6c72, 0x6c73, 0x6c76, 0x6c76,
0x6c7a, 0x6c7a, 0x6c7d, 0x6c7e, 0x6c81, 0x6c83, 0x6c85, 0x6c88,
0x6c8c, 0x6c8d, 0x6c90, 0x6c90, 0x6c92, 0x6c96, 0x6c99, 0x6c9b,
0x6ca1, 0x6ca2, 0x6cab, 0x6cab, 0x6cae, 0x6cae, 0x6cb1, 0x6cb1,
0x6cb3, 0x6cb3, 0x6cb8, 0x6cbf, 0x6cc1, 0x6cc2, 0x6cc4, 0x6cc5,
0x6cc9, 0x6cca, 0x6ccc, 0x6ccc, 0x6cd3, 0x6cd3, 0x6cd5, 0x6cd5,
0x6cd7, 0x6cd7, 0x6cd9, 0x6cdb, 0x6cdd, 0x6cdd, 0x6ce1, 0x6ce3,
0x6ce5, 0x6ce5, 0x6ce8, 0x6ce8, 0x6cea, 0x6ceb, 0x6cee, 0x6cf1,
0x6cf3, 0x6cf3, 0x6d04, 0x6d04, 0x6d0b, 0x6d0c, 0x6d11, 0x6d12,
0x6d17, 0x6d17, 0x6d19, 0x6d19, 0x6d1b, 0x6d1b, 0x6d1e, 0x6d1f,
0x6d25, 0x6d25, 0x6d27, 0x6d27, 0x6d29, 0x6d2b, 0x6d32, 0x6d33,
0x6d35, 0x6d36, 0x6d38, 0x6d39, 0x6d3b, 0x6d3b, 0x6d3d, 0x6d3e,
0x6d41, 0x6d41, 0x6d44, 0x6d45, 0x6d59, 0x6d5a, 0x6d5c, 0x6d5c,
0x6d63, 0x6d64, 0x6d66, 0x6d66, 0x6d69, 0x6d6a, 0x6d6c, 0x6d6c,
0x6d6e, 0x6d6f, 0x6d74, 0x6d74, 0x6d77, 0x6d79, 0x6d7f, 0x6d7f,
0x6d85, 0x6d85, 0x6d87, 0x6d89, 0x6d8c, 0x6d8e, 0x6d91, 0x6d91,
0x6d93, 0x6d93, 0x6d95, 0x6d96, 0x6d99, 0x6d99, 0x6d9b, 0x6d9c,
0x6dac, 0x6dac, 0x6daf, 0x6daf, 0x6db2, 0x6db2, 0x6db5, 0x6db5,
0x6db8, 0x6db8, 0x6dbc, 0x6dbc, 0x6dc0, 0x6dc0, 0x6dc3, 0x6dc7,
0x6dcb, 0x6dcc, 0x6dcf, 0x6dcf, 0x6dd1, 0x6dd2, 0x6dd5, 0x6dd5,
0x6dd8, 0x6dda, 0x6dde, 0x6dde, 0x6de1, 0x6de1, 0x6de4, 0x6de4,
0x6de6, 0x6de6, 0x6de8, 0x6de8, 0x6dea, 0x6dec, 0x6dee, 0x6dee,
0x6df1, 0x6df3, 0x6df5, 0x6df5, 0x6df7, 0x6dfc, 0x6e05, 0x6e05,
0x6e07, 0x6e0b, 0x6e13, 0x6e13, 0x6e15, 0x6e15, 0x6e17, 0x6e17,
0x6e19, 0x6e1b, 0x6e1d, 0x6e1d, 0x6e1f, 0x6e21, 0x6e23, 0x6e27,
0x6e29, 0x6e29, 0x6e2b, 0x6e2f, 0x6e32, 0x6e32, 0x6e34, 0x6e34,
0x6e36, 0x6e36, 0x6e38, 0x6e3a, 0x6e3c, 0x6e3e, 0x6e43, 0x6e44,
0x6e4a, 0x6e4a, 0x6e4d, 0x6e4e, 0x6e56, 0x6e56, 0x6e58, 0x6e58,
0x6e5b, 0x6e5c, 0x6e5e, 0x6e5f, 0x6e67, 0x6e67, 0x6e6b, 0x6e6b,
0x6e6e, 0x6e6f, 0x6e72, 0x6e73, 0x6e76, 0x6e76, 0x6e7a, 0x6e7a,
0x6e7e, 0x6e80, 0x6e82, 0x6e82, 0x6e8c, 0x6e8c, 0x6e8f, 0x6e90,
0x6e96, 0x6e96, 0x6e98, 0x6e98, 0x6e9c, 0x6e9d, 0x6e9f, 0x6e9f,
0x6ea2, 0x6ea2, 0x6ea5, 0x6ea5, 0x6eaa, 0x6eab, 0x6eaf, 0x6eaf,
0x6eb1, 0x6eb2, 0x6eb6, 0x6eb7, 0x6eba, 0x6eba, 0x6ebd, 0x6ebd,
0x6ebf, 0x6ebf, 0x6ec2, 0x6ec2, 0x6ec4, 0x6ec5, 0x6ec9, 0x6ec9,
0x6ecb, 0x6ecc, 0x6ece, 0x6ece, 0x6ed1, 0x6ed1, 0x6ed3, 0x6ed5,
0x6edd, 0x6ede, 0x6eec, 0x6eec, 0x6eef, 0x6eef, 0x6ef2, 0x6ef2,
0x6ef4, 0x6ef4, 0x6ef7, 0x6ef8, 0x6efe, 0x6eff, 0x6f01, 0x6f02,
0x6f06, 0x6f06, 0x6f09, 0x6f09, 0x6f0f, 0x6f0f, 0x6f11, 0x6f11,
0x6f13, 0x6f15, 0x6f20, 0x6f20, 0x6f22, 0x6f23, 0x6f2b, 0x6f2c,
0x6f31, 0x6f32, 0x6f38, 0x6f38, 0x6f3e, 0x6f3f, 0x6f41, 0x6f41,
0x6f45, 0x6f45, 0x6f51, 0x6f51, 0x6f54, 0x6f54, 0x6f57, 0x6f58,
0x6f5a, 0x6f5c, 0x6f5e, 0x6f5f, 0x6f62, 0x6f62, 0x6f64, 0x6f64,
0x6f66, 0x6f66, 0x6f6d, 0x6f70, 0x6f74, 0x6f74, 0x6f78, 0x6f78,
0x6f7a, 0x6f7a, 0x6f7c, 0x6f7e, 0x6f80, 0x6f82, 0x6f84, 0x6f84,
0x6f86, 0x6f86, 0x6f88, 0x6f88, 0x6f8d, 0x6f8e, 0x6f90, 0x6f91,
0x6f94, 0x6f94, 0x6f97, 0x6f97, 0x6fa1, 0x6fa1, 0x6fa3, 0x6fa4,
0x6fa7, 0x6fa7, 0x6faa, 0x6faa, 0x6fae, 0x6faf, 0x6fb1, 0x6fb1,
0x6fb3, 0x6fb3, 0x6fb5, 0x6fb5, 0x6fb9, 0x6fb9, 0x6fbe, 0x6fbe,
0x6fc0, 0x6fc3, 0x6fc6, 0x6fc6, 0x6fca, 0x6fca, 0x6fd4, 0x6fd5,
0x6fd8, 0x6fd8, 0x6fda, 0x6fdb, 0x6fdf, 0x6fe1, 0x6fe4, 0x6fe4,
0x6fe9, 0x6fe9, 0x6feb, 0x6fec, 0x6fee, 0x6fef, 0x6ff1, 0x6ff1,
0x6ff3, 0x6ff3, 0x6ff5, 0x6ff6, 0x6ffa, 0x6ffa, 0x6ffe, 0x6ffe,
0x7001, 0x7001, 0x7005, 0x7007, 0x7009, 0x7009, 0x700b, 0x700b,
0x700f, 0x700f, 0x7011, 0x7011, 0x7015, 0x7015, 0x7018, 0x7018,
0x701a, 0x701f, 0x7023, 0x7023, 0x7026, 0x7028, 0x702c, 0x702c,
0x702f, 0x7030, 0x7032, 0x7032, 0x7037, 0x7037, 0x703e, 0x703e,
0x704c, 0x704c, 0x7050, 0x7051, 0x7058, 0x7058, 0x705d, 0x705d,
0x7063, 0x7063, 0x706b, 0x706b, 0x706f, 0x7070, 0x7078, 0x7078,
0x707c, 0x707d, 0x7085, 0x7085, 0x7089, 0x708a, 0x708e, 0x708e,
0x7092, 0x7092, 0x7098, 0x709a, 0x70a1, 0x70a1, 0x70a4, 0x70a4,
0x70ab, 0x70af, 0x70b3, 0x70b3, 0x70b7, 0x70bb, 0x70c8, 0x70c8,
0x70cb, 0x70cb, 0x70cf, 0x70cf, 0x70d8, 0x70d9, 0x70dd, 0x70dd,
0x70df, 0x70df, 0x70f1, 0x70f1, 0x70f9, 0x70f9, 0x70fd, 0x70fd,
0x7104, 0x7104, 0x7109, 0x7109, 0x710c, 0x710c, 0x710f, 0x710f,
0x7114, 0x7114, 0x7119, 0x711a, 0x711c, 0x711c, 0x711e, 0x711e,
0x7121, 0x7121, 0x7126, 0x7126, 0x7130, 0x7130, 0x7136, 0x7136,
0x713c, 0x713c, 0x7146, 0x7147, 0x7149, 0x714a, 0x714c, 0x714c,
0x714e, 0x714e, 0x7150, 0x7150, 0x7155, 0x7156, 0x7159, 0x7159,
0x715c, 0x715c, 0x715e, 0x715e, 0x7162, 0x7162, 0x7164, 0x7167,
0x7169, 0x7169, 0x716c, 0x716c, 0x716e, 0x716e, 0x717d, 0x717d,
0x7184, 0x7184, 0x7188, 0x718a, 0x718f, 0x718f, 0x7192, 0x7192,
0x7194, 0x7195, 0x7199, 0x7199, 0x719f, 0x719f, 0x71a2, 0x71a2,
0x71a8, 0x71a8, 0x71ac, 0x71ac, 0x71b1, 0x71b1, 0x71b9, 0x71ba,
0x71be, 0x71be, 0x71c1, 0x71c1, 0x71c3, 0x71c3, 0x71c8, 0x71c9,
0x71ce, 0x71ce, 0x71d0, 0x71d0, 0x71d2, 0x71d2, 0x71d4, 0x71d5,
0x71d7, 0x71d7, 0x71df, 0x71e0, 0x71e5, 0x71e7, 0x71ec, 0x71ee,
0x71f5, 0x71f5, 0x71f9, 0x71f9, 0x71fb, 0x71fc, 0x71fe, 0x7200,
0x7206, 0x7206, 0x720d, 0x720d, 0x7210, 0x7210, 0x721b, 0x721b,
0x7228, 0x7228, 0x722a, 0x722a, 0x722c, 0x722d, 0x7230, 0x7230,
0x7232, 0x7232, 0x7235, 0x7236, 0x723a, 0x7240, 0x7246, 0x7248,
0x724b, 0x724c, 0x7252, 0x7252, 0x7258, 0x7259, 0x725b, 0x725b,
0x725d, 0x725d, 0x725f, 0x725f, 0x7261, 0x7262, 0x7267, 0x7267,
0x7269, 0x7269, 0x7272, 0x7272, 0x7274, 0x7274, 0x7279, 0x7279,
0x727d, 0x727e, 0x7280, 0x7282, 0x7287, 0x7287, 0x7292, 0x7292,
0x7296, 0x7296, 0x72a0, 0x72a0, 0x72a2, 0x72a2, 0x72a7, 0x72a7,
0x72ac, 0x72ac, 0x72af, 0x72af, 0x72b1, 0x72b2, 0x72b6, 0x72b6,
0x72b9, 0x72b9, 0x72be, 0x72be, 0x72c0, 0x72c0, 0x72c2, 0x72c4,
0x72c6, 0x72c6, 0x72ce, 0x72ce, 0x72d0, 0x72d0, 0x72d2, 0x72d2,
0x72d7, 0x72d7, 0x72d9, 0x72d9, 0x72db, 0x72db, 0x72e0, 0x72e2,
0x72e9, 0x72e9, 0x72ec, 0x72ed, 0x72f7, 0x72f9, 0x72fc, 0x72fd,
0x730a, 0x730a, 0x7316, 0x7317, 0x731b, 0x731d, 0x731f, 0x731f,
0x7324, 0x7325, 0x7329, 0x732b, 0x732e, 0x732f, 0x7334, 0x7334,
0x7336, 0x7337, 0x733e, 0x733f, 0x7344, 0x7345, 0x734e, 0x7350,
0x7352, 0x7352, 0x7357, 0x7357, 0x7363, 0x7363, 0x7368, 0x7368,
0x736a, 0x736a, 0x7370, 0x7370, 0x7372, 0x7372, 0x7375, 0x7375,
0x7377, 0x7378, 0x737a, 0x737b, 0x7384, 0x7384, 0x7386, 0x7387,
0x7389, 0x7389, 0x738b, 0x738b, 0x738e, 0x738e, 0x7394, 0x7394,
0x7396, 0x7398, 0x739f, 0x739f, 0x73a7, 0x73a7, 0x73a9, 0x73a9,
0x73ad, 0x73ad, 0x73b2, 0x73b3, 0x73b9, 0x73b9, 0x73bb, 0x73bb,
0x73bd, 0x73bd, 0x73c0, 0x73c0, 0x73c2, 0x73c2, 0x73c8, 0x73ca,
0x73cc, 0x73cf, 0x73d2, 0x73d2, 0x73d6, 0x73d6, 0x73d9, 0x73d9,
0x73dd, 0x73de, 0x73e0, 0x73e0, 0x73e3, 0x73e6, 0x73e9, 0x73ea,
0x73ed, 0x73ee, 0x73f1, 0x73f1, 0x73f5, 0x73f5, 0x73f7, 0x73f9,
0x73fd, 0x73fe, 0x7401, 0x7401, 0x7403, 0x7403, 0x7405, 0x7407,
0x7409, 0x7409, 0x7413, 0x7413, 0x741b, 0x741b, 0x7420, 0x7422,
0x7425, 0x7426, 0x7428, 0x742c, 0x742e, 0x7430, 0x7432, 0x7436,
0x7438, 0x7438, 0x743a, 0x743a, 0x743f, 0x7441, 0x7443, 0x7444,
0x744b, 0x744b, 0x7455, 0x7455, 0x7457, 0x7457, 0x7459, 0x745c,
0x745e, 0x7460, 0x7462, 0x7465, 0x7468, 0x746a, 0x746f, 0x7470,
0x7473, 0x7473, 0x7476, 0x7476, 0x747e, 0x747e, 0x7482, 0x7483,
0x7487, 0x7487, 0x7489, 0x7489, 0x748b, 0x748b, 0x7498, 0x7498,
0x749c, 0x749c, 0x749e, 0x749f, 0x74a1, 0x74a3, 0x74a5, 0x74a5,
0x74a7, 0x74a8, 0x74aa, 0x74aa, 0x74b0, 0x74b0, 0x74b2, 0x74b2,
0x74b5, 0x74b5, 0x74b9, 0x74b9, 0x74bd, 0x74bd, 0x74bf, 0x74bf,
0x74c6, 0x74c6, 0x74ca, 0x74ca, 0x74cf, 0x74cf, 0x74d4, 0x74d4,
0x74d8, 0x74d8, 0x74da, 0x74da, 0x74dc, 0x74dc, 0x74e0, 0x74e0,
0x74e2, 0x74e3, 0x74e6, 0x74e7, 0x74e9, 0x74e9, 0x74ee, 0x74ee,
0x74f0, 0x74f2, 0x74f6, 0x74f8, 0x7501, 0x7501, 0x7503, 0x7505,
0x750c, 0x750e, 0x7511, 0x7511, 0x7513, 0x7513, 0x7515, 0x7515,
0x7518, 0x7518, 0x751a, 0x751c, 0x751e, 0x751f, 0x7523, 0x7523,
0x7525, 0x7526, 0x7528, 0x7528, 0x752b, 0x752c, 0x752f, 0x7533,
0x7537, 0x7538, 0x753a, 0x753c, 0x7544, 0x7544, 0x7546, 0x7547,
0x7549, 0x754d, 0x754f, 0x754f, 0x7551, 0x7551, 0x7553, 0x7554,
0x7559, 0x755d, 0x7560, 0x7560, 0x7562, 0x7562, 0x7564, 0x7567,
0x7569, 0x756b, 0x756d, 0x756d, 0x756f, 0x7570, 0x7573, 0x7578,
0x757a, 0x757a, 0x757f, 0x757f, 0x7582, 0x7582, 0x7586, 0x7587,
0x7589, 0x758b, 0x758e, 0x758f, 0x7591, 0x7591, 0x7594, 0x7594,
0x759a, 0x759a, 0x759d, 0x759d, 0x75a3, 0x75a3, 0x75a5, 0x75a5,
0x75ab, 0x75ab, 0x75b1, 0x75b3, 0x75b5, 0x75b5, 0x75b8, 0x75b9,
0x75bc, 0x75be, 0x75c2, 0x75c3, 0x75c5, 0x75c5, 0x75c7, 0x75c7,
0x75ca, 0x75ca, 0x75cd, 0x75cd, 0x75d2, 0x75d2, 0x75d4, 0x75d5,
0x75d8, 0x75d9, 0x75db, 0x75db, 0x75de, 0x75de, 0x75e2, 0x75e3,
0x75e9, 0x75e9, 0x75f0, 0x75f0, 0x75f2, 0x75f4, 0x75fa, 0x75fa,
0x75fc, 0x75fc, 0x75fe, 0x7601, 0x7609, 0x7609, 0x760b, 0x760b,
0x760d, 0x760d, 0x7619, 0x7619, 0x761f, 0x7622, 0x7624, 0x7624,
0x7626, 0x7627, 0x7630, 0x7630, 0x7634, 0x7634, 0x763b, 0x763b,
0x7642, 0x7642, 0x7646, 0x7648, 0x764c, 0x764c, 0x764e, 0x764e,
0x7652, 0x7652, 0x7656, 0x7656, 0x7658, 0x7658, 0x765c, 0x765c,
0x7661, 0x7662, 0x7664, 0x7664, 0x7667, 0x766a, 0x766c, 0x766c,
0x7670, 0x7670, 0x7672, 0x7672, 0x7676, 0x7676, 0x7678, 0x7678,
0x767a, 0x767e, 0x7680, 0x7680, 0x7682, 0x7684, 0x7686, 0x7688,
0x768b, 0x768b, 0x768e, 0x768e, 0x7690, 0x7690, 0x7693, 0x7693,
0x7696, 0x7696, 0x7699, 0x769c, 0x769e, 0x769e, 0x76a6, 0x76a6,
0x76ae, 0x76ae, 0x76b0, 0x76b0, 0x76b4, 0x76b4, 0x76b7, 0x76ba,
0x76bf, 0x76bf, 0x76c2, 0x76c3, 0x76c6, 0x76c6, 0x76c8, 0x76c8,
0x76ca, 0x76ca, 0x76cd, 0x76cd, 0x76d2, 0x76d2, 0x76d6, 0x76d7,
0x76db, 0x76dc, 0x76de, 0x76df, 0x76e1, 0x76e1, 0x76e3, 0x76e5,
0x76e7, 0x76e7, 0x76ea, 0x76ea, 0x76ee, 0x76ee, 0x76f2, 0x76f2,
0x76f4, 0x76f4, 0x76f8, 0x76f8, 0x76fb, 0x76fc, 0x76fe, 0x76fe,
0x7701, 0x7701, 0x7704, 0x7704, 0x7707, 0x7709, 0x770b, 0x770c,
0x771b, 0x771b, 0x771e, 0x7720, 0x7724, 0x7726, 0x7729, 0x7729,
0x7737, 0x7738, 0x773a, 0x773a, 0x773c, 0x773c, 0x7740, 0x7740,
0x7746, 0x7747, 0x774d, 0x774d, 0x775a, 0x775b, 0x7761, 0x7761,
0x7763, 0x7763, 0x7765, 0x7766, 0x7768, 0x7768, 0x776b, 0x776b,
0x7779, 0x7779, 0x777e, 0x777f, 0x778b, 0x778b, 0x778e, 0x778e,
0x7791, 0x7791, 0x779e, 0x779e, 0x77a0, 0x77a0, 0x77a5, 0x77a5,
0x77ac, 0x77ad, 0x77b0, 0x77b0, 0x77b3, 0x77b3, 0x77b6, 0x77b6,
0x77b9, 0x77b9, 0x77bb, 0x77bd, 0x77bf, 0x77bf, 0x77c7, 0x77c7,
0x77cd, 0x77cd, 0x77d7, 0x77d7, 0x77da, 0x77dc, 0x77e2, 0x77e3,
0x77e5, 0x77e5, 0x77e7, 0x77e7, 0x77e9, 0x77e9, 0x77ed, 0x77ef,
0x77f3, 0x77f3, 0x77fc, 0x77fc, 0x7802, 0x7802, 0x780c, 0x780c,
0x7812, 0x7812, 0x7814, 0x7815, 0x7820, 0x7821, 0x7825, 0x7827,
0x782c, 0x782c, 0x7832, 0x7832, 0x7834, 0x7834, 0x783a, 0x783a,
0x783f, 0x783f, 0x7845, 0x7845, 0x784e, 0x784f, 0x785d, 0x785d,
0x7864, 0x7864, 0x786b, 0x786c, 0x786f, 0x786f, 0x7872, 0x7872,
0x7874, 0x7874, 0x787a, 0x787a, 0x787c, 0x787c, 0x7881, 0x7881,
0x7886, 0x7887, 0x788c, 0x788e, 0x7891, 0x7891, 0x7893, 0x7893,
0x7895, 0x7895, 0x7897, 0x7897, 0x789a, 0x789a, 0x78a3, 0x78a3,
0x78a7, 0x78a7, 0x78a9, 0x78aa, 0x78af, 0x78af, 0x78b5, 0x78b5,
0x78ba, 0x78bc, 0x78be, 0x78be, 0x78c1, 0x78c1, 0x78c5, 0x78c6,
0x78ca, 0x78cb, 0x78ce, 0x78ce, 0x78d0, 0x78d1, 0x78d4, 0x78d4,
0x78da, 0x78da, 0x78e7, 0x78e8, 0x78ec, 0x78ec, 0x78ef, 0x78ef,
0x78f4, 0x78f5, 0x78fb, 0x78fb, 0x78fd, 0x78fd, 0x7901, 0x7901,
0x7907, 0x7907, 0x790e, 0x790e, 0x7911, 0x7912, 0x7916, 0x7916,
0x7919, 0x7919, 0x7926, 0x7926, 0x792a, 0x792c, 0x7930, 0x7930,
0x793a, 0x793a, 0x793c, 0x793c, 0x793e, 0x793e, 0x7940, 0x7941,
0x7947, 0x7949, 0x7950, 0x7950, 0x7953, 0x7953, 0x7955, 0x7957,
0x795a, 0x7960, 0x7962, 0x7962, 0x7965, 0x7965, 0x7968, 0x7968,
0x796d, 0x796d, 0x7977, 0x7977, 0x797a, 0x797a, 0x797f, 0x7981,
0x7984, 0x7985, 0x798a, 0x798a, 0x798d, 0x798f, 0x7991, 0x7991,
0x7994, 0x7994, 0x799b, 0x799b, 0x799d, 0x799d, 0x79a6, 0x79a7,
0x79aa, 0x79aa, 0x79ae, 0x79ae, 0x79b0, 0x79b1, 0x79b3, 0x79b3,
0x79b9, 0x79ba, 0x79bd, 0x79c1, 0x79c9, 0x79cb, 0x79d1, 0x79d2,
0x79d5, 0x79d5, 0x79d8, 0x79d8, 0x79df, 0x79df, 0x79e1, 0x79e1,
0x79e3, 0x79e4, 0x79e6, 0x79e7, 0x79e9, 0x79e9, 0x79ec, 0x79ec,
0x79f0, 0x79f0, 0x79fb, 0x79fb, 0x7a00, 0x7a00, 0x7a05, 0x7a05,
0x7a08, 0x7a08, 0x7a0b, 0x7a0b, 0x7a0d, 0x7a0e, 0x7a14, 0x7a14,
0x7a17, 0x7a1a, 0x7a1c, 0x7a1c, 0x7a1f, 0x7a20, 0x7a2e, 0x7a2e,
0x7a31, 0x7a32, 0x7a36, 0x7a37, 0x7a3b, 0x7a40, 0x7a42, 0x7a43,
0x7a46, 0x7a46, 0x7a49, 0x7a49, 0x7a4d, 0x7a50, 0x7a57, 0x7a57,
0x7a61, 0x7a63, 0x7a69, 0x7a69, 0x7a6b, 0x7a6b, 0x7a70, 0x7a70,
0x7a74, 0x7a74, 0x7a76, 0x7a76, 0x7a79, 0x7a7a, 0x7a7d, 0x7a7d,
0x7a7f, 0x7a7f, 0x7a81, 0x7a81, 0x7a83, 0x7a84, 0x7a88, 0x7a88,
0x7a92, 0x7a93, 0x7a95, 0x7a98, 0x7a9f, 0x7a9f, 0x7aa9, 0x7aaa,
0x7aae, 0x7ab0, 0x7ab6, 0x7ab6, 0x7aba, 0x7aba, 0x7abf, 0x7abf,
0x7ac3, 0x7ac5, 0x7ac7, 0x7ac8, 0x7aca, 0x7acb, 0x7acd, 0x7acd,
0x7acf, 0x7acf, 0x7ad1, 0x7ad3, 0x7ad5, 0x7ad5, 0x7ad7, 0x7ad7,
0x7ad9, 0x7ada, 0x7adc, 0x7add, 0x7adf, 0x7ae3, 0x7ae5, 0x7ae7,
0x7aea, 0x7aeb, 0x7aed, 0x7aed, 0x7aef, 0x7af0, 0x7af6, 0x7af6,
0x7af8, 0x7afa, 0x7aff, 0x7aff, 0x7b02, 0x7b02, 0x7b04, 0x7b04,
0x7b06, 0x7b06, 0x7b08, 0x7b08, 0x7b0a, 0x7b0b, 0x7b0f, 0x7b0f,
0x7b11, 0x7b11, 0x7b18, 0x7b19, 0x7b1b, 0x7b1b, 0x7b1e, 0x7b1e,
0x7b20, 0x7b20, 0x7b25, 0x7b26, 0x7b28, 0x7b28, 0x7b2c, 0x7b2d,
0x7b33, 0x7b33, 0x7b35, 0x7b36, 0x7b39, 0x7b39, 0x7b45, 0x7b46,
0x7b48, 0x7b49, 0x7b4b, 0x7b4d, 0x7b4f, 0x7b52, 0x7b54, 0x7b54,
0x7b56, 0x7b56, 0x7b5d, 0x7b5d, 0x7b60, 0x7b60, 0x7b65, 0x7b65,
0x7b67, 0x7b67, 0x7b6c, 0x7b6c, 0x7b6e, 0x7b6e, 0x7b70, 0x7b71,
0x7b74, 0x7b75, 0x7b7a, 0x7b7a, 0x7b7d, 0x7b7d, 0x7b86, 0x7b87,
0x7b8b, 0x7b8b, 0x7b8d, 0x7b8d, 0x7b8f, 0x7b8f, 0x7b92, 0x7b92,
0x7b94, 0x7b95, 0x7b97, 0x7b9a, 0x7b9c, 0x7b9f, 0x7ba1, 0x7ba1,
0x7baa, 0x7baa, 0x7bad, 0x7bad, 0x7bb1, 0x7bb1, 0x7bb4, 0x7bb4,
0x7bb8, 0x7bb8, 0x7bc0, 0x7bc1, 0x7bc4, 0x7bc4, 0x7bc6, 0x7bc7,
0x7bc9, 0x7bc9, 0x7bcb, 0x7bcc, 0x7bcf, 0x7bcf, 0x7bd2, 0x7bd2,
0x7bdd, 0x7bdd, 0x7be0, 0x7be0, 0x7be4, 0x7be6, 0x7be9, 0x7be9,
0x7bed, 0x7bed, 0x7bf3, 0x7bf3, 0x7bf6, 0x7bf7, 0x7c00, 0x7c00,
0x7c07, 0x7c07, 0x7c0d, 0x7c0d, 0x7c11, 0x7c14, 0x7c17, 0x7c17,
0x7c1e, 0x7c1f, 0x7c21, 0x7c21, 0x7c23, 0x7c23, 0x7c27, 0x7c27,
0x7c2a, 0x7c2b, 0x7c37, 0x7c38, 0x7c3d, 0x7c40, 0x7c43, 0x7c43,
0x7c4c, 0x7c4d, 0x7c4f, 0x7c50, 0x7c54, 0x7c54, 0x7c56, 0x7c56,
0x7c58, 0x7c58, 0x7c5f, 0x7c60, 0x7c64, 0x7c65, 0x7c6c, 0x7c6c,
0x7c73, 0x7c73, 0x7c75, 0x7c75, 0x7c7e, 0x7c7e, 0x7c81, 0x7c83,
0x7c89, 0x7c89, 0x7c8b, 0x7c8b, 0x7c8d, 0x7c8d, 0x7c90, 0x7c90,
0x7c92, 0x7c92, 0x7c95, 0x7c95, 0x7c97, 0x7c98, 0x7c9b, 0x7c9b,
0x7c9f, 0x7c9f, 0x7ca1, 0x7ca2, 0x7ca4, 0x7ca5, 0x7ca7, 0x7ca8,
0x7cab, 0x7cab, 0x7cad, 0x7cae, 0x7cb1, 0x7cb3, 0x7cb9, 0x7cb9,
0x7cbd, 0x7cbe, 0x7cc0, 0x7cc0, 0x7cc2, 0x7cc2, 0x7cc5, 0x7cc5,
0x7cca, 0x7cca, 0x7cce, 0x7cce, 0x7cd2, 0x7cd2, 0x7cd6, 0x7cd6,
0x7cd8, 0x7cd8, 0x7cdc, 0x7cdc, 0x7cde, 0x7ce0, 0x7ce2, 0x7ce2,
0x7ce7, 0x7ce7, 0x7cef, 0x7cef, 0x7cf2, 0x7cf2, 0x7cf4, 0x7cf4,
0x7cf6, 0x7cf6, 0x7cf8, 0x7cf8, 0x7cfa, 0x7cfb, 0x7cfe, 0x7cfe,
0x7d00, 0x7d00, 0x7d02, 0x7d02, 0x7d04, 0x7d08, 0x7d0a, 0x7d0b,
0x7d0d, 0x7d0d, 0x7d10, 0x7d10, 0x7d14, 0x7d15, 0x7d17, 0x7d1c,
0x7d20, 0x7d22, 0x7d2b, 0x7d2c, 0x7d2e, 0x7d30, 0x7d32, 0x7d33,
0x7d35, 0x7d35, 0x7d39, 0x7d3a, 0x7d3f, 0x7d3f, 0x7d42, 0x7d46,
0x7d48, 0x7d48, 0x7d4b, 0x7d4c, 0x7d4e, 0x7d50, 0x7d56, 0x7d56,
0x7d5b, 0x7d5c, 0x7d5e, 0x7d5e, 0x7d61, 0x7d63, 0x7d66, 0x7d66,
0x7d68, 0x7d68, 0x7d6a, 0x7d6a, 0x7d6e, 0x7d6e, 0x7d71, 0x7d73,
0x7d75, 0x7d76, 0x7d79, 0x7d79, 0x7d7d, 0x7d7d, 0x7d7f, 0x7d7f,
0x7d89, 0x7d89, 0x7d8e, 0x7d8f, 0x7d93, 0x7d93, 0x7d99, 0x7d9c,
0x7d9f, 0x7da0, 0x7da2, 0x7da3, 0x7dab, 0x7db2, 0x7db4, 0x7db5,
0x7db7, 0x7db8, 0x7dba, 0x7dbb, 0x7dbd, 0x7dbf, 0x7dc7, 0x7dc7,
0x7dca, 0x7dcb, 0x7dcf, 0x7dcf, 0x7dd1, 0x7dd2, 0x7dd5, 0x7dd6,
0x7dd8, 0x7dd8, 0x7dda, 0x7dda, 0x7ddc, 0x7dde, 0x7de0, 0x7de1,
0x7de3, 0x7de4, 0x7de8, 0x7de9, 0x7dec, 0x7dec, 0x7def, 0x7def,
0x7df2, 0x7df2, 0x7df4, 0x7df4, 0x7dfb, 0x7dfb, 0x7e01, 0x7e01,
0x7e04, 0x7e05, 0x7e09, 0x7e0b, 0x7e12, 0x7e12, 0x7e15, 0x7e15,
0x7e1b, 0x7e1b, 0x7e1d, 0x7e1f, 0x7e21, 0x7e23, 0x7e26, 0x7e26,
0x7e2b, 0x7e2b, 0x7e2e, 0x7e2f, 0x7e31, 0x7e32, 0x7e35, 0x7e35,
0x7e37, 0x7e37, 0x7e39, 0x7e3b, 0x7e3d, 0x7e3e, 0x7e41, 0x7e41,
0x7e43, 0x7e43, 0x7e46, 0x7e47, 0x7e4a, 0x7e4b, 0x7e4d, 0x7e4d,
0x7e52, 0x7e52, 0x7e54, 0x7e56, 0x7e59, 0x7e5a, 0x7e5d, 0x7e5e,
0x7e61, 0x7e61, 0x7e66, 0x7e67, 0x7e69, 0x7e6b, 0x7e6d, 0x7e6d,
0x7e70, 0x7e70, 0x7e79, 0x7e79, 0x7e7b, 0x7e7d, 0x7e7f, 0x7e7f,
0x7e82, 0x7e83, 0x7e88, 0x7e8a, 0x7e8c, 0x7e8c, 0x7e8e, 0x7e90,
0x7e92, 0x7e94, 0x7e96, 0x7e96, 0x7e98, 0x7e98, 0x7e9b, 0x7e9c,
0x7f36, 0x7f36, 0x7f38, 0x7f38, 0x7f3a, 0x7f3a, 0x7f45, 0x7f45,
0x7f47, 0x7f47, 0x7f4c, 0x7f4e, 0x7f50, 0x7f51, 0x7f54, 0x7f55,
0x7f58, 0x7f58, 0x7f5f, 0x7f60, 0x7f67, 0x7f6b, 0x7f6e, 0x7f6e,
0x7f70, 0x7f70, 0x7f72, 0x7f72, 0x7f75, 0x7f75, 0x7f77, 0x7f79,
0x7f82, 0x7f83, 0x7f85, 0x7f88, 0x7f8a, 0x7f8a, 0x7f8c, 0x7f8c,
0x7f8e, 0x7f8e, 0x7f94, 0x7f94, 0x7f9a, 0x7f9a, 0x7f9d, 0x7f9e,
0x7fa1, 0x7fa1, 0x7fa3, 0x7fa4, 0x7fa8, 0x7fa9, 0x7fae, 0x7faf,
0x7fb2, 0x7fb2, 0x7fb6, 0x7fb6, 0x7fb8, 0x7fb9, 0x7fbd, 0x7fbd,
0x7fc1, 0x7fc1, 0x7fc5, 0x7fc6, 0x7fca, 0x7fca, 0x7fcc, 0x7fcc,
0x7fce, 0x7fce, 0x7fd2, 0x7fd2, 0x7fd4, 0x7fd5, 0x7fdf, 0x7fe1,
0x7fe6, 0x7fe6, 0x7fe9, 0x7fe9, 0x7feb, 0x7feb, 0x7ff0, 0x7ff0,
0x7ff3, 0x7ff3, 0x7ff9, 0x7ff9, 0x7ffb, 0x7ffc, 0x8000, 0x8001,
0x8003, 0x8006, 0x8009, 0x8009, 0x800b, 0x800c, 0x8010, 0x8010,
0x8012, 0x8012, 0x8015, 0x8015, 0x8017, 0x8019, 0x801c, 0x801c,
0x8021, 0x8021, 0x8028, 0x8028, 0x802d, 0x802d, 0x8033, 0x8033,
0x8036, 0x8036, 0x803b, 0x803b, 0x803d, 0x803d, 0x803f, 0x803f,
0x8043, 0x8043, 0x8046, 0x8046, 0x804a, 0x804a, 0x8052, 0x8052,
0x8056, 0x8056, 0x8058, 0x8058, 0x805a, 0x805a, 0x805e, 0x805f,
0x8061, 0x8062, 0x8068, 0x8068, 0x806f, 0x8070, 0x8072, 0x8074,
0x8076, 0x8077, 0x8079, 0x8079, 0x807d, 0x807f, 0x8084, 0x8087,
0x8089, 0x8089, 0x808b, 0x808c, 0x8093, 0x8093, 0x8096, 0x8096,
0x8098, 0x8098, 0x809a, 0x809b, 0x809d, 0x809d, 0x80a1, 0x80a2,
0x80a5, 0x80a5, 0x80a9, 0x80aa, 0x80ac, 0x80ad, 0x80af, 0x80af,
0x80b1, 0x80b2, 0x80b4, 0x80b4, 0x80ba, 0x80ba, 0x80c3, 0x80c4,
0x80c6, 0x80c6, 0x80cc, 0x80cc, 0x80ce, 0x80ce, 0x80d6, 0x80d6,
0x80d9, 0x80db, 0x80dd, 0x80de, 0x80e1, 0x80e1, 0x80e4, 0x80e5,
0x80ef, 0x80ef, 0x80f1, 0x80f1, 0x80f4, 0x80f4, 0x80f8, 0x80f8,
0x80fc, 0x80fd, 0x8102, 0x8102, 0x8105, 0x810a, 0x8118, 0x8118,
0x811a, 0x811b, 0x8123, 0x8123, 0x8129, 0x8129, 0x812b, 0x812b,
0x812f, 0x812f, 0x8131, 0x8131, 0x8133, 0x8133, 0x8139, 0x8139,
0x813e, 0x813e, 0x8146, 0x8146, 0x814b, 0x814b, 0x814e, 0x814e,
0x8150, 0x8151, 0x8153, 0x8155, 0x815f, 0x815f, 0x8165, 0x8166,
0x816b, 0x816b, 0x816e, 0x816e, 0x8170, 0x8171, 0x8174, 0x8174,
0x8178, 0x817a, 0x817f, 0x8180, 0x8182, 0x8183, 0x8188, 0x8188,
0x818a, 0x818a, 0x818f, 0x818f, 0x8193, 0x8193, 0x8195, 0x8195,
0x819a, 0x819a, 0x819c, 0x819d, 0x81a0, 0x81a0, 0x81a3, 0x81a4,
0x81a8, 0x81a9, 0x81b0, 0x81b0, 0x81b3, 0x81b3, 0x81b5, 0x81b5,
0x81b8, 0x81b8, 0x81ba, 0x81ba, 0x81bd, 0x81c0, 0x81c2, 0x81c2,
0x81c6, 0x81c6, 0x81c8, 0x81c9, 0x81cd, 0x81cd, 0x81d1, 0x81d1,
0x81d3, 0x81d3, 0x81d8, 0x81da, 0x81df, 0x81e0, 0x81e3, 0x81e3,
0x81e5, 0x81e5, 0x81e7, 0x81e8, 0x81ea, 0x81ea, 0x81ed, 0x81ed,
0x81f3, 0x81f4, 0x81fa, 0x81fc, 0x81fe, 0x81fe, 0x8201, 0x8202,
0x8205, 0x8205, 0x8207, 0x820a, 0x820c, 0x820e, 0x8210, 0x8210,
0x8212, 0x8212, 0x8216, 0x8218, 0x821b, 0x821c, 0x821e, 0x821f,
0x8221, 0x8221, 0x8229, 0x822c, 0x822e, 0x822e, 0x8233, 0x8233,
0x8235, 0x8239, 0x8240, 0x8240, 0x8245, 0x8245, 0x8247, 0x8247,
0x8258, 0x825a, 0x825d, 0x825d, 0x825f, 0x825f, 0x8262, 0x8262,
0x8264, 0x8264, 0x8266, 0x8266, 0x8268, 0x8268, 0x826a, 0x826b,
0x826e, 0x826f, 0x8271, 0x8272, 0x8276, 0x8278, 0x827e, 0x827e,
0x828b, 0x828b, 0x828d, 0x828e, 0x8292, 0x8292, 0x8299, 0x829a,
0x829d, 0x829d, 0x829f, 0x829f, 0x82a5, 0x82a6, 0x82a9, 0x82a9,
0x82ab, 0x82af, 0x82b1, 0x82b1, 0x82b3, 0x82b3, 0x82b7, 0x82b9,
0x82bb, 0x82bd, 0x82bf, 0x82bf, 0x82c5, 0x82c5, 0x82d1, 0x82d5,
0x82d7, 0x82d7, 0x82d9, 0x82d9, 0x82db, 0x82dc, 0x82de, 0x82df,
0x82e1, 0x82e1, 0x82e3, 0x82e3, 0x82e5, 0x82e7, 0x82eb, 0x82eb,
0x82f1, 0x82f1, 0x82f3, 0x82f4, 0x82f9, 0x82fb, 0x82fd, 0x82fe,
0x8301, 0x8306, 0x8309, 0x8309, 0x830e, 0x830e, 0x8316, 0x8318,
0x831c, 0x831c, 0x8323, 0x8323, 0x8328, 0x8328, 0x832b, 0x832b,
0x832f, 0x832f, 0x8331, 0x8332, 0x8334, 0x8336, 0x8338, 0x8339,
0x8340, 0x8340, 0x8345, 0x8345, 0x8347, 0x8347, 0x8349, 0x834a,
0x834f, 0x8352, 0x8358, 0x8358, 0x8362, 0x8362, 0x8373, 0x8373,
0x8375, 0x8375, 0x8377, 0x8377, 0x837b, 0x837c, 0x837f, 0x837f,
0x8385, 0x8385, 0x8387, 0x8387, 0x8389, 0x838a, 0x838e, 0x838e,
0x8393, 0x8393, 0x8396, 0x8396, 0x8398, 0x8398, 0x839a, 0x839a,
0x839e, 0x83a0, 0x83a2, 0x83a2, 0x83a8, 0x83ab, 0x83b1, 0x83b1,
0x83b5, 0x83b5, 0x83bd, 0x83bd, 0x83c1, 0x83c1, 0x83c5, 0x83c5,
0x83c7, 0x83c7, 0x83c9, 0x83ca, 0x83cc, 0x83cc, 0x83ce, 0x83ce,
0x83d3, 0x83d3, 0x83d6, 0x83d6, 0x83d8, 0x83d8, 0x83dc, 0x83dc,
0x83df, 0x83e0, 0x83e9, 0x83e9, 0x83eb, 0x83eb, 0x83ef, 0x83f2,
0x83f4, 0x83f4, 0x83f6, 0x83f7, 0x83f9, 0x83f9, 0x83fb, 0x83fb,
0x83fd, 0x83fd, 0x8403, 0x8404, 0x8407, 0x8407, 0x840a, 0x840e,
0x8413, 0x8413, 0x8420, 0x8420, 0x8422, 0x8422, 0x8429, 0x842a,
0x842c, 0x842c, 0x8431, 0x8431, 0x8435, 0x8435, 0x8438, 0x8438,
0x843c, 0x843d, 0x8446, 0x8446, 0x8448, 0x8449, 0x844e, 0x844e,
0x8457, 0x8457, 0x845b, 0x845b, 0x8461, 0x8463, 0x8466, 0x8466,
0x8469, 0x8469, 0x846b, 0x846f, 0x8471, 0x8471, 0x8475, 0x8475,
0x8477, 0x8477, 0x8479, 0x847a, 0x8482, 0x8482, 0x8484, 0x8484,
0x848b, 0x848b, 0x8490, 0x8490, 0x8494, 0x8494, 0x8499, 0x8499,
0x849c, 0x849c, 0x849f, 0x849f, 0x84a1, 0x84a1, 0x84ad, 0x84ad,
0x84b2, 0x84b2, 0x84b4, 0x84b4, 0x84b8, 0x84b9, 0x84bb, 0x84bc,
0x84bf, 0x84c2, 0x84c4, 0x84c4, 0x84c6, 0x84c6, 0x84c9, 0x84cb,
0x84cd, 0x84cd, 0x84d0, 0x84d1, 0x84d6, 0x84d6, 0x84d9, 0x84da,
0x84dc, 0x84dc, 0x84ec, 0x84ec, 0x84ee, 0x84ee, 0x84f4, 0x84f4,
0x84fc, 0x84fc, 0x84ff, 0x8500, 0x8506, 0x8506, 0x8511, 0x8511,
0x8513, 0x8515, 0x8517, 0x8518, 0x851a, 0x851a, 0x851e, 0x851f,
0x8521, 0x8521, 0x8523, 0x8523, 0x8525, 0x8526, 0x852c, 0x852d,
0x852f, 0x852f, 0x8535, 0x8535, 0x853d, 0x853d, 0x853f, 0x8541,
0x8543, 0x8543, 0x8548, 0x854b, 0x854e, 0x854e, 0x8553, 0x8553,
0x8555, 0x8555, 0x8557, 0x855a, 0x8563, 0x8563, 0x8568, 0x856b,
0x856d, 0x856d, 0x8577, 0x8577, 0x857e, 0x857e, 0x8580, 0x8580,
0x8584, 0x8584, 0x8587, 0x8588, 0x858a, 0x858a, 0x858f, 0x8591,
0x8594, 0x8594, 0x8597, 0x8597, 0x8599, 0x8599, 0x859b, 0x859c,
0x85a4, 0x85a4, 0x85a6, 0x85a6, 0x85a8, 0x85ac, 0x85ae, 0x85b0,
0x85b9, 0x85ba, 0x85c1, 0x85c1, 0x85c9, 0x85c9, 0x85cd, 0x85d0,
0x85d5, 0x85d5, 0x85dc, 0x85dd, 0x85e4, 0x85e5, 0x85e9, 0x85ea,
0x85f7, 0x85f7, 0x85f9, 0x85fb, 0x85fe, 0x85ff, 0x8602, 0x8602,
0x8606, 0x8607, 0x860a, 0x860b, 0x8613, 0x8613, 0x8616, 0x8617,
0x861a, 0x861a, 0x8622, 0x8622, 0x862d, 0x862d, 0x862f, 0x8630,
0x863f, 0x863f, 0x864d, 0x864e, 0x8650, 0x8650, 0x8654, 0x8655,
0x865a, 0x865c, 0x865e, 0x865f, 0x8667, 0x8667, 0x866b, 0x866b,
0x8671, 0x8671, 0x8679, 0x8679, 0x867b, 0x867b, 0x868a, 0x868c,
0x8693, 0x8693, 0x8695, 0x8695, 0x86a3, 0x86a4, 0x86a9, 0x86ab,
0x86af, 0x86b0, 0x86b6, 0x86b6, 0x86c4, 0x86c4, 0x86c6, 0x86c7,
0x86c9, 0x86c9, 0x86cb, 0x86cb, 0x86cd, 0x86ce, 0x86d4, 0x86d4,
0x86d9, 0x86d9, 0x86db, 0x86db, 0x86de, 0x86df, 0x86e4, 0x86e4,
0x86e9, 0x86e9, 0x86ec, 0x86ef, 0x86f8, 0x86f9, 0x86fb, 0x86fb,
0x86fe, 0x86fe, 0x8700, 0x8700, 0x8702, 0x8703, 0x8706, 0x8706,
0x8708, 0x870a, 0x870d, 0x870d, 0x8711, 0x8712, 0x8718, 0x8718,
0x871a, 0x871a, 0x871c, 0x871c, 0x8725, 0x8725, 0x8729, 0x8729,
0x8734, 0x8734, 0x8737, 0x8737, 0x873b, 0x873b, 0x873f, 0x873f,
0x8749, 0x8749, 0x874b, 0x874c, 0x874e, 0x874e, 0x8753, 0x8753,
0x8755, 0x8755, 0x8757, 0x8757, 0x8759, 0x8759, 0x875f, 0x8760,
0x8763, 0x8763, 0x8766, 0x8766, 0x8768, 0x8768, 0x876a, 0x876a,
0x876e, 0x876e, 0x8774, 0x8774, 0x8776, 0x8776, 0x8778, 0x8778,
0x877f, 0x877f, 0x8782, 0x8782, 0x878d, 0x878d, 0x879f, 0x879f,
0x87a2, 0x87a2, 0x87ab, 0x87ab, 0x87af, 0x87af, 0x87b3, 0x87b3,
0x87ba, 0x87bb, 0x87bd, 0x87bd, 0x87c0, 0x87c0, 0x87c4, 0x87c4,
0x87c6, 0x87c7, 0x87cb, 0x87cb, 0x87d0, 0x87d0, 0x87d2, 0x87d2,
0x87e0, 0x87e0, 0x87ec, 0x87ec, 0x87ef, 0x87ef, 0x87f2, 0x87f2,
0x87f6, 0x87f7, 0x87f9, 0x87f9, 0x87fb, 0x87fb, 0x87fe, 0x87fe,
0x8805, 0x8805, 0x8807, 0x8807, 0x880d, 0x880f, 0x8811, 0x8811,
0x8815, 0x8816, 0x881f, 0x881f, 0x8821, 0x8823, 0x8827, 0x8827,
0x8831, 0x8831, 0x8836, 0x8836, 0x8839, 0x8839, 0x883b, 0x883b,
0x8840, 0x8840, 0x8842, 0x8842, 0x8844, 0x8844, 0x8846, 0x8846,
0x884c, 0x884d, 0x8852, 0x8853, 0x8857, 0x8857, 0x8859, 0x8859,
0x885b, 0x885b, 0x885d, 0x885e, 0x8861, 0x8863, 0x8868, 0x8868,
0x886b, 0x886b, 0x8870, 0x8870, 0x8872, 0x8872, 0x8875, 0x8875,
0x8877, 0x8877, 0x887d, 0x887f, 0x8881, 0x8882, 0x8888, 0x8888,
0x888b, 0x888b, 0x888d, 0x888d, 0x8892, 0x8892, 0x8896, 0x8897,
0x8899, 0x8899, 0x889e, 0x889e, 0x88a2, 0x88a2, 0x88a4, 0x88a4,
0x88ab, 0x88ab, 0x88ae, 0x88ae, 0x88b0, 0x88b1, 0x88b4, 0x88b5,
0x88b7, 0x88b7, 0x88bf, 0x88bf, 0x88c1, 0x88c5, 0x88cf, 0x88cf,
0x88d4, 0x88d5, 0x88d8, 0x88d9, 0x88dc, 0x88dd, 0x88df, 0x88df,
0x88e1, 0x88e1, 0x88e8, 0x88e8, 0x88f2, 0x88f5, 0x88f8, 0x88f9,
0x88fc, 0x88fe, 0x8902, 0x8902, 0x8904, 0x8904, 0x8907, 0x8907,
0x890a, 0x890a, 0x890c, 0x890c, 0x8910, 0x8910, 0x8912, 0x8913,
0x8918, 0x8919, 0x891c, 0x891e, 0x8925, 0x8925, 0x892a, 0x892b,
0x8936, 0x8936, 0x8938, 0x8938, 0x893b, 0x893b, 0x8941, 0x8941,
0x8943, 0x8944, 0x894c, 0x894d, 0x8956, 0x8956, 0x895e, 0x8960,
0x8964, 0x8964, 0x8966, 0x8966, 0x896a, 0x896a, 0x896d, 0x896d,
0x896f, 0x896f, 0x8972, 0x8972, 0x8974, 0x8974, 0x8977, 0x8977,
0x897e, 0x897f, 0x8981, 0x8981, 0x8983, 0x8983, 0x8986, 0x8988,
0x898a, 0x898b, 0x898f, 0x898f, 0x8993, 0x8993, 0x8996, 0x8998,
0x899a, 0x899a, 0x89a1, 0x89a1, 0x89a6, 0x89a7, 0x89a9, 0x89aa,
0x89ac, 0x89ac, 0x89af, 0x89af, 0x89b2, 0x89b3, 0x89ba, 0x89ba,
0x89bd, 0x89bd, 0x89bf, 0x89c0, 0x89d2, 0x89d2, 0x89da, 0x89da,
0x89dc, 0x89dd, 0x89e3, 0x89e3, 0x89e6, 0x89e7, 0x89f4, 0x89f4,
0x89f8, 0x89f8, 0x8a00, 0x8a00, 0x8a02, 0x8a03, 0x8a08, 0x8a08,
0x8a0a, 0x8a0a, 0x8a0c, 0x8a0c, 0x8a0e, 0x8a0e, 0x8a10, 0x8a10,
0x8a12, 0x8a13, 0x8a16, 0x8a18, 0x8a1b, 0x8a1b, 0x8a1d, 0x8a1d,
0x8a1f, 0x8a1f, 0x8a23, 0x8a23, 0x8a25, 0x8a25, 0x8a2a, 0x8a2a,
0x8a2d, 0x8a2d, 0x8a31, 0x8a31, 0x8a33, 0x8a34, 0x8a36, 0x8a37,
0x8a3a, 0x8a3c, 0x8a41, 0x8a41, 0x8a46, 0x8a46, 0x8a48, 0x8a48,
0x8a50, 0x8a52, 0x8a54, 0x8a55, 0x8a5b, 0x8a5b, 0x8a5e, 0x8a5e,
0x8a60, 0x8a60, 0x8a62, 0x8a63, 0x8a66, 0x8a66, 0x8a69, 0x8a69,
0x8a6b, 0x8a6e, 0x8a70, 0x8a73, 0x8a75, 0x8a75, 0x8a79, 0x8a79,
0x8a7c, 0x8a7c, 0x8a82, 0x8a82, 0x8a84, 0x8a85, 0x8a87, 0x8a87,
0x8a89, 0x8a89, 0x8a8c, 0x8a8d, 0x8a91, 0x8a91, 0x8a93, 0x8a93,
0x8a95, 0x8a95, 0x8a98, 0x8a98, 0x8a9a, 0x8a9a, 0x8a9e, 0x8a9e,
0x8aa0, 0x8aa1, 0x8aa3, 0x8aa8, 0x8aaa, 0x8aaa, 0x8aac, 0x8aad,
0x8ab0, 0x8ab0, 0x8ab2, 0x8ab2, 0x8ab9, 0x8ab9, 0x8abc, 0x8abc,
0x8abe, 0x8abf, 0x8ac2, 0x8ac2, 0x8ac4, 0x8ac4, 0x8ac7, 0x8ac7,
0x8acb, 0x8acd, 0x8acf, 0x8acf, 0x8ad2, 0x8ad2, 0x8ad6, 0x8ad6,
0x8ada, 0x8adc, 0x8ade, 0x8ae2, 0x8ae4, 0x8ae4, 0x8ae6, 0x8ae7,
0x8aea, 0x8aeb, 0x8aed, 0x8aee, 0x8af1, 0x8af1, 0x8af3, 0x8af3,
0x8af6, 0x8af8, 0x8afa, 0x8afa, 0x8afe, 0x8afe, 0x8b00, 0x8b02,
0x8b04, 0x8b04, 0x8b07, 0x8b07, 0x8b0c, 0x8b0c, 0x8b0e, 0x8b0e,
0x8b10, 0x8b10, 0x8b14, 0x8b14, 0x8b16, 0x8b17, 0x8b19, 0x8b1b,
0x8b1d, 0x8b1d, 0x8b20, 0x8b21, 0x8b26, 0x8b26, 0x8b28, 0x8b28,
0x8b2b, 0x8b2c, 0x8b33, 0x8b33, 0x8b39, 0x8b39, 0x8b3e, 0x8b3e,
0x8b41, 0x8b41, 0x8b49, 0x8b49, 0x8b4c, 0x8b4c, 0x8b4e, 0x8b4f,
0x8b53, 0x8b53, 0x8b56, 0x8b56, 0x8b58, 0x8b58, 0x8b5a, 0x8b5c,
0x8b5f, 0x8b5f, 0x8b66, 0x8b66, 0x8b6b, 0x8b6c, 0x8b6f, 0x8b72,
0x8b74, 0x8b74, 0x8b77, 0x8b77, 0x8b7d, 0x8b7d, 0x8b7f, 0x8b80,
0x8b83, 0x8b83, 0x8b8a, 0x8b8a, 0x8b8c, 0x8b8c, 0x8b8e, 0x8b8e,
0x8b90, 0x8b90, 0x8b92, 0x8b93, 0x8b96, 0x8b96, 0x8b99, 0x8b9a,
0x8c37, 0x8c37, 0x8c3a, 0x8c3a, 0x8c3f, 0x8c3f, 0x8c41, 0x8c41,
0x8c46, 0x8c46, 0x8c48, 0x8c48, 0x8c4a, 0x8c4a, 0x8c4c, 0x8c4c,
0x8c4e, 0x8c4e, 0x8c50, 0x8c50, 0x8c55, 0x8c55, 0x8c5a, 0x8c5a,
0x8c61, 0x8c62, 0x8c6a, 0x8c6c, 0x8c78, 0x8c7a, 0x8c7c, 0x8c7c,
0x8c82, 0x8c82, 0x8c85, 0x8c85, 0x8c89, 0x8c8a, 0x8c8c, 0x8c8e,
0x8c94, 0x8c94, 0x8c98, 0x8c98, 0x8c9d, 0x8c9e, 0x8ca0, 0x8ca2,
0x8ca7, 0x8cb0, 0x8cb2, 0x8cb4, 0x8cb6, 0x8cb8, 0x8cbb, 0x8cbd,
0x8cbf, 0x8cc4, 0x8cc7, 0x8cc8, 0x8cca, 0x8cca, 0x8ccd, 0x8cce,
0x8cd1, 0x8cd1, 0x8cd3, 0x8cd3, 0x8cda, 0x8cdc, 0x8cde, 0x8cde,
0x8ce0, 0x8ce0, 0x8ce2, 0x8ce4, 0x8ce6, 0x8ce6, 0x8cea, 0x8cea,
0x8ced, 0x8ced, 0x8cf0, 0x8cf0, 0x8cf4, 0x8cf4, 0x8cfa, 0x8cfd,
0x8d04, 0x8d05, 0x8d07, 0x8d08, 0x8d0a, 0x8d0b, 0x8d0d, 0x8d0d,
0x8d0f, 0x8d10, 0x8d12, 0x8d14, 0x8d16, 0x8d16, 0x8d64, 0x8d64,
0x8d66, 0x8d67, 0x8d6b, 0x8d6b, 0x8d6d, 0x8d6d, 0x8d70, 0x8d71,
0x8d73, 0x8d74, 0x8d76, 0x8d77, 0x8d81, 0x8d81, 0x8d85, 0x8d85,
0x8d8a, 0x8d8a, 0x8d99, 0x8d99, 0x8da3, 0x8da3, 0x8da8, 0x8da8,
0x8db3, 0x8db3, 0x8dba, 0x8dba, 0x8dbe, 0x8dbe, 0x8dc2, 0x8dc2,
0x8dc6, 0x8dc6, 0x8dcb, 0x8dcc, 0x8dcf, 0x8dcf, 0x8dd6, 0x8dd6,
0x8dda, 0x8ddb, 0x8ddd, 0x8ddd, 0x8ddf, 0x8ddf, 0x8de1, 0x8de1,
0x8de3, 0x8de3, 0x8de8, 0x8de8, 0x8dea, 0x8deb, 0x8def, 0x8def,
0x8df3, 0x8df3, 0x8df5, 0x8df5, 0x8dfc, 0x8dfc, 0x8dff, 0x8dff,
0x8e08, 0x8e0a, 0x8e0f, 0x8e10, 0x8e1d, 0x8e1f, 0x8e2a, 0x8e2a,
0x8e30, 0x8e30, 0x8e34, 0x8e35, 0x8e42, 0x8e42, 0x8e44, 0x8e44,
0x8e47, 0x8e4a, 0x8e4c, 0x8e4c, 0x8e50, 0x8e50, 0x8e55, 0x8e55,
0x8e59, 0x8e59, 0x8e5f, 0x8e60, 0x8e63, 0x8e64, 0x8e72, 0x8e72,
0x8e74, 0x8e74, 0x8e76, 0x8e76, 0x8e7c, 0x8e7c, 0x8e81, 0x8e81,
0x8e84, 0x8e85, 0x8e87, 0x8e87, 0x8e8a, 0x8e8b, 0x8e8d, 0x8e8d,
0x8e91, 0x8e91, 0x8e93, 0x8e94, 0x8e99, 0x8e99, 0x8ea1, 0x8ea1,
0x8eaa, 0x8eac, 0x8eaf, 0x8eb1, 0x8ebe, 0x8ebe, 0x8ec0, 0x8ec0,
0x8ec5, 0x8ec6, 0x8ec8, 0x8ec8, 0x8eca, 0x8ecd, 0x8ecf, 0x8ecf,
0x8ed2, 0x8ed2, 0x8edb, 0x8edb, 0x8edf, 0x8edf, 0x8ee2, 0x8ee3,
0x8eeb, 0x8eeb, 0x8ef8, 0x8ef8, 0x8efb, 0x8efe, 0x8f03, 0x8f03,
0x8f05, 0x8f05, 0x8f09, 0x8f0a, 0x8f0c, 0x8f0c, 0x8f12, 0x8f15,
0x8f19, 0x8f19, 0x8f1b, 0x8f1f, 0x8f26, 0x8f27, 0x8f29, 0x8f2a,
0x8f2f, 0x8f2f, 0x8f33, 0x8f33, 0x8f38, 0x8f39, 0x8f3b, 0x8f3b,
0x8f3e, 0x8f3f, 0x8f42, 0x8f42, 0x8f44, 0x8f46, 0x8f49, 0x8f49,
0x8f4c, 0x8f4e, 0x8f57, 0x8f57, 0x8f5c, 0x8f5d, 0x8f5f, 0x8f5f,
0x8f61, 0x8f64, 0x8f9b, 0x8f9c, 0x8f9e, 0x8f9f, 0x8fa3, 0x8fa3,
0x8fa6, 0x8fa8, 0x8fad, 0x8fb2, 0x8fb7, 0x8fb7, 0x8fba, 0x8fbc,
0x8fbf, 0x8fbf, 0x8fc2, 0x8fc2, 0x8fc4, 0x8fc5, 0x8fce, 0x8fce,
0x8fd1, 0x8fd1, 0x8fd4, 0x8fd4, 0x8fda, 0x8fda, 0x8fe2, 0x8fe2,
0x8fe5, 0x8fe6, 0x8fe9, 0x8feb, 0x8fed, 0x8fed, 0x8fef, 0x8ff0,
0x8ff2, 0x8ff2, 0x8ff4, 0x8ff4, 0x8ff7, 0x8ffa, 0x8ffd, 0x8ffd,
0x9000, 0x9003, 0x9005, 0x9006, 0x9008, 0x9008, 0x900b, 0x900b,
0x900d, 0x9011, 0x9013, 0x9017, 0x9019, 0x901a, 0x901d, 0x9023,
0x9027, 0x9027, 0x902e, 0x902e, 0x9031, 0x9032, 0x9035, 0x9036,
0x9038, 0x9039, 0x903c, 0x903c, 0x903e, 0x903e, 0x9041, 0x9042,
0x9045, 0x9045, 0x9047, 0x9047, 0x9049, 0x904b, 0x904d, 0x9056,
0x9058, 0x9059, 0x905c, 0x905e, 0x9060, 0x9061, 0x9063, 0x9063,
0x9065, 0x9065, 0x9067, 0x9069, 0x906d, 0x906f, 0x9072, 0x9072,
0x9075, 0x9078, 0x907a, 0x907a, 0x907c, 0x907d, 0x907f, 0x9084,
0x9087, 0x908a, 0x908f, 0x908f, 0x9091, 0x9091, 0x9095, 0x9095,
0x9099, 0x9099, 0x90a2, 0x90a3, 0x90a6, 0x90a6, 0x90a8, 0x90a8,
0x90aa, 0x90aa, 0x90af, 0x90b1, 0x90b5, 0x90b5, 0x90b8, 0x90b8,
0x90c1, 0x90c1, 0x90ca, 0x90ca, 0x90ce, 0x90ce, 0x90db, 0x90db,
0x90de, 0x90de, 0x90e1, 0x90e2, 0x90e4, 0x90e4, 0x90e8, 0x90e8,
0x90ed, 0x90ed, 0x90f5, 0x90f5, 0x90f7, 0x90f7, 0x90fd, 0x90fd,
0x9102, 0x9102, 0x9112, 0x9112, 0x9115, 0x9115, 0x9119, 0x9119,
0x9127, 0x9127, 0x912d, 0x912d, 0x9130, 0x9130, 0x9132, 0x9132,
0x9149, 0x914e, 0x9152, 0x9152, 0x9154, 0x9154, 0x9156, 0x9156,
0x9158, 0x9158, 0x9162, 0x9163, 0x9165, 0x9165, 0x9169, 0x916a,
0x916c, 0x916c, 0x9172, 0x9173, 0x9175, 0x9175, 0x9177, 0x9178,
0x9182, 0x9182, 0x9187, 0x9187, 0x9189, 0x9189, 0x918b, 0x918b,
0x918d, 0x918d, 0x9190, 0x9190, 0x9192, 0x9192, 0x9197, 0x9197,
0x919c, 0x919c, 0x91a2, 0x91a2, 0x91a4, 0x91a4, 0x91aa, 0x91ac,
0x91ae, 0x91af, 0x91b1, 0x91b1, 0x91b4, 0x91b5, 0x91b8, 0x91b8,
0x91ba, 0x91ba, 0x91c0, 0x91c1, 0x91c6, 0x91c9, 0x91cb, 0x91d1,
0x91d6, 0x91d8, 0x91da, 0x91df, 0x91e1, 0x91e1, 0x91e3, 0x91e7,
0x91ea, 0x91ea, 0x91ed, 0x91ee, 0x91f5, 0x91f6, 0x91fc, 0x91fc,
0x91ff, 0x91ff, 0x9206, 0x9206, 0x920a, 0x920a, 0x920d, 0x920e,
0x9210, 0x9212, 0x9214, 0x9215, 0x9217, 0x9217, 0x921e, 0x921e,
0x9229, 0x9229, 0x922c, 0x922c, 0x9234, 0x9234, 0x9237, 0x9237,
0x9239, 0x923a, 0x923c, 0x923c, 0x923f, 0x9240, 0x9244, 0x9245,
0x9248, 0x9249, 0x924b, 0x924b, 0x924e, 0x924e, 0x9250, 0x9251,
0x9257, 0x9257, 0x9259, 0x925b, 0x925e, 0x925e, 0x9262, 0x9262,
0x9264, 0x9267, 0x9271, 0x9271, 0x9277, 0x9278, 0x927e, 0x927e,
0x9280, 0x9280, 0x9283, 0x9283, 0x9285, 0x9285, 0x9288, 0x9288,
0x9291, 0x9291, 0x9293, 0x9293, 0x9295, 0x9296, 0x9298, 0x9298,
0x929a, 0x929c, 0x92a7, 0x92a7, 0x92ad, 0x92ad, 0x92b3, 0x92b3,
0x92b6, 0x92b7, 0x92b9, 0x92b9, 0x92cc, 0x92cc, 0x92cf, 0x92d0,
0x92d2, 0x92d3, 0x92d5, 0x92d5, 0x92d7, 0x92d7, 0x92d9, 0x92d9,
0x92e0, 0x92e0, 0x92e4, 0x92e4, 0x92e7, 0x92e7, 0x92e9, 0x92ea,
0x92ed, 0x92ed, 0x92f2, 0x92f3, 0x92f8, 0x92fc, 0x92ff, 0x92ff,
0x9302, 0x9302, 0x9304, 0x9304, 0x9306, 0x9306, 0x930f, 0x9310,
0x9318, 0x931a, 0x931d, 0x9326, 0x9328, 0x9328, 0x932b, 0x932c,
0x932e, 0x932f, 0x9332, 0x9332, 0x9335, 0x9335, 0x933a, 0x933b,
0x9344, 0x9344, 0x9348, 0x9348, 0x934a, 0x934b, 0x934d, 0x934d,
0x9354, 0x9354, 0x9356, 0x9357, 0x935b, 0x935c, 0x9360, 0x9360,
0x936c, 0x936c, 0x936e, 0x936e, 0x9370, 0x9370, 0x9375, 0x9375,
0x937c, 0x937c, 0x937e, 0x937e, 0x938c, 0x938c, 0x9394, 0x9394,
0x9396, 0x9397, 0x939a, 0x939a, 0x93a3, 0x93a4, 0x93a7, 0x93a7,
0x93ac, 0x93ae, 0x93b0, 0x93b0, 0x93b9, 0x93b9, 0x93c3, 0x93c3,
0x93c6, 0x93c6, 0x93c8, 0x93c8, 0x93d0, 0x93d1, 0x93d6, 0x93d8,
0x93dd, 0x93de, 0x93e1, 0x93e1, 0x93e4, 0x93e5, 0x93e8, 0x93e8,
0x93f6, 0x93f6, 0x93f8, 0x93f8, 0x9403, 0x9404, 0x9407, 0x9407,
0x9410, 0x9410, 0x9413, 0x9414, 0x9418, 0x941a, 0x9421, 0x9421,
0x9425, 0x9425, 0x942b, 0x942b, 0x9431, 0x9431, 0x9435, 0x9436,
0x9438, 0x9438, 0x943a, 0x943a, 0x9441, 0x9441, 0x9444, 0x9445,
0x9448, 0x9448, 0x9451, 0x9453, 0x945a, 0x945b, 0x945e, 0x945e,
0x9460, 0x9460, 0x9462, 0x9462, 0x946a, 0x946a, 0x9470, 0x9470,
0x9475, 0x9475, 0x9477, 0x9477, 0x947c, 0x947f, 0x9481, 0x9481,
0x9577, 0x9577, 0x9580, 0x9580, 0x9582, 0x9583, 0x9587, 0x9587,
0x9589, 0x958b, 0x958f, 0x958f, 0x9591, 0x9594, 0x9596, 0x9596,
0x9598, 0x9599, 0x95a0, 0x95a0, 0x95a2, 0x95a5, 0x95a7, 0x95a8,
0x95ad, 0x95ad, 0x95b1, 0x95b2, 0x95b9, 0x95b9, 0x95bb, 0x95bc,
0x95be, 0x95be, 0x95c3, 0x95c3, 0x95c7, 0x95c7, 0x95ca, 0x95ca,
0x95cc, 0x95cd, 0x95d4, 0x95d6, 0x95d8, 0x95d8, 0x95dc, 0x95dc,
0x95e1, 0x95e2, 0x95e5, 0x95e5, 0x961c, 0x961c, 0x9621, 0x9621,
0x9628, 0x9628, 0x962a, 0x962a, 0x962e, 0x962f, 0x9632, 0x9632,
0x963b, 0x963b, 0x963f, 0x9640, 0x9642, 0x9642, 0x9644, 0x9644,
0x964b, 0x964d, 0x964f, 0x9650, 0x965b, 0x965f, 0x9662, 0x9666,
0x966a, 0x966a, 0x966c, 0x966c, 0x9670, 0x9670, 0x9672, 0x9673,
0x9675, 0x9678, 0x967a, 0x967a, 0x967d, 0x967d, 0x9685, 0x9686,
0x9688, 0x9688, 0x968a, 0x968b, 0x968d, 0x968f, 0x9694, 0x9695,
0x9697, 0x9699, 0x969b, 0x969d, 0x96a0, 0x96a0, 0x96a3, 0x96a3,
0x96a7, 0x96a8, 0x96aa, 0x96aa, 0x96af, 0x96b2, 0x96b4, 0x96b4,
0x96b6, 0x96b9, 0x96bb, 0x96bc, 0x96c0, 0x96c1, 0x96c4, 0x96c7,
0x96c9, 0x96c9, 0x96cb, 0x96ce, 0x96d1, 0x96d1, 0x96d5, 0x96d6,
0x96d9, 0x96d9, 0x96db, 0x96dc, 0x96e2, 0x96e3, 0x96e8, 0x96eb,
0x96ef, 0x96f0, 0x96f2, 0x96f2, 0x96f6, 0x96f7, 0x96f9, 0x96f9,
0x96fb, 0x96fb, 0x9700, 0x9700, 0x9704, 0x9704, 0x9706, 0x9708,
0x970a, 0x970a, 0x970d, 0x970f, 0x9711, 0x9711, 0x9713, 0x9713,
0x9716, 0x9716, 0x9719, 0x9719, 0x971c, 0x971c, 0x971e, 0x971e,
0x9724, 0x9724, 0x9727, 0x9727, 0x972a, 0x972a, 0x9730, 0x9730,
0x9732, 0x9733, 0x9738, 0x9739, 0x973b, 0x973b, 0x973d, 0x973e,
0x9742, 0x9744, 0x9746, 0x9746, 0x9748, 0x9749, 0x974d, 0x974d,
0x974f, 0x974f, 0x9751, 0x9752, 0x9755, 0x9756, 0x9759, 0x9759,
0x975c, 0x975c, 0x975e, 0x975e, 0x9760, 0x9762, 0x9764, 0x9764,
0x9766, 0x9766, 0x9768, 0x9769, 0x976b, 0x976b, 0x976d, 0x976d,
0x9771, 0x9771, 0x9774, 0x9774, 0x9777, 0x9777, 0x9779, 0x977a,
0x977c, 0x977c, 0x9781, 0x9781, 0x9784, 0x9786, 0x978b, 0x978b,
0x978d, 0x978d, 0x978f, 0x9790, 0x9798, 0x9798, 0x979c, 0x979c,
0x97a0, 0x97a0, 0x97a3, 0x97a3, 0x97a6, 0x97a6, 0x97a8, 0x97a8,
0x97ab, 0x97ab, 0x97ad, 0x97ad, 0x97b3, 0x97b4, 0x97c3, 0x97c3,
0x97c6, 0x97c6, 0x97c8, 0x97c8, 0x97cb, 0x97cb, 0x97d3, 0x97d3,
0x97dc, 0x97dc, 0x97ed, 0x97ee, 0x97f2, 0x97f3, 0x97f5, 0x97f6,
0x97fb, 0x97fb, 0x97ff, 0x9803, 0x9805, 0x9806, 0x9808, 0x9808,
0x980a, 0x980a, 0x980c, 0x980c, 0x980f, 0x9813, 0x9817, 0x9818,
0x981a, 0x981a, 0x9821, 0x9821, 0x9824, 0x9824, 0x982c, 0x982d,
0x9830, 0x9830, 0x9834, 0x9834, 0x9837, 0x9839, 0x983b, 0x983d,
0x9846, 0x9846, 0x984b, 0x984f, 0x9854, 0x9855, 0x9857, 0x9858,
0x985a, 0x985b, 0x985e, 0x985e, 0x9865, 0x9865, 0x9867, 0x9867,
0x986b, 0x986b, 0x986f, 0x9871, 0x9873, 0x9874, 0x98a8, 0x98a8,
0x98aa, 0x98aa, 0x98af, 0x98af, 0x98b1, 0x98b1, 0x98b6, 0x98b6,
0x98c3, 0x98c4, 0x98c6, 0x98c7, 0x98db, 0x98dc, 0x98df, 0x98df,
0x98e1, 0x98e2, 0x98e9, 0x98e9, 0x98eb, 0x98eb, 0x98ed, 0x98ef,
0x98f2, 0x98f2, 0x98f4, 0x98f4, 0x98fc, 0x98fe, 0x9903, 0x9903,
0x9905, 0x9905, 0x9909, 0x990a, 0x990c, 0x990c, 0x9910, 0x9910,
0x9912, 0x9914, 0x9918, 0x9918, 0x991d, 0x991e, 0x9920, 0x9921,
0x9924, 0x9924, 0x9927, 0x9928, 0x992c, 0x992c, 0x992e, 0x992e,
0x993d, 0x993e, 0x9942, 0x9942, 0x9945, 0x9945, 0x9949, 0x9949,
0x994b, 0x994d, 0x9950, 0x9952, 0x9954, 0x9955, 0x9957, 0x9957,
0x9996, 0x9999, 0x999d, 0x999e, 0x99a5, 0x99a5, 0x99a8, 0x99a8,
0x99ac, 0x99ae, 0x99b1, 0x99b1, 0x99b3, 0x99b4, 0x99b9, 0x99b9,
0x99bc, 0x99bc, 0x99c1, 0x99c1, 0x99c4, 0x99c6, 0x99c8, 0x99c8,
0x99d0, 0x99d2, 0x99d5, 0x99d5, 0x99d8, 0x99d9, 0x99db, 0x99db,
0x99dd, 0x99dd, 0x99df, 0x99df, 0x99e2, 0x99e2, 0x99ed, 0x99ee,
0x99f1, 0x99f2, 0x99f8, 0x99f8, 0x99fb, 0x99fb, 0x99ff, 0x99ff,
0x9a01, 0x9a01, 0x9a05, 0x9a05, 0x9a08, 0x9a08, 0x9a0e, 0x9a0f,
0x9a12, 0x9a13, 0x9a19, 0x9a19, 0x9a28, 0x9a28, 0x9a2b, 0x9a2b,
0x9a30, 0x9a30, 0x9a36, 0x9a37, 0x9a3e, 0x9a3e, 0x9a40, 0x9a40,
0x9a42, 0x9a43, 0x9a45, 0x9a45, 0x9a4d, 0x9a4e, 0x9a55, 0x9a55,
0x9a57, 0x9a57, 0x9a5a, 0x9a5b, 0x9a5f, 0x9a5f, 0x9a62, 0x9a62,
0x9a64, 0x9a65, 0x9a69, 0x9a6b, 0x9aa8, 0x9aa8, 0x9aad, 0x9aad,
0x9ab0, 0x9ab0, 0x9ab8, 0x9ab8, 0x9abc, 0x9abc, 0x9ac0, 0x9ac0,
0x9ac4, 0x9ac4, 0x9acf, 0x9acf, 0x9ad1, 0x9ad1, 0x9ad3, 0x9ad4,
0x9ad8, 0x9ad9, 0x9adc, 0x9adc, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3,
0x9ae5, 0x9ae6, 0x9aea, 0x9aeb, 0x9aed, 0x9aef, 0x9af1, 0x9af1,
0x9af4, 0x9af4, 0x9af7, 0x9af7, 0x9afb, 0x9afb, 0x9b06, 0x9b06,
0x9b18, 0x9b18, 0x9b1a, 0x9b1a, 0x9b1f, 0x9b1f, 0x9b22, 0x9b23,
0x9b25, 0x9b25, 0x9b27, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b31, 0x9b32,
0x9b3b, 0x9b3c, 0x9b41, 0x9b45, 0x9b4d, 0x9b4f, 0x9b51, 0x9b51,
0x9b54, 0x9b54, 0x9b58, 0x9b58, 0x9b5a, 0x9b5a, 0x9b6f, 0x9b6f,
0x9b72, 0x9b72, 0x9b74, 0x9b75, 0x9b83, 0x9b83, 0x9b8e, 0x9b8f,
0x9b91, 0x9b93, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9ba8,
0x9baa, 0x9bab, 0x9bad, 0x9bae, 0x9bb1, 0x9bb1, 0x9bb4, 0x9bb4,
0x9bb9, 0x9bb9, 0x9bbb, 0x9bbb, 0x9bc0, 0x9bc0, 0x9bc6, 0x9bc6,
0x9bc9, 0x9bca, 0x9bcf, 0x9bcf, 0x9bd1, 0x9bd2, 0x9bd4, 0x9bd4,
0x9bd6, 0x9bd6, 0x9bdb, 0x9bdb, 0x9be1, 0x9be4, 0x9be8, 0x9be8,
0x9bf0, 0x9bf2, 0x9bf5, 0x9bf5, 0x9c00, 0x9c00, 0x9c04, 0x9c04,
0x9c06, 0x9c06, 0x9c08, 0x9c0a, 0x9c0c, 0x9c0d, 0x9c10, 0x9c10,
0x9c12, 0x9c15, 0x9c1b, 0x9c1b, 0x9c21, 0x9c21, 0x9c24, 0x9c25,
0x9c2d, 0x9c30, 0x9c32, 0x9c32, 0x9c39, 0x9c3b, 0x9c3e, 0x9c3e,
0x9c46, 0x9c49, 0x9c52, 0x9c52, 0x9c57, 0x9c57, 0x9c5a, 0x9c5a,
0x9c60, 0x9c60, 0x9c67, 0x9c67, 0x9c76, 0x9c76, 0x9c78, 0x9c78,
0x9ce5, 0x9ce5, 0x9ce7, 0x9ce7, 0x9ce9, 0x9ce9, 0x9ceb, 0x9cec,
0x9cf0, 0x9cf0, 0x9cf3, 0x9cf4, 0x9cf6, 0x9cf6, 0x9d03, 0x9d03,
0x9d06, 0x9d09, 0x9d0e, 0x9d0e, 0x9d12, 0x9d12, 0x9d15, 0x9d15,
0x9d1b, 0x9d1b, 0x9d1f, 0x9d1f, 0x9d23, 0x9d23, 0x9d26, 0x9d26,
0x9d28, 0x9d28, 0x9d2a, 0x9d2c, 0x9d3b, 0x9d3b, 0x9d3e, 0x9d3f,
0x9d41, 0x9d41, 0x9d44, 0x9d44, 0x9d46, 0x9d46, 0x9d48, 0x9d48,
0x9d50, 0x9d51, 0x9d59, 0x9d59, 0x9d5c, 0x9d5e, 0x9d60, 0x9d61,
0x9d64, 0x9d64, 0x9d6b, 0x9d6c, 0x9d6f, 0x9d70, 0x9d72, 0x9d72,
0x9d7a, 0x9d7a, 0x9d87, 0x9d87, 0x9d89, 0x9d89, 0x9d8f, 0x9d8f,
0x9d9a, 0x9d9a, 0x9da4, 0x9da4, 0x9da9, 0x9da9, 0x9dab, 0x9dab,
0x9daf, 0x9daf, 0x9db2, 0x9db2, 0x9db4, 0x9db4, 0x9db8, 0x9db8,
0x9dba, 0x9dbb, 0x9dc1, 0x9dc2, 0x9dc4, 0x9dc4, 0x9dc6, 0x9dc6,
0x9dcf, 0x9dcf, 0x9dd3, 0x9dd3, 0x9dd7, 0x9dd7, 0x9dd9, 0x9dd9,
0x9de6, 0x9de6, 0x9ded, 0x9ded, 0x9def, 0x9def, 0x9df2, 0x9df2,
0x9df8, 0x9dfa, 0x9dfd, 0x9dfd, 0x9e19, 0x9e1b, 0x9e1e, 0x9e1e,
0x9e75, 0x9e75, 0x9e78, 0x9e79, 0x9e7d, 0x9e7d, 0x9e7f, 0x9e7f,
0x9e81, 0x9e81, 0x9e88, 0x9e88, 0x9e8b, 0x9e8c, 0x9e91, 0x9e93,
0x9e95, 0x9e95, 0x9e97, 0x9e97, 0x9e9d, 0x9e9d, 0x9e9f, 0x9e9f,
0x9ea5, 0x9ea6, 0x9ea9, 0x9eaa, 0x9ead, 0x9ead, 0x9eb4, 0x9eb5,
0x9eb8, 0x9ebc, 0x9ebe, 0x9ebf, 0x9ec3, 0x9ec4, 0x9ecc, 0x9ed2,
0x9ed4, 0x9ed4, 0x9ed8, 0x9ed9, 0x9edb, 0x9ede, 0x9ee0, 0x9ee0,
0x9ee5, 0x9ee5, 0x9ee8, 0x9ee8, 0x9eef, 0x9eef, 0x9ef4, 0x9ef4,
0x9ef6, 0x9ef7, 0x9ef9, 0x9ef9, 0x9efb, 0x9efd, 0x9f07, 0x9f08,
0x9f0e, 0x9f0e, 0x9f13, 0x9f13, 0x9f15, 0x9f15, 0x9f20, 0x9f21,
0x9f2c, 0x9f2c, 0x9f3b, 0x9f3b, 0x9f3e, 0x9f3e, 0x9f4a, 0x9f4b,
0x9f4e, 0x9f4f, 0x9f52, 0x9f52, 0x9f54, 0x9f54, 0x9f5f, 0x9f63,
0x9f66, 0x9f67, 0x9f6a, 0x9f6a, 0x9f6c, 0x9f6c, 0x9f72, 0x9f72,
0x9f76, 0x9f77, 0x9f8d, 0x9f8d, 0x9f90, 0x9f90, 0x9f95, 0x9f95,
0x9f9c, 0x9f9d, 0x9fa0, 0x9fa0, 0xac00, 0xd7a3, 0xe000, 0xe06b,
0xe070, 0xe07e, 0xe080, 0xe099, 0xe0a0, 0xe0ba, 0xe0c0, 0xe0d6,
0xe0e0, 0xe0f5, 0xe100, 0xe105, 0xe110, 0xe116, 0xe121, 0xe12c,
0xe130, 0xe13c, 0xe140, 0xe14d, 0xe150, 0xe153, 0xf900, 0xfa0b,
0xfa0e, 0xfa2d, 0xfb01, 0xfb02, 0xfe30, 0xfe33, 0xfe35, 0xfe44,
0xff01, 0xff5e, 0xff61, 0xff9f, 0xffe0, 0xffe6,
0
// clang-format on
};
void handleAppletHook (AppletHookType const hook_, void *const param_)
{
(void)param_;
switch (hook_)
{
case AppletHookType_OnFocusState:
s_focused = (appletGetFocusState () == AppletFocusState_Focused);
break;
case AppletHookType_OnOperationMode:
switch (appletGetOperationMode ())
{
default:
case AppletOperationMode_Handheld:
s_width = 1280.0f;
s_height = 720.0f;
break;
case AppletOperationMode_Docked:
#if 0
s_width = 1920.0f;
s_height = 1080.0f;
#else
s_width = 1280.0f;
s_height = 720.0f;
#endif
break;
}
break;
default:
break;
}
}
char const *getClipboardText (void *const userData_)
{
(void)userData_;
return s_clipboard.c_str ();
}
void setClipboardText (void *const userData_, char const *const text_)
{
(void)userData_;
s_clipboard = text_;
}
void moveMouse (ImGuiIO &io_, ImVec2 const &pos_, bool const force_ = false)
{
auto const now = std::chrono::high_resolution_clock::now ();
if (!force_ && pos_.x == s_mousePos.x && pos_.y == s_mousePos.y)
{
if (now - s_lastMouseUpdate > 1s)
s_showMouse = false;
return;
}
s_showMouse = true;
s_lastMouseUpdate = now;
s_mousePos = pos_;
io_.MousePos = s_mousePos;
}
void updateMouseButtons (ImGuiIO &io_)
{
auto const buttons = hidMouseButtonsHeld ();
for (std::size_t i = 0; i < IM_ARRAYSIZE (io_.MouseDown); ++i)
{
// If a mouse press event came, always pass it as "mouse held this frame", so we don't miss
// click-release events that are shorter than 1 frame.
io_.MouseDown[i] = s_mouseJustPressed[i] || (buttons & BIT (i));
s_mouseJustPressed[i] = false;
if (io_.MouseDown[i])
moveMouse (io_, s_mousePos, true);
}
}
void updateMousePos (ImGuiIO &io_)
{
if (!s_focused)
return;
MousePosition pos;
hidMouseRead (&pos);
io_.MouseWheelH += pos.scrollVelocityX;
io_.MouseWheel += pos.scrollVelocityY;
moveMouse (
io_, ImVec2 (s_mousePos.x + 2.0f * pos.velocityX, s_mousePos.y + 2.0f * pos.velocityY));
}
void updateTouch (ImGuiIO &io_)
{
if (!s_focused)
return;
auto const touchCount = hidTouchCount ();
if (touchCount < 1)
return;
touchPosition pos;
hidTouchRead (&pos, 0);
moveMouse (io_, ImVec2 (pos.px, pos.py));
io_.MouseDown[0] = true;
s_showMouse = false;
}
void updateGamepads (ImGuiIO &io_)
{
std::memset (io_.NavInputs, 0, sizeof (io_.NavInputs));
auto const buttonMapping = {
std::make_pair (KEY_A, ImGuiNavInput_Activate),
std::make_pair (KEY_B, ImGuiNavInput_Cancel),
std::make_pair (KEY_X, ImGuiNavInput_Input),
std::make_pair (KEY_Y, ImGuiNavInput_Menu),
std::make_pair (KEY_L, ImGuiNavInput_FocusPrev),
std::make_pair (KEY_L, ImGuiNavInput_TweakSlow),
std::make_pair (KEY_R, ImGuiNavInput_FocusNext),
std::make_pair (KEY_R, ImGuiNavInput_TweakFast),
std::make_pair (KEY_DUP, ImGuiNavInput_DpadUp),
std::make_pair (KEY_DRIGHT, ImGuiNavInput_DpadRight),
std::make_pair (KEY_DDOWN, ImGuiNavInput_DpadDown),
std::make_pair (KEY_DLEFT, ImGuiNavInput_DpadLeft),
};
auto const keys = hidKeysHeld (CONTROLLER_P1_AUTO);
for (auto const &[in, out] : buttonMapping)
{
if (keys & in)
io_.NavInputs[out] = 1.0f;
}
// Use ZR/ZL as Mouse0/Mouse1, respectively
if (keys & KEY_ZR)
{
io_.MouseDown[0] = true;
moveMouse (io_, s_mousePos, true);
}
if (keys & KEY_ZL)
{
io_.MouseDown[1] = true;
moveMouse (io_, s_mousePos, true);
}
JoystickPosition js;
auto const analogMapping = {
std::make_tuple (std::ref (js.dx), ImGuiNavInput_LStickLeft, -0.3f, -0.9f),
std::make_tuple (std::ref (js.dx), ImGuiNavInput_LStickRight, +0.3f, +0.9f),
std::make_tuple (std::ref (js.dy), ImGuiNavInput_LStickUp, +0.3f, +0.9f),
std::make_tuple (std::ref (js.dy), ImGuiNavInput_LStickDown, -0.3f, -0.9f),
};
hidJoystickRead (&js, CONTROLLER_P1_AUTO, JOYSTICK_LEFT);
for (auto const &[in, out, min, max] : analogMapping)
{
auto const value = in / static_cast (JOYSTICK_MAX);
auto const v = std::min (1.0f, (value - min) / (max - min));
io_.NavInputs[out] = std::max (io_.NavInputs[out], v);
}
// Use right stick as mouse
auto scale = 5.0f;
if (keys & KEY_L)
scale = 1.0f;
if (keys & KEY_R)
scale = 20.0f;
hidJoystickRead (&js, CONTROLLER_P1_AUTO, JOYSTICK_RIGHT);
moveMouse (io_,
ImVec2 (s_mousePos.x + js.dx / static_cast (JOYSTICK_MAX) * scale,
s_mousePos.y - js.dy / static_cast (JOYSTICK_MAX) * scale));
}
void updateKeyboard (ImGuiIO &io_)
{
io_.KeyCtrl =
hidKeyboardModifierHeld (static_cast (KBD_MOD_LCTRL | KBD_MOD_RCTRL));
io_.KeyShift = hidKeyboardModifierHeld (
static_cast (KBD_MOD_LSHIFT | KBD_MOD_RSHIFT));
io_.KeyAlt =
hidKeyboardModifierHeld (static_cast (KBD_MOD_LALT | KBD_MOD_RALT));
io_.KeySuper =
hidKeyboardModifierHeld (static_cast (KBD_MOD_LMETA | KBD_MOD_RMETA));
for (int i = 0; i < 256; ++i)
io_.KeysDown[i] = hidKeyboardHeld (static_cast (i));
if (!io_.WantTextInput)
return;
// io_.AddInputCharacter (c);
}
bool loadFontAtlas ()
{
fs::File fp;
if (!fp.open (FONT_ATLAS_BIN))
return false;
auto const atlas = ImGui::GetIO ().Fonts;
atlas->Clear ();
atlas->TexWidth = fp.read ();
atlas->TexHeight = fp.read ();
atlas->TexUvScale = ImVec2 (1.0f / atlas->TexWidth, 1.0f / atlas->TexHeight);
atlas->TexUvWhitePixel = ImVec2 (0.5f / atlas->TexWidth, 0.5f / atlas->TexHeight);
atlas->TexPixelsAlpha8 =
reinterpret_cast (IM_ALLOC (atlas->TexWidth * atlas->TexHeight));
if (!fp.readAll (atlas->TexPixelsAlpha8, atlas->TexWidth * atlas->TexHeight))
return false;
ImFontConfig config;
config.FontData = nullptr;
config.FontDataSize = 0;
config.FontDataOwnedByAtlas = true;
config.FontNo = 0;
config.SizePixels = 14.0f;
config.OversampleH = 3;
config.OversampleV = 1;
config.PixelSnapH = false;
config.GlyphExtraSpacing = ImVec2 (0.0f, 0.0f);
config.GlyphOffset = ImVec2 (0.0f, 0.0f);
config.GlyphRanges = nxFontRanges;
config.GlyphMinAdvanceX = 0.0f;
config.GlyphMaxAdvanceX = std::numeric_limits::max ();
config.MergeMode = false;
config.RasterizerFlags = 0;
config.RasterizerMultiply = 1.0f;
config.EllipsisChar = 0x2026;
std::memset (config.Name, 0, sizeof (config.Name));
auto const font = IM_NEW (ImFont);
config.DstFont = font;
atlas->ConfigData.push_back (config);
atlas->Fonts.push_back (font);
atlas->CustomRectIds[0] = atlas->AddCustomRectRegular (0x80000000, 108 * 2 + 1, 27);
atlas->CustomRects[0].X = 0;
atlas->CustomRects[0].Y = 0;
font->FallbackAdvanceX = fp.read ();
font->FontSize = fp.read ();
auto const glyphCount = fp.read ();
for (unsigned i = 0; i < glyphCount; ++i)
{
ImFontGlyph glyph;
glyph.Codepoint = fp.read ();
glyph.AdvanceX = fp.read ();
glyph.X0 = fp.read ();
glyph.Y0 = fp.read ();
glyph.X1 = fp.read ();
glyph.Y1 = fp.read ();
glyph.U0 = fp.read ();
glyph.V0 = fp.read ();
glyph.U1 = fp.read ();
glyph.V1 = fp.read ();
font->Glyphs.push_back (glyph);
font->MetricsTotalSurface +=
static_cast ((glyph.U1 - glyph.U0) * atlas->TexWidth + 1.99f) *
static_cast ((glyph.V1 - glyph.V0) * atlas->TexHeight + 1.99f);
}
font->BuildLookupTable ();
font->DisplayOffset.x = fp.read ();
font->DisplayOffset.y = fp.read ();
font->ContainerAtlas = atlas;
font->ConfigData = &atlas->ConfigData[0];
font->ConfigDataCount = 1;
font->FallbackChar = '?';
font->EllipsisChar = config.EllipsisChar;
font->Scale = 1.0f;
font->Ascent = fp.read ();
font->Descent = fp.read ();
return true;
}
bool saveFontAtlas ()
{
auto const atlas = ImGui::GetIO ().Fonts;
unsigned char *pixels;
int width;
int height;
atlas->GetTexDataAsAlpha8 (&pixels, &width, &height);
fs::File fp;
if (!fp.open (FONT_ATLAS_BIN, "wb"))
return false;
fp.write (width);
fp.write (height);
if (!fp.writeAll (pixels, width * height))
return false;
auto const font = atlas->ConfigData[0].DstFont;
fp.write (font->FallbackAdvanceX);
fp.write (font->FontSize);
fp.write (font->Glyphs.size ());
for (auto const &glyph : font->Glyphs)
{
fp.write (glyph.Codepoint);
fp.write (glyph.AdvanceX);
fp.write (glyph.X0);
fp.write (glyph.Y0);
fp.write (glyph.X1);
fp.write (glyph.Y1);
fp.write (glyph.U0);
fp.write (glyph.V0);
fp.write (glyph.U1);
fp.write (glyph.V1);
}
fp.write (font->DisplayOffset.x);
fp.write (font->DisplayOffset.y);
fp.write (font->Ascent);
fp.write (font->Descent);
return true;
}
}
bool imgui::nx::init ()
{
u64 languageCode;
auto rc = setInitialize ();
if (R_FAILED (rc))
return false;
rc = setGetSystemLanguage (&languageCode);
if (R_FAILED (rc))
{
setExit ();
return false;
}
setExit ();
std::vector fonts (PlSharedFontType_Total);
s32 numFonts = 0;
rc = plGetSharedFont (languageCode, fonts.data (), fonts.size (), &numFonts);
if (R_FAILED (rc))
return false;
fonts.resize (numFonts);
appletSetFocusHandlingMode (AppletFocusHandlingMode_NoSuspend);
appletHook (&s_appletHookCookie, handleAppletHook, nullptr);
handleAppletHook (AppletHookType_OnFocusState, nullptr);
handleAppletHook (AppletHookType_OnOperationMode, nullptr);
ImGuiIO &io = ImGui::GetIO ();
io.IniFilename = nullptr;
io.ConfigFlags |= ImGuiConfigFlags_IsTouchScreen;
io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
io.BackendFlags |= ImGuiBackendFlags_HasGamepad;
io.BackendPlatformName = "switch";
// Keyboard mapping. ImGui will use those indices to peek into the io.KeysDown[] array.
io.KeyMap[ImGuiKey_Tab] = KBD_TAB;
io.KeyMap[ImGuiKey_LeftArrow] = KBD_LEFT;
io.KeyMap[ImGuiKey_RightArrow] = KBD_RIGHT;
io.KeyMap[ImGuiKey_UpArrow] = KBD_UP;
io.KeyMap[ImGuiKey_DownArrow] = KBD_DOWN;
io.KeyMap[ImGuiKey_PageUp] = KBD_PAGEUP;
io.KeyMap[ImGuiKey_PageDown] = KBD_PAGEDOWN;
io.KeyMap[ImGuiKey_Home] = KBD_HOME;
io.KeyMap[ImGuiKey_End] = KBD_END;
io.KeyMap[ImGuiKey_Insert] = KBD_INSERT;
io.KeyMap[ImGuiKey_Delete] = KBD_DELETE;
io.KeyMap[ImGuiKey_Backspace] = KBD_BACKSPACE;
io.KeyMap[ImGuiKey_Space] = KBD_SPACE;
io.KeyMap[ImGuiKey_Enter] = KBD_ENTER;
io.KeyMap[ImGuiKey_Escape] = KBD_ESC;
io.KeyMap[ImGuiKey_KeyPadEnter] = KBD_KPENTER;
io.KeyMap[ImGuiKey_A] = KBD_A;
io.KeyMap[ImGuiKey_C] = KBD_C;
io.KeyMap[ImGuiKey_V] = KBD_V;
io.KeyMap[ImGuiKey_X] = KBD_X;
io.KeyMap[ImGuiKey_Y] = KBD_Y;
io.KeyMap[ImGuiKey_Z] = KBD_Z;
io.MouseDrawCursor = false;
io.SetClipboardTextFn = setClipboardText;
io.GetClipboardTextFn = getClipboardText;
io.ClipboardUserData = nullptr;
if (!loadFontAtlas ())
{
ImFontConfig config;
config.MergeMode = false;
config.FontDataOwnedByAtlas = false;
for (auto const &font : fonts)
{
io.Fonts->AddFontFromMemoryTTF (font.address, font.size, 14.0f, &config, nxFontRanges);
config.MergeMode = true;
}
io.Fonts->Flags |= ImFontAtlasFlags_NoPowerOfTwoHeight;
io.Fonts->Build ();
saveFontAtlas ();
}
else
std::printf ("Loaded font atlas from disk\n");
return true;
}
void imgui::nx::newFrame ()
{
ImGuiIO &io = ImGui::GetIO ();
IM_ASSERT (io.Fonts->IsBuilt () &&
"Font atlas not built! It is generally built by the renderer back-end. Missing call "
"to renderer _NewFrame() function?");
io.DisplaySize = ImVec2 (s_width, s_height);
io.DisplayFramebufferScale = ImVec2 (1.0f, 1.0f);
// Setup time step
static auto const start = std::chrono::high_resolution_clock::now ();
static auto prev = start;
auto const now = std::chrono::high_resolution_clock::now ();
io.DeltaTime = std::chrono::duration (now - prev).count ();
prev = now;
updateMouseButtons (io);
updateMousePos (io);
updateTouch (io);
updateGamepads (io);
updateKeyboard (io);
io.MouseDrawCursor = s_showMouse;
// Clamp mouse to screen
s_mousePos.x = std::clamp (s_mousePos.x, 0.0f, s_width);
s_mousePos.y = std::clamp (s_mousePos.y, 0.0f, s_height);
}
void imgui::nx::exit ()
{
appletUnhook (&s_appletHookCookie);
}