[Scummvm-git-logs] scummvm master -> e2415b59d6bfc2ff3b324b7f0cf7e87341b36ead
bluegr
bluegr at gmail.com
Sun Nov 8 20:26:41 UTC 2020
This automated email contains information about 9 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b7664c24dc SCI: Korean fan translation support
36f02ab3b9 SCI: Add missing const to GfxText32 methods
dc41e0e3cc SCI: Remove leftover code from scummvm-kor
25da3603e4 SCI: Korean code cleanup
71d0362b75 GRAPHICS: Rewrite Korean codepage conversion code
b60aa00175 SCI: Improve comment on Korean fan translated versions
00bd552840 SCI: Korean code cleanup
a615b7a66c SCI: Fix Korean detection table entries
e2415b59d6 SCI: Change Korean text detection method
Commit: b7664c24dcc798e5210b215232f4cf21c1e87f23
https://github.com/scummvm/scummvm/commit/b7664c24dcc798e5210b215232f4cf21c1e87f23
Author: wonst719 (wonst719 at gmail.com)
Date: 2020-11-08T22:26:31+02:00
Commit Message:
SCI: Korean fan translation support
Changed paths:
A engines/sci/graphics/fontkorean.cpp
A engines/sci/graphics/fontkorean.h
A graphics/cp949m.h
A graphics/korfont.cpp
A graphics/korfont.h
engines/sci/detection_tables.h
engines/sci/graphics/cache.cpp
engines/sci/graphics/frameout.cpp
engines/sci/graphics/screen.cpp
engines/sci/graphics/screen.h
engines/sci/graphics/text16.cpp
engines/sci/graphics/text16.h
engines/sci/graphics/text32.cpp
engines/sci/graphics/text32.h
engines/sci/module.mk
engines/sci/resource.cpp
graphics/module.mk
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 7adb36c21a..3197f36706 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -147,6 +147,16 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformDOS, 0, GUIO_STD16 },
+ // Castle of Dr. Brain - Korean DOS Floppy 1.1
+ {"castlebrain", "", {
+ {"resource.map", 0, "f77728304c70017c54793eb6ca648174", 2745},
+ {"resource.000", 0, "27ec5fa09cd12a7fd16e86d96a2ed245", 347071},
+ {"resource.001", 0, "13e81e1839cd7b216d2bb5615c1ca160", 796776},
+ {"resource.002", 0, "930e416bec196b9703a331d81b3d66f2", 1283812},
+ {"resource.msg", 0, "71c6f480e742a0dd3700ec7825962921", 49538},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformDOS, 0, GUIO_STD16 },
+
// Castle of Dr. Brain - English DOS Floppy 1.000
// Reported by graxer in bug report #3037942
{"castlebrain", "", {
@@ -543,6 +553,16 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO_STD16_SPEECH_GM },
+ // Eco Quest - Korean DOS CD 1.1
+ // SCI interpreter version 1.001.064
+ {"ecoquest", "CD", {
+ {"resource.aud", 0, "1971dcb007a0c064c152175400f4021b", 305187924},
+ {"resource.map", 0, "a4b73d5d2b55bdb6e44345e99c8fbdd0", 4804},
+ {"resource.000", 0, "d908dbef56816ac6c60dd145fdeafb2b", 3536046},
+ {"resource.msg", 0, "0c68a203302841adb9faa47ff61edd93", 561801},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO_STD16_SPEECH },
+
// Eco Quest - English DOS Floppy (reported by misterhands in bug #6599)
// Game v1.10, interpreter 2.000.286, INT #6.12.92
{"ecoquest", "Floppy", {
@@ -833,6 +853,22 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO_GK1_CD_WIN },
+ // Gabriel Knight - Korean Windows CD (from aquilegia)
+ // Executable scanning reports "2.000.000", VERSION file reports "01.100.000"
+ {"gk1", "CD", {
+ {"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10996},
+ {"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 12581736},
+ {"resource.msg", 0, "5a35e00e0b8d656ff423b76831a86ab8", 980765},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO_GK1_CD_DOS },
+
+ {"gk1", "CD", {
+ {"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10996},
+ {"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 12581736},
+ {"resource.msg", 0, "5a35e00e0b8d656ff423b76831a86ab8", 980765},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformWindows, ADGF_CD, GUIO_GK1_CD_WIN },
+
// Gabriel Knight - German DOS CD (from Tobis87)
// SCI interpreter version 2.000.000
{"gk1", "CD", {
@@ -1450,6 +1486,18 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformDOS, 0, GUIO_STD16_UNDITHER },
+ // King's Quest 1 SCI Remake - English DOS (from the King's Quest Collection)
+ // Executable scanning reports "S.old.010", VERSION file reports "1.000.051"
+ // SCI interpreter version 0.000.999
+ {"kq1sci", "SCI", {
+ {"resource.map", 0, "7fe9399a0bec84ca5727309778d27f07", 5790},
+ {"resource.001", 0, "fed9e0072ffd511d248674e60dee2099", 555439},
+ {"resource.002", 0, "fed9e0072ffd511d248674e60dee2099", 714062},
+ {"resource.003", 0, "fed9e0072ffd511d248674e60dee2099", 717478},
+ {"resource.msg", 0, "6f44b0324c9a3d478510d982eb5084dd", 2948975},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformDOS, 0, GUIO_STD16_UNDITHER },
+
// King's Quest 1 SCI Remake - English DOS (supplied by ssburnout in bug report #3049193)
// 1.000.051 9x5.25" (label: INT#9.19.90)
{"kq1sci", "SCI", {
@@ -1661,6 +1709,22 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformDOS, 0, GUIO_STD16 },
+ // King's Quest 5 - Korean DOS Floppy
+ // SCI interpreter version 1.000.060
+ {"kq5", "", {
+ {"resource.map", 0, "d6172c27b453350e158815fbae23f41e", 8004},
+ {"resource.000", 0, "a591bd4b879fc832b8095c0b3befe9e2", 276351},
+ {"resource.001", 0, "3f28c72dc7531aaccf8e972c7ee50d14", 1022087},
+ {"resource.002", 0, "3e56ba5bf5e8637c619b57f6b6cacbb4", 1307211},
+ {"resource.003", 0, "5d5d498f33ca7cde0d5b058630b36ad3", 1347875},
+ {"resource.004", 0, "944a996f9cc90dabde9f51ed7dd52366", 1239689},
+ {"resource.005", 0, "b6c43441cb78a9b484efc8e614aac092", 1287999},
+ {"resource.006", 0, "672ede1136e9e401658538e51bd5dc22", 1172619},
+ {"resource.007", 0, "2f48faf27666b58c276dda20f91f4a93", 1240456},
+ {"resource.msg", 0, "8d94253e33b268c310126562a72de6f5", 93930},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformDOS, 0, GUIO_STD16 },
+
// King's Quest 5 - English DOS Floppy
// VERSION file reports "0.000.051"
// Supplied by misterhands in bug report #3536863.
@@ -2010,6 +2074,34 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO_KQ6_CD_WINDOWS },
+ // King's Quest 6 - Korean DOS Floppy (supplied by aquilegia)
+ {"kq6", "", {
+ {"resource.map", 0, "a362063318eebe7d6423b1d9dc6213e1", 8703},
+ {"resource.000", 0, "f2b7f753992c56a0c7a08d6a5077c895", 7863324},
+ {"resource.msg", 0, "51ca9f8afc42ef442f6545b3c82a9165", 596121},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformDOS, 0, GUIO_STD16 },
+
+ // King's Quest 6 - Korean DOS CD (from the King's Quest Collection)
+ // Executable scanning reports "1.cfs.158", VERSION file reports "1.034 9/11/94 - KQ6 version 1.000.00G"
+ // SCI interpreter version 1.001.054
+ {"kq6", "CD", {
+ {"resource.map", 0, "7a550ebfeae2575ca00d47703a6a774c", 9215},
+ {"resource.000", 0, "233394a5f33b475ae5975e7e9a420865", 8376352},
+ {"resource.msg", 0, "51ca9f8afc42ef442f6545b3c82a9165", 596121},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO5(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING) },
+
+ // King's Quest 6 - Korean Windows CD (from the King's Quest Collection)
+ // Executable scanning reports "1.cfs.158", VERSION file reports "1.034 9/11/94 - KQ6 version 1.000.00G"
+ // SCI interpreter version 1.001.054
+ {"kq6", "CD", {
+ {"resource.map", 0, "7a550ebfeae2575ca00d47703a6a774c", 9215},
+ {"resource.000", 0, "233394a5f33b475ae5975e7e9a420865", 8376352},
+ {"resource.msg", 0, "51ca9f8afc42ef442f6545b3c82a9165", 596121},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformWindows, ADGF_CD, GUIO6(GUIO_NOASPECT, GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_KQ6_WINDOWS_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE) },
+
// King's Quest 6 - English Macintosh Floppy
// VERSION file reports "1.0"
{"kq6", "", {
@@ -2318,6 +2410,16 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO_STD16_SPEECH },
+ // Laura Bow 2 - Korean DOS CD (from "The Roberta Williams Antology"/1996)
+ // Executable scanning reports "1.001.072", VERSION file reports "1.1" (from jvprat)
+ // SCI interpreter version 1.001.069 (just a guess)
+ {"laurabow2", "CD", {
+ {"resource.map", 0, "a70945e61ba7ac7bfea6b7bd72c6aec5", 7274},
+ {"resource.000", 0, "82578b8d5a7e09c4c58891ca49fae35b", 5598672},
+ {"resource.msg", 0, "bdc2167ebe55612b8ff17347f70e2b83", 561801},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO_STD16_SPEECH },
+
// Laura Bow 2 v1.1 - French DOS Floppy (from Hkz)
{"laurabow2", "", {
{"resource.map", 0, "3b6dfbcda210bbc3f23fd1927113bf98", 6483},
@@ -5189,6 +5291,15 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO6(GUIO_MIDIGM, GAMEOPTION_SQ4_SILVER_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING) },
+ // Space Quest 4 - Korean DOS CD (from the Space Quest Collection)
+ // Executable scanning reports "1.001.064", VERSION file reports "1.0"
+ {"sq4", "", {
+ {"resource.map", 0, "ed90a8e3ccc53af6633ff6ab58392bae", 7054},
+ {"resource.000", 0, "63247e3901ab8963d4eece73747832e0", 5157378},
+ {"resource.msg", 0, "6ca82305ba1f8ac1cebdd20427168106", 561801},
+ AD_LISTEND},
+ Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO5(GAMEOPTION_SQ4_SILVER_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING) },
+
// Space Quest 4 - English DOS CD "NRS SQ4 Update 1.2" (unofficial patch)
// This patch set was distributed as a mixture the CD and floppy versions (the whole game)
// without the speech files, at least initially, and so it is not allowed.
diff --git a/engines/sci/graphics/cache.cpp b/engines/sci/graphics/cache.cpp
index 8ab62131de..15017b5346 100644
--- a/engines/sci/graphics/cache.cpp
+++ b/engines/sci/graphics/cache.cpp
@@ -30,6 +30,7 @@
#include "sci/graphics/cache.h"
#include "sci/graphics/scifont.h"
#include "sci/graphics/fontsjis.h"
+#include "sci/graphics/fontkorean.h"
#include "sci/graphics/view.h"
namespace Sci {
@@ -66,6 +67,11 @@ GfxFont *GfxCache::getFont(GuiResourceId fontId) {
purgeFontCache();
if (!_cachedFonts.contains(fontId)) {
+ // Create special Korean font in korean games, when font 1001 is selected
+ if ((fontId == 1001) && (g_sci->getLanguage() == Common::KO_KOR)) {
+ _cachedFonts[fontId] = new GfxFontKorean(_screen, fontId);
+ }
+ else
// Create special SJIS font in japanese games, when font 900 is selected
if ((fontId == 900) && (g_sci->getLanguage() == Common::JA_JPN))
_cachedFonts[fontId] = new GfxFontSjis(_screen, fontId);
diff --git a/engines/sci/graphics/fontkorean.cpp b/engines/sci/graphics/fontkorean.cpp
new file mode 100644
index 0000000000..989cceb7d9
--- /dev/null
+++ b/engines/sci/graphics/fontkorean.cpp
@@ -0,0 +1,86 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "sci/sci.h"
+#include "sci/engine/state.h"
+#include "sci/graphics/screen.h"
+#include "sci/graphics/scifont.h"
+#include "sci/graphics/fontkorean.h"
+
+namespace Sci {
+
+GfxFontKorean::GfxFontKorean(GfxScreen *screen, GuiResourceId resourceId)
+ : _resourceId(resourceId), _screen(screen) {
+ assert(resourceId != -1);
+
+ _commonFont = Graphics::FontKorean::createFont("korean.fnt");
+ //warning("GfxFontKorean: created Font");
+
+ if (!_commonFont)
+ error("Could not load ScummVM's 'korean.fnt'");
+}
+
+GfxFontKorean::~GfxFontKorean() {
+}
+
+GuiResourceId GfxFontKorean::getResourceId() {
+ return _resourceId;
+}
+
+// Returns true for first byte of double byte characters
+bool GfxFontKorean::isDoubleByte(uint16 chr) {
+ uint16 ch = chr & 0xFF;
+ if ((ch >= 0xA1) && (ch <= 0xFE))
+ return true;
+ return false;
+}
+
+// We can do >>1, because returned char width/height is 8 or 16 exclusively. Font returns hires size, we need lowres
+byte GfxFontKorean::getHeight() {
+ if (getSciVersion() >= SCI_VERSION_2)
+ return _commonFont->getFontHeight();
+ else
+ return _commonFont->getFontHeight() >> 1;
+}
+
+byte GfxFontKorean::getCharWidth(uint16 chr) {
+ if (getSciVersion() >= SCI_VERSION_2)
+ return _commonFont->getCharWidth(chr);
+ else
+ return _commonFont->getCharWidth(chr) >> 1;
+}
+
+void GfxFontKorean::draw(uint16 chr, int16 top, int16 left, byte color, bool greyedOutput) {
+ // TODO: Check, if character fits on screen - if it doesn't we need to skip it
+ _screen->putHangulChar(_commonFont, left & 0xFFC, top, chr, color);
+}
+
+#ifdef ENABLE_SCI32
+void GfxFontKorean::drawToBuffer(uint16 chr, int16 top, int16 left, byte color, bool greyedOutput, byte *buffer, int16 bufWidth, int16 bufHeight) {
+ byte *displayPtr = buffer + top * bufWidth + left;
+ // we don't use outline, so color 0 is actually not used
+ _commonFont->drawChar(displayPtr, chr, bufWidth, 1, color, 0, bufWidth - left, bufHeight - top);
+}
+
+#endif
+
+} // End of namespace Sci
diff --git a/engines/sci/graphics/fontkorean.h b/engines/sci/graphics/fontkorean.h
new file mode 100644
index 0000000000..0c26d15fe1
--- /dev/null
+++ b/engines/sci/graphics/fontkorean.h
@@ -0,0 +1,61 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef SCI_GRAPHICS_FONTKOREAN_H
+#define SCI_GRAPHICS_FONTKOREAN_H
+
+#include "sci/graphics/helpers.h"
+
+namespace Graphics {
+class FontKorean;
+}
+
+namespace Sci {
+
+/**
+ * Special Font class, handles Korean inside sci games, uses ScummVM Korean support
+ */
+class GfxFontKorean : public GfxFont {
+public:
+ GfxFontKorean(GfxScreen *screen, GuiResourceId resourceId);
+ ~GfxFontKorean();
+
+ GuiResourceId getResourceId();
+ byte getHeight();
+ bool isDoubleByte(uint16 chr);
+ byte getCharWidth(uint16 chr);
+ byte *getCharData(uint16 chr);
+ void draw(uint16 chr, int16 top, int16 left, byte color, bool greyedOutput);
+#ifdef ENABLE_SCI32
+ // SCI2/2.1 equivalent
+ void drawToBuffer(uint16 chr, int16 top, int16 left, byte color, bool greyedOutput, byte *buffer, int16 width, int16 height);
+#endif
+
+private:
+ GfxScreen *_screen;
+ GuiResourceId _resourceId;
+
+ Graphics::FontKorean *_commonFont;
+};
+
+} // End of namespace Sci
+#endif
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 0402ffa496..62ea468ad8 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -76,6 +76,13 @@ GfxFrameout::GfxFrameout(SegManager *segMan, GfxPalette32 *palette, GfxTransitio
if (g_sci->getGameId() == GID_PHANTASMAGORIA) {
_currentBuffer.create(630, 450, Graphics::PixelFormat::createFormatCLUT8());
} else if (_isHiRes) {
+// #ifdef SCUMMVMKOR
+// // GK1 Korean pathed version
+// if (g_sci->getGameId() == GID_GK1 && g_sci->getLanguage() == Common::KO_KOR) {
+// _currentBuffer.create(640, 400, Graphics::PixelFormat::createFormatCLUT8());
+// }
+// else
+// #endif
_currentBuffer.create(640, 480, Graphics::PixelFormat::createFormatCLUT8());
} else {
_currentBuffer.create(320, 200, Graphics::PixelFormat::createFormatCLUT8());
@@ -146,6 +153,11 @@ bool GfxFrameout::detectHiRes() const {
return false;
}
+ // GK1 Korean pathed version is high resolution only
+ if (g_sci->getGameId() == GID_GK1 && g_sci->getLanguage() == Common::KO_KOR) {
+ return true;
+ }
+
// GK1 DOS floppy is low resolution only, but GK1 Mac floppy is high
// resolution only
if (g_sci->getGameId() == GID_GK1 &&
diff --git a/engines/sci/graphics/screen.cpp b/engines/sci/graphics/screen.cpp
index 4dc1ad1ff0..979c853c59 100644
--- a/engines/sci/graphics/screen.cpp
+++ b/engines/sci/graphics/screen.cpp
@@ -63,6 +63,9 @@ GfxScreen::GfxScreen(ResourceManager *resMan) : _resMan(resMan) {
_upscaledHires = GFX_SCREEN_UPSCALED_640x440;
}
+ // Korean versions of games use hi-res font on upscaled version of the game.
+ if ((g_sci->getLanguage() == Common::KO_KOR) && (getSciVersion() <= SCI_VERSION_1_1))
+ _upscaledHires = GFX_SCREEN_UPSCALED_640x400;
// Japanese versions of games use hi-res font on upscaled version of the game.
if ((g_sci->getLanguage() == Common::JA_JPN) && (getSciVersion() <= SCI_VERSION_1_1))
_upscaledHires = GFX_SCREEN_UPSCALED_640x400;
@@ -627,6 +630,14 @@ void GfxScreen::drawLine(Common::Point startPoint, Common::Point endPoint, byte
}
}
+// We put hires hangul chars onto upscaled background, so we need to adjust
+// coordinates. Caller gives use low-res ones.
+void GfxScreen::putHangulChar(Graphics::FontKorean *commonFont, int16 x, int16 y, uint16 chr, byte color) {
+ byte *displayPtr = _displayScreen + y * _displayWidth * 2 + x * 2;
+ // we don't use outline, so color 0 is actually not used
+ commonFont->drawChar(displayPtr, chr, _displayWidth, 1, color, 0, -1, -1);
+}
+
// We put hires kanji chars onto upscaled background, so we need to adjust
// coordinates. Caller gives use low-res ones.
void GfxScreen::putKanjiChar(Graphics::FontSJIS *commonFont, int16 x, int16 y, uint16 chr, byte color) {
diff --git a/engines/sci/graphics/screen.h b/engines/sci/graphics/screen.h
index 042f2719bc..b70c370c6c 100644
--- a/engines/sci/graphics/screen.h
+++ b/engines/sci/graphics/screen.h
@@ -28,6 +28,7 @@
#include "sci/graphics/view.h"
#include "graphics/sjis.h"
+#include "graphics/korfont.h"
#include "graphics/pixelformat.h"
namespace Sci {
@@ -119,6 +120,7 @@ public:
void enableUndithering(bool flag);
void putKanjiChar(Graphics::FontSJIS *commonFont, int16 x, int16 y, uint16 chr, byte color);
+ void putHangulChar(Graphics::FontKorean *commonFont, int16 x, int16 y, uint16 chr, byte color);
int bitsGetDataSize(Common::Rect rect, byte mask);
void bitsSave(Common::Rect rect, byte mask, byte *memoryPtr);
diff --git a/engines/sci/graphics/text16.cpp b/engines/sci/graphics/text16.cpp
index 483211e7fd..f5c020e18b 100644
--- a/engines/sci/graphics/text16.cpp
+++ b/engines/sci/graphics/text16.cpp
@@ -288,6 +288,7 @@ int16 GfxText16::GetLongest(const char *&textPtr, int16 maxWidth, GuiResourceId
} else {
// Break without spaces found, we split the very first word - may also be Kanji/Japanese
+
if (curChar > 0xFF) {
// current character is Japanese
@@ -435,6 +436,8 @@ int16 GfxText16::Size(Common::Rect &rect, const char *text, uint16 languageSplit
rect.top = rect.left = 0;
if (maxWidth < 0) { // force output as single line
+ if (g_sci->getLanguage() == Common::KO_KOR)
+ SwitchToFont1001OnKorean(text, languageSplitter);
if (g_sci->getLanguage() == Common::JA_JPN)
SwitchToFont900OnSjis(text, languageSplitter);
@@ -448,6 +451,9 @@ int16 GfxText16::Size(Common::Rect &rect, const char *text, uint16 languageSplit
const char *curTextPos = text; // in work position for GetLongest()
const char *curTextLine = text; // starting point of current line
while (*curTextPos) {
+ // We need to check for Korean-EUCKR every line
+ if (g_sci->getLanguage() == Common::KO_KOR)
+ SwitchToFont1001OnKorean(curTextPos, languageSplitter);
// We need to check for Shift-JIS every line
if (g_sci->getLanguage() == Common::JA_JPN)
SwitchToFont900OnSjis(curTextPos, languageSplitter);
@@ -548,6 +554,11 @@ void GfxText16::Box(const char *text, uint16 languageSplitter, bool show, const
maxTextWidth = 0;
while (*curTextPos) {
+ // We need to check for Korean-EUCKR every line
+ if (g_sci->getLanguage() == Common::KO_KOR) {
+ if (SwitchToFont1001OnKorean(curTextPos, languageSplitter))
+ doubleByteMode = true;
+ }
// We need to check for Shift-JIS every line
// Police Quest 2 PC-9801 often draws English + Japanese text during the same call
if (g_sci->getLanguage() == Common::JA_JPN) {
@@ -682,6 +693,18 @@ void GfxText16::DrawStatus(const Common::String &strOrig) {
}
}
+// korean and then switch to font 1001
+bool GfxText16::SwitchToFont1001OnKorean(const char *text, uint16 languageSplitter) {
+ byte firstChar = (*(const byte *)text++);
+ if (languageSplitter != 0x6b23) { // #k prefix as language splitter
+ if ((firstChar >= 0xA1) && (firstChar <= 0xFE)) {
+ SetFont(1001);
+ return true;
+ }
+ }
+ return false;
+}
+
// Sierra did this in their PC98 interpreter only, they identify a text as being
// sjis and then switch to font 900
bool GfxText16::SwitchToFont900OnSjis(const char *text, uint16 languageSplitter) {
diff --git a/engines/sci/graphics/text16.h b/engines/sci/graphics/text16.h
index 32d5481dcc..1f53c5b4b0 100644
--- a/engines/sci/graphics/text16.h
+++ b/engines/sci/graphics/text16.h
@@ -78,6 +78,7 @@ public:
private:
void init();
+ bool SwitchToFont1001OnKorean(const char *text, uint16 languageSplitter);
bool SwitchToFont900OnSjis(const char *text, uint16 languageSplitter);
GfxCache *_cache;
diff --git a/engines/sci/graphics/text32.cpp b/engines/sci/graphics/text32.cpp
index 2e66f61fee..4ce1f4fdd6 100644
--- a/engines/sci/graphics/text32.cpp
+++ b/engines/sci/graphics/text32.cpp
@@ -56,6 +56,11 @@ GfxText32::GfxText32(SegManager *segMan, GfxCache *fonts) :
void GfxText32::init() {
_xResolution = g_sci->_gfxFrameout->getScriptWidth();
_yResolution = g_sci->_gfxFrameout->getScriptHeight();
+ // GK1 Korean pathed version use doubled resolution for font
+ if (g_sci->getGameId() == GID_GK1 && g_sci->getLanguage() == Common::KO_KOR) {
+ _xResolution = _xResolution * 2;
+ _yResolution = _yResolution * 2;
+ }
}
reg_t GfxText32::createFontBitmap(int16 width, int16 height, const Common::Rect &rect, const Common::String &text, const uint8 foreColor, const uint8 backColor, const uint8 skipColor, const GuiResourceId fontId, const TextAlign alignment, const int16 borderColor, const bool dimmed, const bool doScaling, const bool gc) {
@@ -295,12 +300,12 @@ void GfxText32::drawFrame(const Common::Rect &rect, const int16 size, const uint
}
}
-void GfxText32::drawChar(const char charIndex) {
+void GfxText32::drawChar(uint16 charIndex) {
SciBitmap &bitmap = *_segMan->lookupBitmap(_bitmap);
byte *pixels = bitmap.getPixels();
- _font->drawToBuffer((unsigned char)charIndex, _drawPosition.y, _drawPosition.x, _foreColor, _dimmed, pixels, _width, _height);
- _drawPosition.x += _font->getCharWidth((unsigned char)charIndex);
+ _font->drawToBuffer(charIndex, _drawPosition.y, _drawPosition.x, _foreColor, _dimmed, pixels, _width, _height);
+ _drawPosition.x += _font->getCharWidth(charIndex);
}
int16 GfxText32::getScaledFontHeight() const {
@@ -308,8 +313,8 @@ int16 GfxText32::getScaledFontHeight() const {
return (_font->getHeight() * scriptHeight + _yResolution - 1) / _yResolution;
}
-uint16 GfxText32::getCharWidth(const char charIndex, const bool doScaling) const {
- uint16 width = _font->getCharWidth((unsigned char)charIndex);
+uint16 GfxText32::getCharWidth(uint16 charIndex, const bool doScaling) const {
+ uint16 width = _font->getCharWidth(charIndex);
if (doScaling) {
width = scaleUpWidth(width);
}
@@ -336,6 +341,9 @@ void GfxText32::drawTextBox() {
charIndex = 0;
uint nextCharIndex = 0;
while (*text != '\0') {
+ // We need to check for Korean-EUCKR every line
+ if (g_sci->getLanguage() == Common::KO_KOR)
+ SwitchToFont1001OnKorean(text);
_drawPosition.x = _textRect.left;
uint length = getLongest(&nextCharIndex, textRectWidth);
@@ -386,7 +394,10 @@ void GfxText32::drawText(const uint index, uint length) {
}
while (length-- > 0) {
- char currentChar = *text++;
+ uint16 currentChar = *(const byte *)text++;
+ if (_font->isDoubleByte(currentChar)) {
+ currentChar |= *text++ << 8;
+ }
if (currentChar == '|') {
const char controlChar = *text++;
@@ -495,8 +506,11 @@ uint GfxText32::getLongest(uint *charIndex, const int16 width) {
const char *text = _text.c_str() + *charIndex;
- char currentChar;
- while ((currentChar = *text++) != '\0') {
+ uint16 currentChar = 0;
+ while ((currentChar = *(const byte *)text++) != '\0') {
+ if (_font->isDoubleByte(currentChar)) {
+ currentChar |= (*text++) << 8;
+ }
// In SSCI, the font, color, and alignment were reset here to their
// initial values; this does not seem to be necessary and really
// complicates the font system, so we do not do it
@@ -568,6 +582,9 @@ uint GfxText32::getLongest(uint *charIndex, const int16 width) {
// In the middle of a line, keep processing
++*charIndex;
++testLength;
+ if (_font->isDoubleByte(currentChar)) {
+ ++*charIndex;
+ }
// In SSCI, the font, color, and alignment were reset here to their
// initial values, but we do not need to do this because we do not cause
@@ -614,8 +631,11 @@ void GfxText32::getTextDimensions(const uint index, uint length, int16 &width, i
GfxFont *font = _font;
- char currentChar = *text++;
+ uint16 currentChar = *(const byte *)text++;
while (length > 0 && currentChar != '\0') {
+ if (_font->isDoubleByte(currentChar)) {
+ currentChar |= (*text++) << 8;
+ }
// Control codes are in the format `|<code><value>|`
if (currentChar == '|') {
// SSCI changed the global state of the FontMgr here upon
@@ -702,6 +722,9 @@ Common::Rect GfxText32::getTextSize(const Common::String &text, int16 maxWidth,
uint charIndex = 0;
uint nextCharIndex = 0;
while (*rawText != '\0') {
+ // We need to check for Korean-EUCKR every line
+ if (g_sci->getLanguage() == Common::KO_KOR)
+ SwitchToFont1001OnKorean(rawText);
uint length = getLongest(&nextCharIndex, result.width());
textWidth = MAX(textWidth, getTextWidth(charIndex, length));
charIndex = nextCharIndex;
@@ -847,5 +870,14 @@ void GfxText32::scrollLine(const Common::String &lineText, int numLines, uint8 c
drawText(0, lineText.size());
}
+// korean and then switch to font 1001
+bool GfxText32::SwitchToFont1001OnKorean(const char *text) {
+ //byte firstChar = (*(const byte *)text++);
+ if (1/*(firstChar >= 0xA1) && (firstChar <= 0xFE)*/) {
+ setFont(1001);
+ return true;
+ }
+ return false;
+}
} // End of namespace Sci
diff --git a/engines/sci/graphics/text32.h b/engines/sci/graphics/text32.h
index 3e0d7dccd4..6ff2dddfc5 100644
--- a/engines/sci/graphics/text32.h
+++ b/engines/sci/graphics/text32.h
@@ -119,7 +119,7 @@ private:
void drawFrame(const Common::Rect &rect, const int16 size, const uint8 color, const bool doScaling);
- void drawChar(const char charIndex);
+ void drawChar(uint16 charIndex);
void drawText(const uint index, uint length);
/**
@@ -246,7 +246,7 @@ public:
/**
* Gets the width of a character.
*/
- uint16 getCharWidth(const char charIndex, const bool doScaling) const;
+ uint16 getCharWidth(uint16 charIndex, const bool doScaling) const;
/**
* Retrieves the width and height of a block of text.
@@ -282,6 +282,9 @@ public:
* line. Originally FontMgr::DrawOneLine and FontMgr::UpOneLine.
*/
void scrollLine(const Common::String &textLine, int numLines, uint8 color, TextAlign align, GuiResourceId fontId, ScrollDirection dir);
+
+ bool SwitchToFont1001OnKorean(const char *text);
+
};
} // End of namespace Sci
diff --git a/engines/sci/module.mk b/engines/sci/module.mk
index 3c15897022..93074b1c98 100644
--- a/engines/sci/module.mk
+++ b/engines/sci/module.mk
@@ -51,6 +51,7 @@ MODULE_OBJS := \
graphics/coordadjuster.o \
graphics/cursor.o \
graphics/fontsjis.o \
+ graphics/fontkorean.o \
graphics/maciconbar.o \
graphics/menu.o \
graphics/paint16.o \
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index 7b58d9a6e3..6a55009340 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -605,9 +605,16 @@ void ResourceSource::loadResource(ResourceManager *resMan, Resource *res) {
if (!fileStream)
return;
- fileStream->seek(res->_fileOffset, SEEK_SET);
+ fileStream->seek(0, SEEK_SET);
+ ResourceType type = resMan->convertResType(fileStream->readByte());
+ ResVersion volVersion = resMan->getVolVersion();
- int error = res->decompress(resMan->getVolVersion(), fileStream);
+ // FIXME: if resource.msg has different version from SCIII, this has to be modified.
+ if (((type == kResourceTypeMessage && res->getType() == kResourceTypeMessage) || (type == kResourceTypeText && res->getType() == kResourceTypeText)) && g_sci->getLanguage() == Common::KO_KOR)
+ volVersion = kResVersionSci11;
+ fileStream->seek(res->_fileOffset, SEEK_SET);
+
+ int error = res->decompress(volVersion, fileStream);
if (error) {
warning("Error %d occurred while reading %s from resource file %s: %s",
error, res->_id.toString().c_str(), res->getResourceLocation().c_str(),
@@ -854,7 +861,8 @@ void DirectoryResourceSource::scanSource(ResourceManager *resMan) {
}
void ExtMapResourceSource::scanSource(ResourceManager *resMan) {
- if (resMan->_mapVersion < kResVersionSci1Late) {
+ if (resMan->_mapVersion < kResVersionSci1Late &&
+ !(getLocationName() == "message.map" && g_sci->getLanguage() == Common::KO_KOR)) {
if (resMan->readResourceMapSCI0(this) != SCI_ERROR_NONE) {
resMan->_hasBadResources = true;
}
@@ -1926,6 +1934,8 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) {
memset(resMap, 0, sizeof(resource_index_t) * 32);
byte type = 0, prevtype = 0;
byte nEntrySize = _mapVersion == kResVersionSci11 ? SCI11_RESMAP_ENTRIES_SIZE : SCI1_RESMAP_ENTRIES_SIZE;
+ if (map->getLocationName() == "message.map" && g_sci->getLanguage() == Common::KO_KOR)
+ nEntrySize = SCI1_RESMAP_ENTRIES_SIZE;
ResourceId resId;
// Read resource type and offsets to resource offsets block from .MAP file
@@ -1953,7 +1963,7 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) {
for (int i = 0; i < resMap[type].wSize; i++) {
uint16 number = fileStream->readUint16LE();
int volume_nr = 0;
- if (_mapVersion == kResVersionSci11) {
+ if (_mapVersion == kResVersionSci11 && !(map->getLocationName() == "message.map" && g_sci->getLanguage() == Common::KO_KOR)) {
// offset stored in 3 bytes
fileOffset = fileStream->readUint16LE();
fileOffset |= fileStream->readByte() << 16;
@@ -1961,7 +1971,7 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) {
} else {
// offset/volume stored in 4 bytes
fileOffset = fileStream->readUint32LE();
- if (_mapVersion < kResVersionSci11) {
+ if (_mapVersion < kResVersionSci11 && !(map->getLocationName() == "message.map" && g_sci->getLanguage() == Common::KO_KOR)) {
volume_nr = fileOffset >> 28; // most significant 4 bits
fileOffset &= 0x0FFFFFFF; // least significant 28 bits
} else {
diff --git a/graphics/cp949m.h b/graphics/cp949m.h
new file mode 100644
index 0000000000..a29400be87
--- /dev/null
+++ b/graphics/cp949m.h
@@ -0,0 +1,1704 @@
+//
+// CP-949 Map definition by xsnake
+// ideas on 2014-02-12
+// validated 2014-02-18
+//
+#define _CP949_PAGE 234
+
+typedef struct {
+ unsigned short first;
+ unsigned short last;
+ unsigned short uc_first;
+ unsigned short uc_last;
+ unsigned short offset;
+ unsigned short cnt;
+} _CP949MAP;
+//
+// KS2350 ì±íì í
ì´ë¸ì 2350 X 2 = 4700 ë°ì´í¸ ( ì½ 5KB )
+// cp949 íê¸, íê¸ì모ë§
+// í¹ì문ì, íì ì ì¸
+//
+// ì¤ì í
ì´ë¸íì 11172 X 2 = 22344 ( 21.8KB )
+// ì¶ì¶ í
ì´ë¸íì 11266 X 1 = 11266
+// 12 X 234 = 2808
+// 384
+// 122
+// 240
+// -----------------
+// 14820 ( 14.5 KB )
+//
+// ì ììì¤ì ì½ 66% í¬ê¸° í
ì´ë¸ë¡ì¨ ëì¼í¨ê³¼
+//
+
+const _CP949MAP cp949[ _CP949_PAGE ]={
+// LOCALE UNICODE
+// ---------------------------
+ {0x8141,0x815A,0xAC02,0xAC34, 0, 26},// 0
+ {0x8161,0x817A,0xAC35,0xAC55, 26, 26},// 1
+ {0x8181,0x81FE,0xAC56,0xAD13, 52,126},// 2
+ {0x8241,0x825A,0xAD14,0xAD33, 178, 26},// 3
+ {0x8261,0x827A,0xAD36,0xAD57, 204, 26},// 4
+ {0x8281,0x82FE,0xAD59,0xADF7, 230,126},// 5
+ {0x8341,0x835A,0xADFA,0xAE1C, 356, 26},// 6
+ {0x8361,0x837A,0xAE1D,0xAE3C, 382, 26},// 7
+ {0x8381,0x83FE,0xAE3D,0xAEE5, 408,126},// 8
+ {0x8441,0x845A,0xAEE6,0xAF05, 534, 26},// 9
+ {0x8461,0x847A,0xAF06,0xAF23, 560, 26},// 10
+ {0x8481,0x84FE,0xAF24,0xAFBE, 586,126},// 11
+ {0x8541,0x855A,0xAFBF,0xAFE1, 712, 26},// 12
+ {0x8561,0x857A,0xAFE2,0xB003, 738, 26},// 13
+ {0x8581,0x85FE,0xB005,0xB0A4, 764,126},// 14
+ {0x8641,0x865A,0xB0A5,0xB0D2, 890, 26},// 15
+ {0x8661,0x867A,0xB0D3,0xB0F0, 916, 26},// 16
+ {0x8681,0x86FE,0xB0F1,0xB19D, 942,126},// 17
+ {0x8741,0x875A,0xB19E,0xB1B8, 1068, 26},// 18
+ {0x8761,0x877A,0xB1B9,0xB1D5, 1094, 26},// 19
+ {0x8781,0x87FE,0xB1D6,0xB26E, 1120,126},// 20
+ {0x8841,0x885A,0xB26F,0xB28E, 1246, 26},// 21
+ {0x8861,0x887A,0xB28F,0xB2B7, 1272, 26},// 22
+ {0x8881,0x88FE,0xB2B8,0xB363, 1298,126},// 23
+ {0x8941,0x895A,0xB366,0xB38D, 1424, 26},// 24
+ {0x8961,0x897A,0xB38E,0xB3AD, 1450, 26},// 25
+ {0x8981,0x89FE,0xB3AE,0xB444, 1476,126},// 26
+ {0x8A41,0x8A5A,0xB445,0xB466, 1602, 26},// 27
+ {0x8A61,0x8A7A,0xB467,0xB482, 1628, 26},// 28
+ {0x8A81,0x8AFE,0xB483,0xB51D, 1654,126},// 29
+ {0x8B41,0x8B5A,0xB51E,0xB546, 1780, 26},// 30
+ {0x8B61,0x8B7A,0xB547,0xB56A, 1806, 26},// 31
+ {0x8B81,0x8BFE,0xB56B,0xB5FF, 1832,126},// 32
+ {0x8C41,0x8C5A,0xB600,0xB61D, 1958, 26},// 33
+ {0x8C61,0x8C7A,0xB61E,0xB63A, 1984, 26},// 34
+ {0x8C81,0x8CFE,0xB63B,0xB6C2, 2010,126},// 35
+ {0x8D41,0x8D5A,0xB6C3,0xB6DD, 2136, 26},// 36
+ {0x8D61,0x8D7A,0xB6DE,0xB6FA, 2162, 26},// 37
+ {0x8D81,0x8DFE,0xB6FB,0xB79E, 2188,126},// 38
+ {0x8E41,0x8E5A,0xB79F,0xB7C1, 2314, 26},// 39
+ {0x8E61,0x8E7A,0xB7C2,0xB7DD, 2340, 26},// 40
+ {0x8E81,0x8EFE,0xB7DE,0xB884, 2366,126},// 41
+ {0x8F41,0x8F5A,0xB885,0xB89F, 2492, 26},// 42
+ {0x8F61,0x8F7A,0xB8A0,0xB8BD, 2518, 26},// 43
+ {0x8F81,0x8FFE,0xB8BE,0xB957, 2544,126},// 44
+ {0x9041,0x905A,0xB95A,0xB97D, 2670, 26},// 45
+ {0x9061,0x907A,0xB97E,0xB99E, 2696, 26},// 46
+ {0x9081,0x90FE,0xB99F,0xBA46, 2722,126},// 47
+ {0x9141,0x915A,0xBA47,0xBA6F, 2848, 26},// 48
+ {0x9161,0x917A,0xBA72,0xBA92, 2874, 26},// 49
+ {0x9181,0x91FE,0xBA93,0xBB27, 2900,126},// 50
+ {0x9241,0x925A,0xBB28,0xBB52, 3026, 26},// 51
+ {0x9261,0x927A,0xBB53,0xBB71, 3052, 26},// 52
+ {0x9281,0x92FE,0xBB72,0xBC01, 3078,126},// 53
+ {0x9341,0x935A,0xBC03,0xBC35, 3204, 26},// 54
+ {0x9361,0x937A,0xBC36,0xBC59, 3230, 26},// 55
+ {0x9381,0x93FE,0xBC5A,0xBCFD, 3256,126},// 56
+ {0x9441,0x945A,0xBCFE,0xBD1D, 3382, 26},// 57
+ {0x9461,0x947A,0xBD1E,0xBD39, 3408, 26},// 58
+ {0x9481,0x94FE,0xBD3A,0xBDD1, 3434,126},// 59
+ {0x9541,0x955A,0xBDD2,0xBDF1, 3560, 26},// 60
+ {0x9561,0x957A,0xBDF2,0xBE13, 3586, 26},// 61
+ {0x9581,0x95FE,0xBE15,0xBEB7, 3612,126},// 62
+ {0x9641,0x965A,0xBEB8,0xBED3, 3738, 26},// 63
+ {0x9661,0x967A,0xBED5,0xBEF5, 3764, 26},// 64
+ {0x9681,0x96FE,0xBEF6,0xBF82, 3790,126},// 65
+ {0x9741,0x975A,0xBF83,0xBF9D, 3916, 26},// 66
+ {0x9761,0x977A,0xBF9E,0xBFB8, 3942, 26},// 67
+ {0x9781,0x97FE,0xBFB9,0xC03F, 3968,126},// 68
+ {0x9841,0x985A,0xC040,0xC05B, 4094, 26},// 69
+ {0x9861,0x987A,0xC05D,0xC079, 4120, 26},// 70
+ {0x9881,0x98FE,0xC07A,0xC12E, 4146,126},// 71
+ {0x9941,0x995A,0xC132,0xC157, 4272, 26},// 72
+ {0x9961,0x997A,0xC159,0xC17B, 4298, 26},// 73
+ {0x9981,0x99FE,0xC17C,0xC223, 4324,126},// 74
+ {0x9A41,0x9A5A,0xC224,0xC245, 4450, 26},// 75
+ {0x9A61,0x9A7A,0xC246,0xC266, 4476, 26},// 76
+ {0x9A81,0x9AFE,0xC267,0xC30F, 4502,126},// 77
+ {0x9B41,0x9B5A,0xC310,0xC332, 4628, 26},// 78
+ {0x9B61,0x9B7A,0xC333,0xC34D, 4654, 26},// 79
+ {0x9B81,0x9BFE,0xC34E,0xC3DA, 4680,126},// 80
+ {0x9C41,0x9C5A,0xC3DB,0xC3FE, 4806, 26},// 81
+ {0x9C61,0x9C7A,0xC3FF,0xC41A, 4832, 26},// 82
+ {0x9C81,0x9CFE,0xC41B,0xC4A9, 4858,126},// 83
+ {0x9D41,0x9D5A,0xC4AA,0xC4C5, 4984, 26},// 84
+ {0x9D61,0x9D7A,0xC4C6,0xC4DF, 5010, 26},// 85
+ {0x9D81,0x9DFE,0xC4E0,0xC594, 5036,126},// 86
+ {0x9E41,0x9E5A,0xC596,0xC5B6, 5162, 26},// 87
+ {0x9E61,0x9E7A,0xC5B7,0xC5E7, 5188, 26},// 88
+ {0x9E81,0x9EFE,0xC5E8,0xC6A6, 5214,126},// 89
+ {0x9F41,0x9F5A,0xC6A8,0xC6CE, 5340, 26},// 90
+ {0x9F61,0x9F7A,0xC6CF,0xC6F2, 5366, 26},// 91
+ {0x9F81,0x9FFE,0xC6F3,0xC7B7, 5392,126},// 92
+ {0xA041,0xA05A,0xC7B8,0xC7DC, 5518, 26},// 93
+ {0xA061,0xA07A,0xC7DE,0xC7FA, 5544, 26},// 94
+ {0xA081,0xA0FE,0xC7FB,0xC8A4, 5570,126},// 95
+ {0xA141,0xA15A,0xC8A5,0xC8C1, 5696, 26},// 96
+ {0xA161,0xA17A,0xC8C2,0xC8E5, 5722, 26},// 97
+ {0xA181,0xA1A0,0xC8E6,0xC90E, 5748, 32},// 98
+ {0xA241,0xA25A,0xC910,0xC92B, 5780, 26},// 99
+ {0xA261,0xA27A,0xC92D,0xC947, 5806, 26},// 100
+ {0xA281,0xA2A0,0xC948,0xC96F, 5832, 32},// 101
+ {0xA341,0xA35A,0xC971,0xC98F, 5864, 26},// 102
+ {0xA361,0xA37A,0xC991,0xC9AE, 5890, 26},// 103
+ {0xA381,0xA3A0,0xC9AF,0xC9DB, 5916, 32},// 104
+ {0xA441,0xA45A,0xC9DE,0xCA04, 5948, 26},// 105
+ {0xA461,0xA47A,0xCA05,0xCA25, 5974, 26},// 106
+ {0xA481,0xA4A0,0xCA26,0xCA46, 6000, 32},// 107
+ {0xA4A1,0xA4FE,0x3131,0x318E, 6032, 94},// 108 íê¸ ì모ì
+ {0xA541,0xA55A,0xCA47,0xCA6A, 6126, 26},// 109
+ {0xA561,0xA57A,0xCA6B,0xCA86, 6152, 26},// 110
+ {0xA581,0xA5A0,0xCA87,0xCAA7, 6178, 32},// 111
+ {0xA641,0xA65A,0xCAA8,0xCAC5, 6210, 26},// 112
+ {0xA661,0xA67A,0xCAC6,0xCAE7, 6236, 26},// 113
+ {0xA681,0xA6A0,0xCAE8,0xCB0A, 6262, 32},// 114
+ {0xA741,0xA75A,0xCB0B,0xCB29, 6294, 26},// 115
+ {0xA761,0xA77A,0xCB2A,0xCB44, 6320, 26},// 116
+ {0xA781,0xA7A0,0xCB45,0xCB6C, 6346, 32},// 117
+ {0xA841,0xA85A,0xCB6D,0xCB88, 6378, 26},// 118
+ {0xA861,0xA87A,0xCB89,0xCBA3, 6404, 26},// 119
+ {0xA881,0xA8A0,0xCBA4,0xCBC4, 6430, 32},// 120
+ {0xA941,0xA95A,0xCBC5,0xCBDF, 6462, 26},// 121
+ {0xA961,0xA97A,0xCBE0,0xCBFC, 6488, 26},// 122
+ {0xA981,0xA9A0,0xCBFD,0xCC24, 6514, 32},// 123
+ {0xAA41,0xAA5A,0xCC25,0xCC4E, 6546, 26},// 124
+ {0xAA61,0xAA7A,0xCC4F,0xCC72, 6572, 26},// 125
+ {0xAA81,0xAAA0,0xCC73,0xCC93, 6598, 32},// 126
+ {0xAB41,0xAB5A,0xCC94,0xCCB9, 6630, 26},// 127
+ {0xAB61,0xAB7A,0xCCBA,0xCCDA, 6656, 26},// 128
+ {0xAB81,0xABA0,0xCCDB,0xCCFD, 6682, 32},// 129
+ {0xAC41,0xAC5A,0xCCFE,0xCD20, 6714, 26},// 130
+ {0xAC61,0xAC7A,0xCD21,0xCD3E, 6740, 26},// 131
+ {0xAC81,0xACA0,0xCD3F,0xCD5F, 6766, 32},// 132
+ {0xAD41,0xAD5A,0xCD61,0xCD80, 6798, 26},// 133
+ {0xAD61,0xAD7A,0xCD81,0xCD9F, 6824, 26},// 134
+ {0xAD81,0xADA0,0xCDA0,0xCDC5, 6850, 32},// 135
+ {0xAE41,0xAE5A,0xCDC6,0xCDE1, 6882, 26},// 136
+ {0xAE61,0xAE7A,0xCDE2,0xCE02, 6908, 26},// 137
+ {0xAE81,0xAEA0,0xCE03,0xCE2B, 6934, 32},// 138
+ {0xAF41,0xAF5A,0xCE2C,0xCE49, 6966, 26},// 139
+ {0xAF61,0xAF7A,0xCE4A,0xCE6C, 6992, 26},// 140
+ {0xAF81,0xAFA0,0xCE6E,0xCE99, 7018, 32},// 141
+ {0xB041,0xB05A,0xCE9A,0xCEBA, 7050, 26},// 142
+ {0xB061,0xB07A,0xCEBB,0xCED5, 7076, 26},// 143
+ {0xB081,0xB0A0,0xCED6,0xCEFF, 7102, 32},// 144
+ {0xB0A1,0xB0FE,0xAC00,0xAD06, 7134, 94},// 145
+ {0xB141,0xB15A,0xCF02,0xCF23, 7228, 26},// 146
+ {0xB161,0xB17A,0xCF25,0xCF44, 7254, 26},// 147
+ {0xB181,0xB1A0,0xCF45,0xCF6C, 7280, 32},// 148
+ {0xB1A1,0xB1FE,0xAD0C,0xAE78, 7312, 94},// 149
+ {0xB241,0xB25A,0xCF6D,0xCF8D, 7406, 26},// 150
+ {0xB261,0xB27A,0xCF8E,0xCFA9, 7432, 26},// 151
+ {0xB281,0xB2A0,0xCFAA,0xCFCB, 7458, 32},// 152
+ {0xB2A1,0xB2FE,0xAE79,0xB059, 7490, 94},// 153
+ {0xB341,0xB35A,0xCFCC,0xCFE9, 7584, 26},// 154.
+ {0xB361,0xB37A,0xCFEA,0xD00A, 7610, 26},// 155
+ {0xB381,0xB3A0,0xD00B,0xD02C, 7636, 32},// 156
+ {0xB3A1,0xB3FE,0xB05D,0xB1DD, 7668, 94},// 157
+ {0xB441,0xB45A,0xD02E,0xD04F, 7762, 26},// 158.
+ {0xB461,0xB47A,0xD051,0xD06F, 7788, 26},// 159
+ {0xB481,0xB4A0,0xD071,0xD094, 7814, 32},// 160
+ {0xB4A1,0xB4FE,0xB1DF,0xB365, 7846, 94},// 161
+ {0xB541,0xB55A,0xD095,0xD0B2, 7940, 26},// 162.
+ {0xB561,0xB57A,0xD0B3,0xD0DA, 7966, 26},// 163
+ {0xB581,0xB5A0,0xD0DB,0xD104, 7992, 32},// 164
+ {0xB5A1,0xB5FE,0xB367,0xB538, 8024, 94},// 165
+ {0xB641,0xB65A,0xD105,0xD11F, 8118, 26},// 166.
+ {0xB661,0xB67A,0xD120,0xD13E, 8144, 26},// 167
+ {0xB681,0xB6A0,0xD13F,0xD16D, 8170, 32},// 168
+ {0xB6A1,0xB6FE,0xB540,0xB797, 8202, 94},// 169
+ {0xB741,0xB75A,0xD16E,0xD18A, 8296, 26},// 170.
+ {0xB761,0xB77A,0xD18B,0xD1A7, 8322, 26},// 171
+ {0xB781,0xB7A0,0xD1A9,0xD1CF, 8348, 32},// 172
+ {0xB7A1,0xB7FE,0xB798,0xB969, 8380, 94},// 173
+ {0xB841,0xB85A,0xD1D0,0xD1EA, 8474, 26},// 174.
+ {0xB861,0xB87A,0xD1EB,0xD206, 8500, 26},// 175
+ {0xB881,0xB8A0,0xD208,0xD229, 8526, 32},// 176
+ {0xB8A1,0xB8FE,0xB96B,0xBAFC, 8558, 94},// 177
+ {0xB941,0xB95A,0xD22A,0xD24C, 8652, 26},// 178.
+ {0xB961,0xB97A,0xD24D,0xD268, 8678, 26},// 179
+ {0xB981,0xB9A0,0xD269,0xD28C, 8704, 32},// 180
+ {0xB9A1,0xB9FE,0xBB00,0xBC97, 8736, 94},// 181
+ {0xBA41,0xBA5A,0xD28D,0xD2AD, 8830, 26},// 182.
+ {0xBA61,0xBA7A,0xD2AE,0xD2D1, 8856, 26},// 183
+ {0xBA81,0xBAA0,0xD2D2,0xD2FA, 8882, 32},// 184
+ {0xBAA1,0xBAFE,0xBC99,0xBE64, 8914, 94},// 185
+ {0xBB41,0xBB5A,0xD2FB,0xD323, 9008, 26},// 186.
+ {0xBB61,0xBB7A,0xD324,0xD349, 9034, 26},// 187
+ {0xBB81,0xBBA0,0xD34A,0xD369, 9060, 32},// 188
+ {0xBBA1,0xBBFE,0xBE68,0xC0E4, 9092, 94},// 189
+ {0xBC41,0xBC5A,0xD36A,0xD387, 9186, 26},// 190.
+ {0xBC61,0xBC7A,0xD388,0xD3AE, 9212, 26},// 191
+ {0xBC81,0xBCA0,0xD3AF,0xD3D6, 9238, 32},// 192
+ {0xBCA1,0xBCFE,0xC0E5,0xC22D, 9270, 94},// 193
+ {0xBD41,0xBD5A,0xD3D7,0xD3F7, 9364, 26},// 194.
+ {0xBD61,0xBD7A,0xD3F8,0xD416, 9390, 26},// 195
+ {0xBD81,0xBDA0,0xD417,0xD437, 9416, 32},// 196
+ {0xBDA1,0xBDFE,0xC22F,0xC430, 9448, 94},// 197
+ {0xBE41,0xBE5A,0xD438,0xD453, 9542, 26},// 198.
+ {0xBE61,0xBE7A,0xD454,0xD472, 9568, 26},// 199
+ {0xBE81,0xBEA0,0xD473,0xD49D, 9594, 32},// 200
+ {0xBEA1,0xBEFE,0xC434,0xC5CE, 9626, 94},// 201
+ {0xBF41,0xBF5A,0xD49E,0xD4B8, 9720, 26},// 202.
+ {0xBF61,0xBF7A,0xD4B9,0xD4D5, 9746, 26},// 203
+ {0xBF81,0xBFA0,0xD4D6,0xD4FC, 9772, 32},// 204
+ {0xBFA1,0xBFFE,0xC5D0,0xC6E8, 9804, 94},// 205
+ {0xC041,0xC05A,0xD4FE,0xD51D, 9898, 26},// 206.
+ {0xC061,0xC07A,0xD51E,0xD537, 9924, 26},// 207
+ {0xC081,0xC0A0,0xD538,0xD563, 9950, 32},// 208
+ {0xC0A1,0xC0FE,0xC6E9,0xC80A, 9982, 94},// 209
+ {0xC141,0xC15A,0xD564,0xD58B,10076, 26},// 210.
+ {0xC161,0xC17A,0xD58C,0xD5A7,10102, 26},// 211
+ {0xC181,0xC1A0,0xD5A8,0xD5C7,10128, 32},// 212
+ {0xC1A1,0xC1FE,0xC810,0xC9D3,10160, 94},// 213
+ {0xC241,0xC25A,0xD5CA,0xD5EE,10254, 26},// 214.
+ {0xC261,0xC27A,0xD5EF,0xD612,10280, 26},// 215
+ {0xC281,0xC2A0,0xD616,0xD63B,10306, 32},// 216
+ {0xC2A1,0xC2FE,0xC9D5,0xCC3B,10338, 94},// 217
+ {0xC341,0xC35A,0xD63D,0xD661,10432, 26},// 218.
+ {0xC361,0xC37A,0xD662,0xD680,10458, 26},// 219
+ {0xC381,0xC3A0,0xD681,0xD6AA,10484, 32},// 220
+ {0xC3A1,0xC3FE,0xCC3C,0xCE35,10516, 94},// 221
+ {0xC441,0xC45A,0xD6AB,0xD6CB,10610, 26},// 222.
+ {0xC461,0xC47A,0xD6CD,0xD6ED,10636, 26},// 223
+ {0xC481,0xC4A0,0xD6EE,0xD714,10662, 32},// 224
+ {0xC4A1,0xC4FE,0xCE58,0xD03C,10694, 94},// 225
+ {0xC541,0xC55A,0xD715,0xD739,10788, 26},// 226.
+ {0xC561,0xC57A,0xD73A,0xD75E,10814, 26},// 227
+ {0xC581,0xC5A0,0xD75F,0xD78B,10840, 32},// 228
+ {0xC5A1,0xC5FE,0xD044,0xD25C,10872, 94},// 229
+ {0xC641,0xC652,0xD78D,0xD7A3,10966, 18},// 230.
+ {0xC6A1,0xC6FE,0xD264,0xD401,10984, 94},// 231
+ {0xC7A1,0xC7FE,0xD408,0xD620,11078, 94},// 232
+ {0xC8A1,0xC8FE,0xD624,0xD79D,11172, 94} // 233
+}; // 11266 codes
+
+/*
+
+(ì ëì½ë ìì±í íê¸ì½ë) = 0xAC00 + 28*21*(ì´ì±ì¸ë±ì¤) + 28*(ì¤ì±ì¸ë±ì¤) + (ì¢
ì±ì¸ë±ì¤)
+
+
+ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
+ì´ ã± ã² ã´ ã· ã¸ ã¹ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
+ì¤ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
¡ ã
¢ ã
£
+ì¢
X ã± ã² ã±ã
ã´ ã´ã
ã´ã
ã· ã¹ ã¹ã± ã¹ã
ã¹ã
ã¹ã
ã¹ã
ã¹ã
ã¹ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
+
+ ìì©ì¡°í©í
ì´ë¸ from FLBP-8SR IBM 2Byte (F)
+ ----------------------------------------
+ 10ì§ 2ì§ ì´ì± ì¤ì± ì¢
ì±
+ ----------------------------------------
+ 0 00000 ë¶ê° ë¶ê° ë¶ê°
+ 1 00001 ì±ì ë¶ê° ë¶ê°
+ 2 00010 ã± ì±ì ã±
+ 3 00011 ã² ã
ã²
+ ----------------------------------------
+ 4 00100 ã´ ã
ã±ã
+ 5 00101 ã· ã
ã´
+ 6 00110 㸠ã
ã´ã
+ 7 00111 ã¹ ã
ã´ã
+ ----------------------------------------
+ 8 01000 ã
ë¶ê° ã·
+ 9 01001 ã
ë¶ê° ã¹
+ 10 01010 ã
ã
ã¹ã±
+ 11 01011 ã
ã
ã¹ã
+ ----------------------------------------
+ 12 01100 ã
ã
ã¹ã
+ 13 01101 ã
ã
ã¹ã
+ 14 01110 ã
ã
ã¹ã
+ 15 01111 ã
ã
ã¹ã
+ ----------------------------------------
+ 16 10000 ã
ë¶ê° ã¹ã
+ 17 10001 ã
ë¶ê° ã
+ 18 10010 ã
ã
<ã
>
+ 19 10011 ã
ã
ã
+ ----------------------------------------
+ 20 10100 ã
ã
ã
ã
+ 21 10101 íì ã
ã
+ 22 10110 íì ã
ã
+ 23 10111 íì ã
ã
+ ----------------------------------------
+ 24 11000 íì ë¶ê° ã
+ 25 11001 íì ë¶ê° ã
+ 26 11010 íì ã
ã
+ 27 11011 íì ã
¡ ã
+ ----------------------------------------
+ 28 11100 íì ã
¢ ã
+ 29 11101 íì ã
£ ã
+ 30 11110 íì <ã> <ã>
+ 31 11111 ë¶ê° <ã> ë¶ê°
+ ----------------------------------------
+
+*/
+// ------------------------------------------------------------------------------------------------------------------
+// unicode -> ì´,ì¤,ì±ê°ì¼ë¡ ë³íí -> KSSM ë³íì íìí í
ì´ë¸
+// ------------------------------------------------------------------------------------------------------------------
+// KSSM ì½ëì²´ê³ììë ë±ì를 ííí기 ìí´ì ì´ì±ê³¼ ì¤ì±ìë FILL ì´ ìë ë°ë©´ì
+// unicode ìì ì´ì±ì´ ìë ê²½ì°ì ì¤ì±ì´ ìë ê²½ì°ë ìë¤
+//
+// unicode ì¶ì¶ ì´ì± ì¸ë±ì¤ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
+// 㱠㲠㴠㷠㸠㹠ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
+const unsigned short _u2j_cho[]={2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20};
+// unicode ì¶ì¶ ì¤ì± ì¸ë±ì¤ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+// ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
¡ ã
¢ ã
£
+const unsigned short _u2j_jung[]={3, 4, 5, 6, 7,10,11,12, 13,14,15,18,19,20,21,22,23,26,27,28,29};
+// unicode ì¶ì¶ ì¢
ì± ì¸ë±ì¤ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
+// ì± ã± ã² ã³ ã´ ãµ ã¶ ã· ã¹ ãº ã» ã¼ ã½ ã¾ ã¿ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
+const unsigned short _u2j_jong[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29};
+
+
+// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
+// ë¶ ì± ã± ã² ã´ ã· ã¸ ã¹ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
í í í í í í í í í í ë¶
+// 1 2
+const unsigned short _j2u_cho[]={99,50, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,80,80,80,80,80,80,80,80,80,80,99};
+// ë¶ ë¶ ì± ã
ã
ã
ã
ã
ë¶ ë¶ ã
ã
ã
ã
ã
ã
ë¶ ë¶ ã
ã
ã
ã
ã
ã
ë¶ ë¶ ã
ã
¡ ã
¢ ã
£ ã ã
+// 2 3
+const unsigned short _j2u_jung[]={99,99,50, 0, 1, 2, 3, 4,99,99, 5, 6, 7, 8, 9,10,99,99, 11,12,13,14,15,16,99,99,17,18,19,20,99,99};
+// ë¶ ì± ã± ã² ã³ ã´ ãµ ã¶ ã· ã¹ ãº ã» ã¼ ã½ ã¾ ã¿ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã ë¶
+// 1 2
+const unsigned short _j2u_jong[]={99, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,99,17,18,19,20,21,22,23,24,25,26,27,99,99};
+
+
+
+// ------------------------------------------------------------------------------------------------------------------
+// U+FFA1 ~ U+FFDC ì íê¸ì모ìì ìí ë³íí
ì´ë¸
+const unsigned short _ffa1_ffdc[]={
+ // KSSM U+ CP949
+ 0x8841,// 0 0xffa1 0xa4a1 ;ã±;
+ 0x8C41,// 1 0xffa2 0xa4a2 ;ã²;
+ 0x8444,// 2 0xffa3 0xa4a3 ;ã³;
+ 0x9041,// 3 0xffa4 0xa4a4 ;ã´;
+ 0x8446,// 4 0xffa5 0xa4a5 ;ãµ;
+ 0x8447,// 5 0xffa6 0xa4a6 ;ã¶;
+ 0x9441,// 6 0xffa7 0xa4a7 ;ã·;
+ 0x9841,// 7 0xffa8 0xa4a8 ;ã¸;
+ 0x9C41,// 8 0xffa9 0xa4a9 ;ã¹;
+ 0x844A,// 9 0xffaa 0xa4aa ;ãº;
+ 0x844B,// 10 0xffab 0xa4ab ;ã»;
+ 0x844C,// 11 0xffac 0xa4ac ;ã¼;
+ 0x844D,// 12 0xffad 0xa4ad ;ã½;
+ 0x844E,// 13 0xffae 0xa4ae ;ã¾;
+ 0x844F,// 14 0xffaf 0xa4af ;ã¿;
+ 0x8450,// 15 0xffb0 0xa4b0 ;ã
;
+ 0xA041,// 16 0xffb1 0xa4b1 ;ã
;
+ 0xA441,// 17 0xffb2 0xa4b2 ;ã
;
+ 0xA841,// 18 0xffb3 0xa4b3 ;ã
;
+ 0x8454,// 19 0xffb4 0xa4b4 ;ã
;
+ 0xAC41,// 20 0xffb5 0xa4b5 ;ã
;
+ 0xB041,// 21 0xffb6 0xa4b6 ;ã
;
+ 0xB441,// 22 0xffb7 0xa4b7 ;ã
;
+ 0xB841,// 23 0xffb8 0xa4b8 ;ã
;
+ 0xBC41,// 24 0xffb9 0xa4b9 ;ã
;
+ 0xC041,// 25 0xffba 0xa4ba ;ã
;
+ 0xC441,// 26 0xffbb 0xa4bb ;ã
;
+ 0xC841,// 27 0xffbc 0xa4bc ;ã
;
+ 0xCC41,// 28 0xffbd 0xa4bd ;ã
;
+ 0xD041,// 29 0xffbe 0xa4be ;ã
;
+ 0x0000,// 30 0xffbf
+ 0x0000,// 31 0xffc0
+ 0x0000,// 32 0xffc1
+ 0x8461,// 33 0xffc2 0xa4bf ;ã
;
+ 0x8481,// 34 0xffc3 0xa4c0 ;ã
;
+ 0x84A1,// 35 0xffc4 0xa4c1 ;ã
;
+ 0x84C1,// 36 0xffc5 0xa4c2 ;ã
;
+ 0x84E1,// 37 0xffc6 0xa4c3 ;ã
;
+ 0x8541,// 38 0xffc7 0xa4c4 ;ã
;
+ 0x0000,// 39 0xffc8
+ 0x0000,// 40 0xffc9
+ 0x8561,// 41 0xffca 0xa4c5 ;ã
;
+ 0x8581,// 42 0xffcb 0xa4c6 ;ã
;
+ 0x85A1,// 43 0xffcc 0xa4c7 ;ã
;
+ 0x85C1,// 44 0xffcd 0xa4c8 ;ã
;
+ 0x85E1,// 45 0xffce 0xa4c9 ;ã
;
+ 0x8641,// 46 0xffcf 0xa4ca ;ã
;
+ 0x0000,// 47 0xffd0
+ 0x0000,// 48 0xffd1
+ 0x8661,// 49 0xffd2 0xa4cb ;ã
;
+ 0x8681,// 50 0xffd3 0xa4cc ;ã
;
+ 0x86A1,// 51 0xffd4 0xa4cd ;ã
;
+ 0x86C1,// 52 0xffd5 0xa4ce ;ã
;
+ 0x86E1,// 53 0xffd6 0xa4cf ;ã
;
+ 0x8741,// 54 0xffd7 0xa4d0 ;ã
;
+ 0x0000,// 55 0xffd8
+ 0x0000,// 56 0xffd9
+ 0x8761,// 57 0xffda 0xa4d1 ;ã
¡;
+ 0x8781,// 58 0xffdb 0xa4d2 ;ã
¢;
+ 0x87A1,// 59 0xffdc 0xa4d3 ;ã
£;
+ 0x0000 // 60
+};
+
+const unsigned char _ua000[17]={
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13,145,149,153
+};
+const unsigned short _ub000[67]={
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68,153,155,157,161,
+ 165,169,173,177,181,185,189
+};
+const unsigned char _uc000[94]={
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99,100,101,102,103,104,105,106,107,
+ 109,110,111,112,113,114,115,116,117,118,
+ 119,120,121,122,123,124,125,126,127,128,
+ 129,130,131,132,133,134,135,136,137,138,
+ 139,140,141,142,143,144,146,147,148,150,
+ 151,152,154,155,189,193,197,201,205,209,
+ 213,217,221,225
+};
+
+const unsigned char _ud000[62]={
+ 155,156,158,159,160,162,163,164,166,167,
+ 168,170,171,172,174,175,176,178,179,180,
+ 182,183,184,186,187,188,190,191,192,194,
+ 195,196,198,199,200,202,203,204,206,207,
+ 208,210,211,212,214,215,216,218,219,220,
+ 222,223,224,225,226,227,228,229,230,231,
+ 232,233
+};
+
+// differential table of unicodes for each oem pages
+
+const unsigned char _OEM_DATA[]={
+ 0x00,0x01,0x02,0x01,0x05,0x01,0x01,0x01,0x01,0x09,
+ 0x06,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x04,0x01,0x01,
+ 0x00,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x02,
+ 0x01,0x01,0x01,0x01,0x03,0x05,0x01,0x05,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x01,
+ 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
+ 0x01,0x02,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x03,0x02,0x02,0x01,0x04,0x02,0x03,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x03,0x02,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x03,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x01,0x05,0x01,0x01,0x01,0x04,0x02,0x03,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x01,0x04,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x03,0x02,0x01,
+ 0x00,0x01,0x01,0x03,0x02,0x03,0x01,0x01,0x02,0x04,
+ 0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x03,
+ 0x04,0x01,0x01,0x02,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x01,0x02,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x03,0x01,0x01,0x01,0x02,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x02,0x04,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x03,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x02,0x02,0x02,0x01,0x01,0x01,0x04,0x02,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x04,0x02,0x01,0x05,0x01,
+ 0x00,0x01,0x01,0x03,0x06,0x02,0x04,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
+ 0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x03,0x01,0x01,0x02,0x03,0x01,
+ 0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x04,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x04,
+ 0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x03,0x01,0x02,0x01,0x01,0x04,0x01,0x01,0x01,
+ 0x01,0x03,0x02,0x03,0x01,0x01,0x02,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x01,0x01,0x01,0x02,0x04,0x02,0x01,0x06,0x01,0x01,
+ 0x04,0x06,0x01,0x01,0x04,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x02,
+ 0x01,0x03,0x03,0x01,0x01,0x01,
+ 0x00,0x02,0x02,0x02,0x01,0x02,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
+ 0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x02,0x02,0x01,
+ 0x01,0x03,0x02,0x02,0x02,0x02,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x03,0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x03,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x05,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x04,
+ 0x00,0x01,0x01,0x01,0x04,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x03,
+ 0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x04,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x05,
+ 0x01,0x01,0x05,0x01,0x02,0x01,
+ 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
+ 0x01,0x01,0x04,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x03,0x01,
+ 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x06,0x01,0x01,0x01,
+ 0x01,0x03,0x02,0x03,0x01,0x02,0x04,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x05,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x02,0x01,0x01,0x01,
+ 0x00,0x03,0x02,0x03,0x01,0x01,0x01,0x04,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x04,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x03,0x01,0x01,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x04,0x02,0x01,0x05,0x01,0x01,0x01,0x01,0x03,0x02,
+ 0x02,0x01,0x01,0x02,0x03,0x01,
+ 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x03,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x04,0x02,0x02,0x01,
+ 0x06,0x01,0x06,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
+ 0x01,0x02,0x01,0x03,0x01,0x02,
+ 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x04,0x01,0x01,0x02,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x03,0x02,0x01,0x01,0x01,
+ 0x01,0x03,0x02,0x03,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x04,0x01,0x01,0x02,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x04,0x02,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x05,0x01,0x01,0x01,0x01,
+ 0x03,0x02,0x02,0x01,0x01,0x03,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x02,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x04,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x04,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x00,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x04,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x03,0x01,0x05,0x01,0x01,0x01,0x01,
+ 0x03,0x04,0x01,0x01,0x02,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x06,0x01,
+ 0x03,0x03,0x01,0x01,0x01,0x03,
+ 0x00,0x01,0x01,0x01,0x02,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x01,0x01,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x02,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x03,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x03,0x02,0x02,0x02,0x03,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x01,
+ 0x01,0x01,0x01,0x01,0x04,0x02,0x02,0x01,0x01,0x01,
+ 0x02,0x03,0x03,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x03,0x01,
+ 0x00,0x01,0x01,0x04,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x03,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x03,0x01,0x03,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x00,0x02,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x02,0x01,0x01,0x01,0x04,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x04,0x04,0x01,0x01,0x01,0x04,0x04,0x01,0x01,
+ 0x03,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x02,0x01,0x01,
+ 0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x00,0x03,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x00,0x03,0x05,0x01,0x01,0x01,0x01,0x08,0x02,0x02,
+ 0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x02,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x04,0x02,0x01,0x01,0x02,0x03,
+ 0x01,0x01,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x01,0x01,0x04,0x02,0x01,0x04,0x02,0x02,0x02,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x01,0x01,0x04,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x02,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x02,0x03,0x02,0x09,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x04,0x01,0x01,0x01,0x04,0x05,
+ 0x01,0x01,0x02,0x03,0x01,0x02,0x04,0x02,0x01,0x01,
+ 0x01,0x01,0x03,0x05,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x02,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x03,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x03,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x03,0x02,0x04,0x01,0x01,0x04,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x02,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x04,0x01,0x01,0x01,
+ 0x01,0x03,
+ 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x03,
+ 0x01,0x03,
+ 0x00,0x01,0x02,0x02,0x02,0x01,0x02,0x01,0x01,0x01,
+ 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x02,
+ 0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x02,0x01,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,
+ 0x03,0x01,
+ 0x00,0x01,0x04,0x01,0x02,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x05,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x02,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x02,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x04,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x01,0x03,0x03,0x01,0x01,0x01,0x06,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,
+ 0x04,0x0b,0x02,0x07,0x04,0x04,0x14,0x01,0x03,0x03,
+ 0x01,0x02,0x06,0x01,0x02,0x01,0x01,0x01,0x03,0x01,
+ 0x01,0x01,0x04,0x04,0x08,0x01,0x02,0x01,0x01,0x07,
+ 0x01,0x01,0x02,0x03,0x01,0x08,0x01,0x02,0x01,0x01,
+ 0x04,0x03,0x04,0x04,0x09,0x02,0x09,0x01,0x03,0x03,
+ 0x01,0x02,0x02,0x03,0x01,0x01,0x02,0x02,0x01,0x06,
+ 0x01,0x03,0x04,0x02,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x01,0x01,
+ 0x00,0x01,0x02,0x02,0x07,0x04,0x04,0x09,0x03,0x01,
+ 0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x04,
+ 0x04,0x09,0x02,0x09,0x01,0x03,0x03,0x01,0x01,0x01,
+ 0x05,0x01,0x01,0x02,0x02,0x01,0x06,0x01,0x03,0x04,
+ 0x0c,0x01,0x07,0x13,0x09,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x09,0x04,0x04,0x14,0x01,0x03,0x03,0x01,0x01,
+ 0x07,0x01,0x02,0x02,0x07,0x1c,0x01,0x03,0x03,0x01,
+ 0x02,0x06,0x01,0x02,0x02,0x01,0x04,0x02,0x01,0x01,
+ 0x02,0x04,0x02,0x06,0x01,0x02,0x01,0x01,0x04,0x03,
+ 0x01,0x03,0x04,0x08,
+ 0x00,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x02,0x01,0x01,0x07,0x01,0x07,0x30,0x01,0x01,
+ 0x02,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,
+ 0x0c,0x03,0x02,0x07,0x04,0x04,0x0b,0x01,0x05,0x03,
+ 0x1c,0x01,0x03,0x02,0x02,0x08,0x01,0x02,0x02,0x01,
+ 0x01,0x05,0x01,0x07,0x0c,0x01,0x07,0x01,0x14,0x07,
+ 0x04,0x04,0x08,0x01,0x04,0x07,0x1c,0x01,0x03,0x04,
+ 0x07,0x01,0x01,0x02,0x02,0x01,0x06,0x08,0x0c,0x01,
+ 0x07,0x01,0x03,0x04,0x08,0x01,0x03,0x08,0x04,0x04,
+ 0x08,0x01,0x0b,0x1c,0x01,0x03,0x02,0x02,0x02,0x05,
+ 0x01,0x01,0x02,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x1f,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,
+ 0x01,0x01,0x02,0x03,0x01,0x01,0x01,0x06,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,
+ 0x05,0x23,0x01,0x02,0x01,0x04,0x02,0x01,0x05,0x01,
+ 0x02,0x01,0x01,0x06,0x01,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,0x01,0x03,
+ 0x01,0x03,0x04,0x04,0x18,0x01,0x03,0x04,0x02,0x06,
+ 0x01,0x02,0x02,0x05,0x01,0x01,0x04,0x04,0x0c,0x24,
+ 0x04,0x04,0x08,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x09,0x01,0x03,0x04,0x09,0x02,0x02,0x07,0x01,
+ 0x03,0x03,0x01,0x08,0x01,0x02,0x02,0x07,0x14,0x08,
+ 0x1c,0x04,0x04,0x08,0x01,0x0b,0x01,0x07,0x08,0x01,
+ 0x04,0x07,0x01,0x03,0x04,0x01,0x01,0x06,0x01,0x02,
+ 0x02,0x01,0x04,0x02,0x04,0x04,0x14,0x01,0x03,0x04,
+ 0x02,0x06,0x01,0x02,0x02,0x05,0x02,0x01,0x01,0x02,
+ 0x03,0x01,0x01,0x01,0x01,0x04,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x04,0x01,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x01,0x01,0x07,0x38,0x01,0x01,0x02,0x03,0x01,
+ 0x02,0x01,0x05,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x04,0x01,0x01,0x01,0x01,
+ 0x00,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x02,0x02,0x03,0x02,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x01,0x01,0x07,0x04,0x04,0x0c,0x01,0x07,0x04,
+ 0x18,0x01,0x03,0x03,0x01,0x02,0x02,0x04,0x01,0x02,
+ 0x02,0x02,0x02,0x03,0x04,0x04,0x14,0x14,0x08,0x04,
+ 0x04,0x08,0x01,0x02,0x09,0x1c,0x01,0x03,0x04,0x08,
+ 0x01,0x02,0x02,0x07,0x14,0x08,0x15,0x07,0x04,0x04,
+ 0x09,0x02,0x02,0x07,0x04,0x04,0x08,0x05,0x07,0x01,
+ 0x03,0x03,0x01,0x02,0x06,0x01,0x02,0x02,0x07,0x1c,
+ 0x01,0x03,0x03,0x01,0x08,0x01,0x02,0x01,0x01,0x01,
+ 0x06,0x01,0x03,0x04,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x02,0x01,0x01,0x01,
+ 0x00,0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x02,
+ 0x00,0x01,0x02,0x01,0x01,0x06,0x01,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x01,0x01,0x3f,0x01,0x03,0x04,0x02,
+ 0x01,0x05,0x01,0x02,0x01,0x01,0x06,0x01,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x14,0x24,0x01,
+ 0x03,0x04,0x0d,0x07,0x08,0x14,0x1c,0x04,0x34,0x01,
+ 0x03,0x04,0x07,0x01,0x05,0x23,0x1c,0x04,0x04,0x08,
+ 0x01,0x04,0x23,0x01,0x03,0x03,0x01,0x08,0x01,0x02,
+ 0x09,0x04,0x04,0x08,0x01,0x0b,0x04,0x04,0x08,0x01,
+ 0x02,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x01,
+ 0x01,0x01,0x04,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x01,0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,
+ 0x01,0x03,0x0f,0x02,0x23,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x01,0x01,0x06,0x01,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x01,
+ 0x01,0x07,0x04,0x0d,0x02,0x09,0x01,0x03,0x04,0x08,
+ 0x01,0x02,0x02,0x07,0x04,0x11,0x1b,0x08,0x04,0x04,
+ 0x08,0x01,0x02,0x02,0x07,0x04,0x04,0x09,0x02,0x02,
+ 0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x14,
+ 0x08,0x1c,0x01,0x03,0x04,0x08,0x03,0x02,0x07,0x01,
+ 0x03,0x04,0x08,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,
+ 0x01,0x03,0x01,0x1e,0x01,0x03,0x04,0x08,0x01,0x02,
+ 0x02,0x07,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x06,
+ 0x01,0x02,0x02,0x01,0x03,0x02,0x01,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x01,0x01,0x01,0x06,0x01,0x07,0x0d,
+ 0x23,0x01,0x03,0x04,0x02,0x06,0x01,0x02,0x02,0x01,
+ 0x05,0x01,0x01,0x03,0x04,0x08,0x01,0x02,0x01,0x01,
+ 0x07,0x01,0x03,0x04,0x0b,0x01,0x01,0x02,0x05,0x1c,
+ 0x01,0x02,0x01,0x04,0x02,0x06,0x01,0x02,0x02,0x07,
+ 0x04,0x10,0x01,0x23,
+ 0x00,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,
+ 0x00,0x04,0x09,0x02,0x02,0x07,0x04,0x04,0x09,0x02,
+ 0x09,0x01,0x01,0x02,0x03,0x01,0x01,0x01,0x06,0x01,
+ 0x02,0x02,0x04,0x02,0x01,0x04,0x04,0x09,0x02,0x09,
+ 0x1c,0x04,0x04,0x14,0x04,0x04,0x08,0x03,0x09,0x04,
+ 0x04,0x08,0x03,0x25,0x01,0x03,0x03,0x01,0x02,0x06,
+ 0x01,0x02,0x01,0x01,0x02,0x02,0x03,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x01,0x01,0x01,0x05,0x01,0x02,0x02,
+ 0x04,0x03,0x01,0x03,0x04,0x08,0x01,0x02,0x01,0x01,
+ 0x04,0x03,0x01,0x03,0x0d,0x27,0x01,0x03,0x03,0x01,
+ 0x02,0x06,0x01,0x02,
+ 0x00,0x01,0x01,0x03,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x03,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x02,0x01,
+ 0x00,0x01,0x06,0x01,0x03,0x03,0x01,0x08,0x01,0x02,
+ 0x01,0x01,0x07,0x01,0x03,0x04,0x09,0x02,0x01,0x01,
+ 0x04,0x03,0x04,0x18,0x01,0x01,0x02,0x04,0x08,0x01,
+ 0x02,0x02,0x07,0x04,0x10,0x08,0x14,0x08,0x01,0x03,
+ 0x04,0x08,0x01,0x0b,0x04,0x18,0x01,0x03,0x03,0x01,
+ 0x01,0x01,0x06,0x01,0x02,0x02,0x04,0x01,0x02,0x08,
+ 0x0c,0x08,0x1c,0x01,0x03,0x04,0x0d,0x07,0x04,0x04,
+ 0x08,0x03,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,
+ 0x25,0x01,0x03,0x04,0x02,0x06,0x01,0x02,0x02,0x01,
+ 0x01,0x05,0x01,0x03,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x04,0x02,0x01,0x01,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x03,0x04,0x01,
+ 0x00,0x02,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x02,0x06,0x01,0x02,0x01,0x01,0x06,0x01,0x01,
+ 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x0f,
+ 0x28,0x01,0x03,0x03,0x01,0x08,0x03,0x01,0x01,0x07,
+ 0x15,0x07,0x01,0x0f,0x01,0x02,0x01,0x01,0x23,0x01,
+ 0x03,0x04,0x08,0x01,0x04,0x3f,0x1c,0x15,0x07,0x01,
+ 0x03,0x04,0x08,0x03,0x02,0x5b,0x15,0x07,0x04,0x04,
+ 0x08,0x01,0x27,0x01,0x03,0x04,0x08,0x01,0x02,0x02,
+ 0x07,0x01,0x02,0x01,0x03,0x01,0x01,0x01,0x06,0x01,
+ 0x02,0x01,0x01,0x04,0x03,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x01,0x01,0x07,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x02,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x03,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x04,0x04,
+ 0x08,0x05,0x07,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x01,0x05,0x01,0x02,0x01,0x01,0x05,0x02,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x01,0x01,0x07,0x04,0x04,0x0d,0x07,
+ 0x01,0x01,0x02,0x04,0x02,0x06,0x01,0x02,0x02,0x04,
+ 0x03,0x01,0x03,0x04,0x0d,0x07,0x04,0x04,0x08,0x03,
+ 0x01,0x08,0x04,0x04,0x08,0x01,0x02,0x09,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x03,0x01,
+ 0x08,0x01,0x02,0x02,
+ 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x02,0x01,0x02,0x14,0x08,0x01,0x03,0x04,0x08,
+ 0x05,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,
+ 0x01,0x07,0x08,0x03,0x02,0x07,0x01,0x03,0x04,0x01,
+ 0x07,0x01,0x02,0x02,0x23,0x01,0x03,0x03,0x01,0x07,
+ 0x01,0x01,0x02,0x02,0x05,0x02,0x01,0x02,0x01,0x04,
+ 0x08,0x01,0x03,0x01,0x06,0x01,0x01,0x03,0x04,0x08,
+ 0x01,0x03,0x01,0x1c,0x23,0x01,0x03,0x04,0x02,0x06,
+ 0x01,0x03,0x01,0x07,0x04,0x04,0x34,0x18,0x01,0x03,
+ 0x03,0x01,0x02,0x06,0x01,0x04,0x07,0x01,0x03,0x10,
+ 0x08,0x14,0x08,0x04,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x03,
+ 0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x08,0x01,0x0b,0x1c,0x01,0x03,0x04,0x08,0x01,
+ 0x04,0x07,0x14,0x08,0x1c,0x04,0x2d,0x07,0x01,0x03,
+ 0x04,0x02,0x05,0x01,0x01,0x0b,0x04,0x04,0x08,0x0c,
+ 0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,
+ 0x01,0x01,0x02,0x01,0x01,0x05,0x01,0x01,0x02,0x01,
+ 0x01,0x04,0x01,0x02,0x01,0x03,0x04,0x08,0x01,0x02,
+ 0x01,0x01,0x07,0x01,0x03,0x04,0x03,0x05,0x01,0x02,
+ 0x02,0x04,0x02,0x01,0x04,0x04,0x09,0x0b,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x01,0x06,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x02,
+ 0x00,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,
+ 0x01,0x02,0x04,0x02,0x01,0x05,0x01,0x01,0x01,0x01,
+ 0x01,0x04,0x01,0x01,0x01,0x04,0x04,0x08,0x01,0x02,
+ 0x01,0x08,0x01,0x03,0x04,0x01,0x01,0x02,0x03,0x01,
+ 0x01,0x02,0x02,0x02,0x05,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x01,0x01,0x07,0x01,0x03,0x0c,0x03,0x02,0x07,
+ 0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x01,
+ 0x01,0x06,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,
+ 0x01,0x03,0x01,0x07,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,
+ 0x00,0x03,0x04,0x08,0x01,0x04,0x07,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x02,0x02,0x05,0x01,0x03,0x04,0x06,0x02,0x01,
+ 0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,
+ 0x04,0x08,0x03,0x09,0x01,0x03,0x04,0x01,0x01,0x05,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x04,0x02,0x01,0x03,
+ 0x02,0x01,0x01,0x02,0x06,0x01,0x02,0x01,0x01,0x01,
+ 0x06,0x01,0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,
+ 0x01,0x03,0x02,0x02,0x08,0x05,0x07,0x04,0x04,0x14,
+ 0x01,0x03,0x04,0x02,
+ 0x00,0x02,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x04,0x01,
+ 0x00,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,
+ 0x00,0x01,0x02,0x02,0x01,0x06,0x01,0x03,0x04,0x08,
+ 0x01,0x02,0x02,0x07,0x04,0x04,0x08,0x01,0x03,0x01,
+ 0x07,0x1c,0x01,0x03,0x04,0x02,0x06,0x01,0x02,0x02,
+ 0x01,0x01,0x04,0x01,0x01,0x07,0x09,0x02,0x02,0x07,
+ 0x14,0x01,0x07,0x04,0x04,0x08,0x01,0x02,0x02,0x07,
+ 0x01,0x03,0x11,0x07,0x01,0x03,0x04,0x01,0x01,0x06,
+ 0x01,0x02,0x02,0x07,0x14,0x08,0x1c,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x09,0x04,0x04,0x08,0x0c,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x02,0x23,0x01,0x03,0x03,0x01,
+ 0x02,0x06,0x01,0x02,
+ 0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
+ 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,
+ 0x00,0x01,0x03,0x01,0x02,0x01,0x03,0x02,0x02,0x03,
+ 0x05,0x01,0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,
+ 0x01,0x02,0x01,0x01,0x07,0x04,0x11,0x23,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x15,0x07,0x14,
+ 0x24,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x02,0x05,
+ 0x01,0x07,0x0c,0x08,0x14,0x08,0x04,0x04,0x08,0x01,
+ 0x20,0x07,0x01,0x03,0x04,0x08,0x01,0x04,0x07,0x14,
+ 0x01,0x23,0x1c,0x1c,0x10,0x03,0x02,0x23,0x01,0x03,
+ 0x04,0x08,0x01,0x04,0x01,0x05,0x01,0x01,0x03,0x02,
+ 0x02,0x08,0x01,0x02,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x02,0x01,0x03,
+ 0x02,0x02,0x01,0x01,0x02,0x01,0x03,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,
+ 0x00,0x01,0x01,0x06,0x01,0x03,0x04,0x08,0x01,0x02,
+ 0x01,0x01,0x07,0x04,0x02,0x02,0x08,0x05,0x23,0x01,
+ 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x02,0x07,0x04,0x10,0x08,0x04,
+ 0x11,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,
+ 0x04,0x04,0x0d,0x23,0x04,0x04,0x08,0x01,0x02,0x02,
+ 0x07,0x10,0x0c,0x01,0x03,0x04,0x08,0x01,0x02,0x02,
+ 0x07,0x14,0x08,0x04,0x18,0x04,0x04,0x08,0x01,0x02,
+ 0x02,0x07,0x04,0x04,0x08,0x05,0x07,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x02,
+ 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x02,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x02,0x01,0x02,0x01,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x02,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,
+ 0x00,0x01,0x03,0x03,0x01,0x01,0x07,0x01,0x02,0x02,
+ 0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,
+ 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x14,
+ 0x23,0x01,0x03,0x03,0x01,0x08,0x01,0x02,0x01,0x01,
+ 0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x04,
+ 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x1c,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,
+ 0x05,0x07,0x15,0x07,0x08,0x14,0x1c,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x02,0x07,0x04,0x04,0x0d,0x07,0x15,
+ 0x07,0x01,0x03,0x04,
+ 0x00,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x03,0x01,0x02,
+ 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
+ 0x02,0x05,0x01,0x01,0x01,0x01,
+ 0x00,0x03,0x02,0x02,0x01,0x01,0x02,0x01,0x02,0x01,
+ 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x03,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x01,
+ 0x00,0x01,0x02,0x02,0x07,0x04,0x04,0x08,0x0c,0x01,
+ 0x03,0x04,0x08,0x01,0x04,0x23,0x01,0x03,0x04,0x08,
+ 0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x01,0x07,0x01,
+ 0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,0x01,0x02,
+ 0x01,0x01,0x07,0x15,0x23,0x01,0x03,0x04,0x02,0x06,
+ 0x01,0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x02,0x07,0x04,0x10,0x08,0x04,0x18,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x02,0x05,0x02,0x04,0x18,0x1c,
+ 0x04,0x0f,0x02,0x07,0x1c,0x01,0x03,0x04,0x08,0x01,
+ 0x02,0x02,0x07,0x14,
+ 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x1c,0x01,0x03,0x04,0x08,0x01,0x04,0x07,0x04,
+ 0x04,0x08,0x05,0x07,0x01,0x03,0x03,0x01,0x02,0x06,
+ 0x01,0x02,0x09,0x04,0x04,0x08,0x01,0x0b,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x01,0x02,0x04,
+ 0x02,0x06,0x01,0x02,0x01,0x01,0x04,0x03,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x37,0x01,
+ 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,
+ 0x04,0x08,0x01,0x02,0x02,0x07,0x04,0x04,0x08,0x01,
+ 0x03,0x01,0x07,0x08,0x09,0x02,0x09,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x02,
+ 0x00,0x15,0x23,0x04,0x18,0x04,0x04,0x09,0x02,0x09,
+ 0x01,0x03,0x03,0x01,0x02,0x06,0x01,0x02,0x02,0x07,
+ 0x15,0x23,0x04,0x04,0x08,0x03,0x09,0x04,0x04,0x08,
+ 0x03,0x02,0x07,0x04,0x04,0x08,0x01,0x02,0x25,0x01,
+ 0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x04,
+ 0x05,0x03,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,
+ 0x01,0x02,0x01,0x01,0x07,0x15,0x23,0x01,0x03,0x04,
+ 0x02,0x06,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,
+ 0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,
+ 0x01,0x01,0x07,0x04,
+ 0x00,0x09,0x0b,0x01,0x03,0x04,0x05,0x03,0x01,0x02,
+ 0x02,0x04,0x03,0x01,0x03,0x04,0x0b,0x02,0x07,0x01,
+ 0x03,0x0f,0x02,0x07,0x01,0x03,0x04,0x09,0x02,0x02,
+ 0x07,0x04,0x04,0x09,0x02,0x09,0x01,0x03,0x04,0x05,
+ 0x03,0x03,0x02,0x07,0x04,0x04,0x08,0x05,0x07,0x01,
+ 0x03,0x04,0x0d,0x07,0x01,0x03,0x04,0x08,0x01,0x02,
+ 0x02,0x07,0x01,0x03,0x04,0x08,0x03,0x02,0x07,0x01,
+ 0x03,0x02,0x01,0x01,0x01,0x07,0x01,0x02,0x02,0x04,
+ 0x03,0x04,0x04,0x08,0x01,0x04,0x07,0x01,0x03,0x04,
+ 0x08,0x01,0x02,0x02
+};
diff --git a/graphics/korfont.cpp b/graphics/korfont.cpp
new file mode 100644
index 0000000000..acc9a41a03
--- /dev/null
+++ b/graphics/korfont.cpp
@@ -0,0 +1,486 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2002-2005 The ScummVM project
+ * ScummVM Kor. - Korean ScummVM Mod.
+ * Copyright (C) 2002-2005 The ScummVM Kor Project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header: /cvsroot/scummvm/scummvm/graphics/font.cpp,v 1.12 2005/06/04 13:19:53 fingolfin Exp $
+ */
+
+#include "scumm/scumm.h"
+#include "graphics/font.h"
+#include "graphics/korfont.h"
+#include "graphics/cp949m.h"
+#include "common/file.h"
+
+namespace Graphics {
+
+ bool checkKorCode(byte hi, byte lo)
+ {
+ // hi: xx
+ // lo: yy
+ if ((0xA1 > lo) || (0xFE < lo)) {
+ return false;
+ }
+ if ((hi >= 0xB0) && (hi <= 0xC8)) {
+ return true;
+ }
+ return false;
+ }
+
+int get_oem_code_page(uint16 code)
+{
+ int i,j,k;
+ if((code>=0x8141)&&(code<=0xc8fe)){
+
+ i = j = k = 0;
+
+ // ì¢ ë íì ìê°ì ë¨ì¶í기 ìí
+
+ k = (int)((code&0x7f00)>>8); // 1~ 72;
+
+ if((k>=1)&&(k<=36)) j = (k-1)*3;
+ else if((k>=37)&&(k<=48)) j = 109 + (k-37)*3;
+ else if((k>=49)&&(k<=70)) j = 146 + (k-49)*4;
+ else j=232;
+
+ for(i=j;i<_CP949_PAGE;i++)
+ {
+ if((code>=cp949[i].first)&&(code<=cp949[i].last))return(i);
+ }
+ }
+ return(-1);
+}
+
+
+uint16 _KS_to_unicode(uint16 ksc)
+{
+ uint16 c,i,j,k;
+ int page;
+ uint16 u,oem,offset,cnt;
+ unsigned char *p;
+
+ c = (ksc << 8) | (ksc >> 8 & 0xFF);
+ u=oem=offset=cnt=0;
+ i=j=k=0;
+ page = get_oem_code_page(c);
+ if(page>=0)
+ {
+ oem = cp949[page].first;
+ u = cp949[page].uc_first;
+ offset = cp949[page].offset;
+ cnt = cp949[page].cnt;
+ p = (unsigned char *)&_OEM_DATA[offset];
+ for(i=0;i<cnt;i++,oem++)
+ {
+ if(oem<c) u+=(*p++);
+ else{
+ if(i) u+=(*p++);
+ break;
+ }
+ }
+ }
+ return(u);
+}
+
+
+FontKorean *FontKorean::createFont(const char * fontFile) {
+ FontKorean *ret = 0;
+
+ // Try ScummVM's font.
+ ret = new FontKoreanSVM();
+ if (ret->loadData(fontFile))
+ return ret;
+ delete ret;
+
+ // Try Wansung font.
+ ret = new FontKoreanWansung();
+ if (ret->loadData(fontFile))
+ return ret;
+ delete ret;
+
+ return 0;
+}
+
+void FontKorean::drawChar(Graphics::Surface &dst, uint16 ch, int x, int y, uint32 c1, uint32 c2) const {
+ drawChar(dst.getBasePtr(x, y), ch, dst.pitch, dst.format.bytesPerPixel, c1, c2, dst.w - x, dst.h - y);
+}
+
+FontKoreanBase::FontKoreanBase()
+ : _drawMode(kDefaultMode), _flippedMode(false), _fontWidth(16), _fontHeight(16) {
+}
+
+void FontKoreanBase::setDrawingMode(DrawingMode mode) {
+ if (hasFeature(1 << mode))
+ _drawMode = mode;
+ else
+ warning("Unsupported drawing mode selected");
+}
+
+void FontKoreanBase::toggleFlippedMode(bool enable) {
+ if (hasFeature(kFeatFlipped))
+ _flippedMode = enable;
+ else
+ warning("Flipped mode unsupported by this font");
+}
+
+uint FontKoreanBase::getFontHeight() const {
+ switch (_drawMode) {
+ case kOutlineMode:
+ return _fontHeight + 2;
+
+ case kDefaultMode:
+ return _fontHeight;
+
+ default:
+ return _fontHeight + 1;
+ }
+}
+
+uint FontKoreanBase::getMaxFontWidth() const {
+ switch (_drawMode) {
+ case kOutlineMode:
+ return _fontWidth + 2;
+
+ case kDefaultMode:
+ return _fontWidth;
+
+ default:
+ return _fontWidth + 1;
+ }
+}
+
+uint FontKoreanBase::getCharWidth(uint16 ch) const {
+ if (isASCII(ch))
+ //return ((_drawMode == kOutlineMode) ? 10 : (_drawMode == kDefaultMode ? 8 : 9));
+ return ((_drawMode == kOutlineMode) ? _fontWidth / 2 + 2 : (_drawMode == kDefaultMode ? _fontWidth / 2 : _fontWidth / 2 + 1));
+ else
+ return getMaxFontWidth();
+}
+
+template<typename Color>
+void FontKoreanBase::blitCharacter(const uint8 *glyph, const int w, const int h, uint8 *dst, int pitch, Color c) const {
+ uint8 bitPos = 0;
+ uint8 mask = 0;
+
+ for (int y = 0; y < h; ++y) {
+ Color *d = (Color *)dst;
+ dst += pitch;
+
+ bitPos &= _bitPosNewLineMask;
+ for (int x = 0; x < w; ++x) {
+ if (!(bitPos % 8))
+ mask = *glyph++;
+
+ if (mask & 0x80)
+ *d = c;
+
+ ++d;
+ ++bitPos;
+ mask <<= 1;
+ }
+ }
+}
+
+void FontKoreanBase::createOutline(uint8 *outline, const uint8 *glyph, const int w, const int h) const {
+ const int glyphPitch = (w + 7) / 8;
+ const int outlinePitch = (w + 9) / 8;
+
+ uint8 *line1 = outline + 0 * outlinePitch;
+ uint8 *line2 = outline + 1 * outlinePitch;
+ uint8 *line3 = outline + 2 * outlinePitch;
+
+ for (int y = 0; y < h; ++y) {
+ for (int x = 0; x < glyphPitch; ++x) {
+ const uint8 mask = *glyph++;
+
+ const uint8 b1 = mask | (mask >> 1) | (mask >> 2);
+ const uint8 b2 = (mask << 7) | ((mask << 6) & 0xC0);
+
+ line1[x] |= b1;
+ line2[x] |= b1;
+ line3[x] |= b1;
+
+ if (x + 1 < outlinePitch) {
+ line1[x + 1] |= b2;
+ line2[x + 1] |= b2;
+ line3[x + 1] |= b2;
+ }
+ }
+
+ line1 += outlinePitch;
+ line2 += outlinePitch;
+ line3 += outlinePitch;
+ }
+}
+
+void FontKoreanBase::drawChar(void *dst, uint16 ch, int pitch, int bpp, uint32 c1, uint32 c2, int maxW, int maxH) const {
+ const uint8 *glyphSource = 0;
+ int width = 0, height = 0;
+ int outlineExtraWidth = 2, outlineExtraHeight = 2;
+ int outlineXOffset = 0, outlineYOffset = 0;
+
+ if (isASCII(ch)) {
+ glyphSource = getCharData(ch);
+ //width = 8;
+ width = _fontWidth / 2;
+ height = _fontHeight;
+ } else {
+ glyphSource = getCharData(ch);
+ width = _fontWidth;
+ height = _fontHeight;
+ }
+
+ if (maxW != -1 && maxW < width) {
+ width = maxW;
+ outlineExtraWidth = 0;
+ outlineXOffset = 1;
+ }
+
+ if (maxH != -1 && maxH < height) {
+ height = maxH;
+ outlineExtraHeight = 0;
+ outlineYOffset = 1;
+ }
+
+ if (width <= 0 || height <= 0)
+ return;
+
+ if (!glyphSource) {
+ warning("FontKoreanBase::drawChar: Font does not offer data for %02X %02X", ch & 0xFF, ch >> 8);
+ return;
+ }
+
+ uint8 outline[18 * 18];
+ if (_drawMode == kOutlineMode) {
+ memset(outline, 0, sizeof(outline));
+ createOutline(outline, glyphSource, width, height);
+ }
+
+ if (bpp == 1) {
+ if (_drawMode == kOutlineMode) {
+ blitCharacter<uint8>(outline, width + outlineExtraWidth, height + outlineExtraHeight, (uint8 *)dst, pitch, c2);
+ blitCharacter<uint8>(glyphSource, width - outlineXOffset, height - outlineYOffset, (uint8 *)dst + pitch + 1, pitch, c1);
+ } else {
+ if (_drawMode != kDefaultMode) {
+ blitCharacter<uint8>(glyphSource, width - outlineXOffset, height, ((uint8 *)dst) + 1, pitch, c2);
+ blitCharacter<uint8>(glyphSource, width, height - outlineYOffset, ((uint8 *)dst) + pitch, pitch, c2);
+ if (_drawMode == kShadowMode)
+ blitCharacter<uint8>(glyphSource, width - outlineXOffset, height - outlineYOffset, ((uint8 *)dst) + pitch + 1, pitch, c2);
+ }
+
+ blitCharacter<uint8>(glyphSource, width, height, (uint8 *)dst, pitch, c1);
+ }
+ } else if (bpp == 2) {
+ if (_drawMode == kOutlineMode) {
+ blitCharacter<uint16>(outline, width + outlineExtraWidth, height + outlineExtraHeight, (uint8 *)dst, pitch, c2);
+ blitCharacter<uint16>(glyphSource, width - outlineXOffset, height - outlineYOffset, (uint8 *)dst + pitch + 2, pitch, c1);
+ } else {
+ if (_drawMode != kDefaultMode) {
+ blitCharacter<uint16>(glyphSource, width - outlineXOffset, height, ((uint8 *)dst) + 2, pitch, c2);
+ blitCharacter<uint16>(glyphSource, width, height - outlineYOffset, ((uint8 *)dst) + pitch, pitch, c2);
+ if (_drawMode == kShadowMode)
+ blitCharacter<uint16>(glyphSource, width - outlineXOffset, height - outlineYOffset, ((uint8 *)dst) + pitch + 2, pitch, c2);
+ }
+
+ blitCharacter<uint16>(glyphSource, width, height, (uint8 *)dst, pitch, c1);
+ }
+ } else {
+ error("FontKoreanBase::drawChar: unsupported bpp: %d", bpp);
+ }
+}
+
+bool FontKoreanBase::isASCII(uint16 ch) const {
+ if (ch >= 0xFF)
+ return false;
+ else if (ch <= 0x7F)
+ return true;
+ else
+ return false;
+}
+
+// ScummVM Korean font
+
+FontKoreanSVM::FontKoreanSVM()
+ : _fontData16x16(0), _fontData16x16Size(0), _fontData8x16(0), _fontData8x16Size(0),
+ _fontData8x8(0), _fontData8x8Size(0) {
+
+ //_fontWidth = 16;
+ //_fontHeight = 16;
+}
+
+FontKoreanSVM::~FontKoreanSVM() {
+ delete[] _fontData16x16;
+ delete[] _fontData8x16;
+ delete[] _fontData8x8;
+}
+
+bool FontKoreanSVM::loadData(const char *fontFile) {
+ Common::SeekableReadStream *data = SearchMan.createReadStreamForMember(fontFile);
+ if (!data)
+ return false;
+
+ uint32 magic1 = data->readUint32BE();
+ uint32 magic2 = data->readUint32BE();
+
+ if (magic1 != MKTAG('S', 'C', 'V', 'M') || magic2 != MKTAG('S', 'J', 'I', 'S')) {
+ delete data;
+ return false;
+ }
+
+ uint32 version = data->readUint32BE();
+ if (version != kKoreanFontVersion) {
+ warning("Korean font version mismatch, expected: %d found: %u", kKoreanFontVersion, version);
+ delete data;
+ return false;
+ }
+ uint numChars16x16 = data->readUint16BE();
+ uint numChars8x16 = data->readUint16BE();
+ uint numChars8x8 = data->readUint16BE();
+
+ if (_fontWidth == 16) {
+ _fontData16x16Size = numChars16x16 * 32;
+ _fontData16x16 = new uint8[_fontData16x16Size];
+ assert(_fontData16x16);
+ data->read(_fontData16x16, _fontData16x16Size);
+
+ _fontData8x16Size = numChars8x16 * 16;
+ _fontData8x16 = new uint8[numChars8x16 * 16];
+ assert(_fontData8x16);
+ for (uint i=0; i < _fontData8x16Size; i++)
+ data->read(&_fontData8x16[i], 2);
+ } else {
+ data->skip(numChars16x16 * 32);
+ data->skip(numChars8x16 * 32);
+
+ _fontData8x8Size = numChars8x8 * 8;
+ _fontData8x8 = new uint8[_fontData8x8Size];
+ assert(_fontData8x8);
+ data->read(_fontData8x8, _fontData8x8Size);
+ }
+
+ bool retValue = !data->err();
+ delete data;
+ return retValue;
+}
+
+const uint8 *FontKoreanSVM::getCharData(uint16 c) const {
+ if (_fontWidth == 8)
+ return getCharDataPCE(c);
+ else
+ return getCharDataDefault(c);
+}
+
+bool FontKoreanSVM::hasFeature(int feat) const {
+ // Flipped mode is not supported since the hard coded table (taken from SCUMM 5 FM-TOWNS)
+ // is set up for font sizes of 8/16. This mode is also not required at the moment, since
+ // there aren't any SCUMM 5 PC-Engine games.
+ static const int features16 = kFeatDefault | kFeatOutline | kFeatShadow | kFeatFMTownsShadow | kFeatFlipped;
+ static const int features8 = kFeatDefault | kFeatOutline | kFeatShadow | kFeatFMTownsShadow;
+ return (((_fontWidth == 8) ? features8 : features16) & feat) ? true : false;
+}
+
+const uint8 *FontKoreanSVM::getCharDataPCE(uint16 c) const {
+ if (isASCII(c))
+ return 0;
+
+ //c += 256; // HACK
+ if(!checkKorCode(c % 256, c / 256))
+ //if (c < 0xAC00 || c >= 0xD7A4)
+ return 0;
+ uint16 uc = _KS_to_unicode(c);
+
+ const uint offset = (uc - 0xAC00) * 8;
+ assert(offset + 96 <= _fontData8x8Size); // 11184 * 8
+ return _fontData8x8 + offset;
+}
+
+const uint8 *FontKoreanSVM::getCharDataDefault(uint16 c) const {
+ if (isASCII(c)) {
+ const uint offset = c * 16;
+ assert(offset <= _fontData8x16Size);
+ return _fontData8x16 + offset;
+ } else {
+ //c += 256; // HACK
+ if(!checkKorCode(c % 256, c / 256))
+ //if (c < 0xAC00 || c >= 0xD7B0)
+ return 0;
+ uint16 uc = _KS_to_unicode(c);
+
+ const uint offset = (uc - 0xAC00) * 32;
+ assert(offset + 384 <= _fontData16x16Size); // 11184 * 32
+ return _fontData16x16 + offset;
+ }
+}
+
+// Korean Wansung font
+
+bool FontKoreanWansung::loadData(const char *fontFile) {
+ Common::SeekableReadStream *data = SearchMan.createReadStreamForMember(fontFile);
+ if (!data)
+ return false;
+
+ data->skip(1);
+ _fontShadow = data->readByte();
+ _fontWidth = data->readByte();
+ _fontHeight = data->readByte();
+ _fontDataSize = ((_fontWidth + 7) / 8) * _fontHeight * kFontNumChars;
+ _fontData = new byte[_fontDataSize];
+ data->read(_fontData, _fontDataSize);
+
+ englishLoadData("english.fnt");
+
+ bool retValue = !data->err();
+ delete data;
+ return retValue;
+}
+
+const uint8 *FontKoreanWansung::getCharData(uint16 ch) const {
+ if (isASCII(ch) && _englishFontData) {
+ const uint offset = ((_englishFontWidth + 7) / 8) * _englishFontHeight * (ch & 0xFF);
+ assert(offset <= _englishFontDataSize);
+ return _englishFontData + offset;
+ } else {
+ int idx = ((ch % 256) - 0xb0) * 94 + (ch / 256) - 0xa1;
+ return _fontData + ((_fontWidth + 7) / 8) * _fontHeight * idx;
+ }
+}
+
+bool FontKoreanWansung::hasFeature(int feat) const {
+ static const int features = kFeatDefault | kFeatOutline | kFeatShadow | kFeatFMTownsShadow | kFeatFlipped;
+ return (features & feat) ? true : false;
+}
+
+// English font
+
+bool FontKoreanWansung::englishLoadData(const char *fontFile) {
+ Common::SeekableReadStream *data = SearchMan.createReadStreamForMember(fontFile);
+ if (!data)
+ return false;
+
+ data->skip(2);
+ _englishFontWidth = data->readByte();
+ _englishFontHeight = data->readByte();
+ _englishFontDataSize = ((_englishFontWidth + 7) / 8) * _englishFontHeight * eFontNumChars;
+ _englishFontData = new byte[_englishFontDataSize];
+ data->read(_englishFontData, _englishFontDataSize);
+
+ bool retValue = !data->err();
+ delete data;
+ return retValue;
+}
+
+} // End of namespace Graphics
diff --git a/graphics/korfont.h b/graphics/korfont.h
new file mode 100644
index 0000000000..ca21b90945
--- /dev/null
+++ b/graphics/korfont.h
@@ -0,0 +1,231 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2002-2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header: /cvsroot/scummvm/scummvm/graphics/font.h,v 1.8 2005/05/15 16:13:52 fingolfin Exp $
+ */
+#ifndef GRAPHICS_KORFONT_H
+#define GRAPHICS_KORFONT_H
+
+#include "common/str.h"
+#include "graphics/surface.h"
+
+namespace Graphics {
+
+ int getKorFontWidth();
+ int getKorFontHeight();
+ bool checkKorCode(byte hi, byte lo);
+ void loadKoreanGUIFont();
+ void unloadKoreanGUIFont();
+ void drawKorChar(Surface *dst, uint32 chr, int tx, int ty, uint32 color);
+ int get_oem_code_page(uint16 code);
+ uint16 _KS_to_unicode(uint16 ksc);
+
+/**
+ * A font that is able to draw Korean encoded characters.
+ */
+class FontKorean {
+public:
+ virtual ~FontKorean() {}
+
+ /**
+ * Creates the first Korean font, which ROM/font file is present.
+ * It will also call loadData, so the user can just start
+ * using the font.
+ *
+ * The last file tried is ScummVM's Korean.FNT file.
+ */
+ static FontKorean *createFont(const char * fontFile);
+
+ /**
+ * Load the font data.
+ */
+ virtual bool loadData(const char *fontFile) = 0;
+
+ /**
+ * Enable drawing with outline or shadow if supported by the Font.
+ *
+ * After changing outline state, getFontHeight and getMaxFontWidth / getCharWidth might return
+ * different values!
+ */
+ enum DrawingMode {
+ kDefaultMode,
+ kOutlineMode,
+ kShadowMode
+ };
+
+ virtual void setDrawingMode(DrawingMode mode) {}
+
+ /**
+ * Enable flipped character drawing if supported by the Font (e.g. in the MI1 circus scene after Guybrush gets shot out of the cannon).
+ */
+ virtual void toggleFlippedMode(bool enable) {}
+
+ /**
+ * Set spacing between characters and lines. This affects font height / char width
+ */
+ virtual void setCharSpacing(int spacing) {}
+ virtual void setLineSpacing(int spacing) {}
+
+ /**
+ * Returns the height of the font.
+ */
+ virtual uint getFontHeight() const = 0;
+
+ /**
+ * Returns the max. width of the font.
+ */
+ virtual uint getMaxFontWidth() const = 0;
+
+ /**
+ * Returns the width of a specific character.
+ */
+ virtual uint getCharWidth(uint16 ch) const = 0;
+
+ /**
+ * Draws a Korean encoded character on the given surface.
+ */
+ void drawChar(Graphics::Surface &dst, uint16 ch, int x, int y, uint32 c1, uint32 c2) const;
+
+ /**
+ * Draws a Korean char on the given raw buffer.
+ *
+ * @param dst pointer to the destination
+ * @param ch character to draw (in little endian)
+ * @param pitch pitch of the destination buffer (size in *bytes*)
+ * @param bpp bytes per pixel of the destination buffer
+ * @param c1 forground color
+ * @param c2 outline color
+ * @param maxW max draw width (to ensure that character drawing takes place within surface boundaries), -1 = no check
+ * @param maxH max draw height (to ensure that character drawing takes place within surface boundaries), -1 = no check
+ */
+ virtual void drawChar(void *dst, uint16 ch, int pitch, int bpp, uint32 c1, uint32 c2, int maxW, int maxH) const = 0;
+};
+
+/**
+ * A base class to render monochrome Korean fonts.
+ */
+class FontKoreanBase : public FontKorean {
+public:
+ FontKoreanBase();
+
+ virtual void setDrawingMode(DrawingMode mode);
+
+ virtual void toggleFlippedMode(bool enable);
+
+ virtual uint getFontHeight() const;
+
+ virtual uint getMaxFontWidth() const;
+
+ virtual uint getCharWidth(uint16 ch) const;
+
+ virtual void drawChar(void *dst, uint16 ch, int pitch, int bpp, uint32 c1, uint32 c2, int maxW, int maxH) const;
+private:
+ template<typename Color>
+ void blitCharacter(const uint8 *glyph, const int w, const int h, uint8 *dst, int pitch, Color c) const;
+ void createOutline(uint8 *outline, const uint8 *glyph, const int w, const int h) const;
+
+protected:
+ DrawingMode _drawMode;
+ bool _flippedMode;
+ int _fontWidth, _fontHeight;
+ uint8 _bitPosNewLineMask;
+
+ bool isASCII(uint16 ch) const;
+
+ virtual const uint8 *getCharData(uint16 c) const = 0;
+
+ enum DrawingFeature {
+ kFeatDefault = 1 << 0,
+ kFeatOutline = 1 << 1,
+ kFeatShadow = 1 << 2,
+ kFeatFMTownsShadow = 1 << 3,
+ kFeatFlipped = 1 << 4
+ };
+
+ virtual bool hasFeature(int feat) const = 0;
+};
+
+/**
+ * Our custom SJIS Korean FNT.
+ */
+class FontKoreanSVM : public FontKoreanBase {
+public:
+ FontKoreanSVM();
+ ~FontKoreanSVM();
+ /**
+ * Load the font data from "KOREAN.FNT".
+ */
+ bool loadData(const char *fontFile);
+private:
+ uint8 *_fontData16x16;
+ uint _fontData16x16Size;
+
+ uint8 *_fontData8x16;
+ uint _fontData8x16Size;
+
+ uint8 *_fontData8x8;
+ uint _fontData8x8Size;
+
+ virtual const uint8 *getCharData(uint16 c) const;
+
+ bool hasFeature(int feat) const;
+
+ const uint8 *getCharDataPCE(uint16 c) const;
+ const uint8 *getCharDataDefault(uint16 c) const;
+
+ enum {
+ kKoreanFontVersion = 3
+ };
+};
+
+/**
+ * Korean Wansung compatible font.
+ *
+ * This is used in KYRA, SCUMM and SCI.
+ */
+class FontKoreanWansung : public FontKoreanBase {
+public:
+ /**
+ * Loads the ROM data from "KOREAN#.FNT".
+ */
+ bool loadData(const char *fontFile);
+private:
+ enum {
+ eFontNumChars = 256,
+ kFontNumChars = 2530
+ };
+
+ int _fontShadow;
+ uint8 *_fontData;
+ uint _fontDataSize;
+
+ int _englishFontWidth;
+ int _englishFontHeight;
+ uint8 *_englishFontData = NULL;
+ uint _englishFontDataSize;
+
+
+ virtual const uint8 *getCharData(uint16 c) const;
+
+ bool hasFeature(int feat) const;
+
+ bool englishLoadData(const char *fontFile);
+};
+
+} // End of namespace Graphics
+
+#endif
diff --git a/graphics/module.mk b/graphics/module.mk
index d21274b944..8bcff4a94e 100644
--- a/graphics/module.mk
+++ b/graphics/module.mk
@@ -12,6 +12,7 @@ MODULE_OBJS := \
fonts/newfont.o \
fonts/ttf.o \
fonts/winfont.o \
+ korfont.o \
larryScale.o \
maccursor.o \
macgui/datafiles.o \
Commit: 36f02ab3b9eaaf15a907be2deaaa6961efa80faf
https://github.com/scummvm/scummvm/commit/36f02ab3b9eaaf15a907be2deaaa6961efa80faf
Author: wonst719 (wonst719 at gmail.com)
Date: 2020-11-08T22:26:31+02:00
Commit Message:
SCI: Add missing const to GfxText32 methods
Changed paths:
engines/sci/graphics/text32.cpp
engines/sci/graphics/text32.h
diff --git a/engines/sci/graphics/text32.cpp b/engines/sci/graphics/text32.cpp
index 4ce1f4fdd6..2c0a2fc96a 100644
--- a/engines/sci/graphics/text32.cpp
+++ b/engines/sci/graphics/text32.cpp
@@ -300,7 +300,7 @@ void GfxText32::drawFrame(const Common::Rect &rect, const int16 size, const uint
}
}
-void GfxText32::drawChar(uint16 charIndex) {
+void GfxText32::drawChar(const uint16 charIndex) {
SciBitmap &bitmap = *_segMan->lookupBitmap(_bitmap);
byte *pixels = bitmap.getPixels();
@@ -313,7 +313,7 @@ int16 GfxText32::getScaledFontHeight() const {
return (_font->getHeight() * scriptHeight + _yResolution - 1) / _yResolution;
}
-uint16 GfxText32::getCharWidth(uint16 charIndex, const bool doScaling) const {
+uint16 GfxText32::getCharWidth(const uint16 charIndex, const bool doScaling) const {
uint16 width = _font->getCharWidth(charIndex);
if (doScaling) {
width = scaleUpWidth(width);
diff --git a/engines/sci/graphics/text32.h b/engines/sci/graphics/text32.h
index 6ff2dddfc5..6548bd3de1 100644
--- a/engines/sci/graphics/text32.h
+++ b/engines/sci/graphics/text32.h
@@ -119,7 +119,7 @@ private:
void drawFrame(const Common::Rect &rect, const int16 size, const uint8 color, const bool doScaling);
- void drawChar(uint16 charIndex);
+ void drawChar(const uint16 charIndex);
void drawText(const uint index, uint length);
/**
@@ -246,7 +246,7 @@ public:
/**
* Gets the width of a character.
*/
- uint16 getCharWidth(uint16 charIndex, const bool doScaling) const;
+ uint16 getCharWidth(const uint16 charIndex, const bool doScaling) const;
/**
* Retrieves the width and height of a block of text.
Commit: dc41e0e3ccf8e6436ff38a0159219ee977575487
https://github.com/scummvm/scummvm/commit/dc41e0e3ccf8e6436ff38a0159219ee977575487
Author: wonst719 (wonst719 at gmail.com)
Date: 2020-11-08T22:26:31+02:00
Commit Message:
SCI: Remove leftover code from scummvm-kor
Changed paths:
engines/sci/graphics/frameout.cpp
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 62ea468ad8..1ce4e0989f 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -76,13 +76,6 @@ GfxFrameout::GfxFrameout(SegManager *segMan, GfxPalette32 *palette, GfxTransitio
if (g_sci->getGameId() == GID_PHANTASMAGORIA) {
_currentBuffer.create(630, 450, Graphics::PixelFormat::createFormatCLUT8());
} else if (_isHiRes) {
-// #ifdef SCUMMVMKOR
-// // GK1 Korean pathed version
-// if (g_sci->getGameId() == GID_GK1 && g_sci->getLanguage() == Common::KO_KOR) {
-// _currentBuffer.create(640, 400, Graphics::PixelFormat::createFormatCLUT8());
-// }
-// else
-// #endif
_currentBuffer.create(640, 480, Graphics::PixelFormat::createFormatCLUT8());
} else {
_currentBuffer.create(320, 200, Graphics::PixelFormat::createFormatCLUT8());
Commit: 25da3603e4c5ab6d4072ce407c20c2576e8525e3
https://github.com/scummvm/scummvm/commit/25da3603e4c5ab6d4072ce407c20c2576e8525e3
Author: wonst719 (wonst719 at gmail.com)
Date: 2020-11-08T22:26:31+02:00
Commit Message:
SCI: Korean code cleanup
- Remove unused function definitions
- Remove unnecessary #include
- Fix comment
- Fix license header
Changed paths:
graphics/korfont.cpp
graphics/korfont.h
diff --git a/graphics/korfont.cpp b/graphics/korfont.cpp
index acc9a41a03..ced17f2e86 100644
--- a/graphics/korfont.cpp
+++ b/graphics/korfont.cpp
@@ -1,7 +1,8 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2002-2005 The ScummVM project
- * ScummVM Kor. - Korean ScummVM Mod.
- * Copyright (C) 2002-2005 The ScummVM Kor Project
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -15,12 +16,10 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $Header: /cvsroot/scummvm/scummvm/graphics/font.cpp,v 1.12 2005/06/04 13:19:53 fingolfin Exp $
*/
-#include "scumm/scumm.h"
#include "graphics/font.h"
#include "graphics/korfont.h"
#include "graphics/cp949m.h"
@@ -28,18 +27,18 @@
namespace Graphics {
- bool checkKorCode(byte hi, byte lo)
- {
- // hi: xx
- // lo: yy
- if ((0xA1 > lo) || (0xFE < lo)) {
- return false;
- }
- if ((hi >= 0xB0) && (hi <= 0xC8)) {
- return true;
- }
+bool checkKorCode(byte hi, byte lo)
+{
+ // hi: xx
+ // lo: yy
+ if ((0xA1 > lo) || (0xFE < lo)) {
return false;
}
+ if ((hi >= 0xB0) && (hi <= 0xC8)) {
+ return true;
+ }
+ return false;
+}
int get_oem_code_page(uint16 code)
{
diff --git a/graphics/korfont.h b/graphics/korfont.h
index ca21b90945..fab328b60a 100644
--- a/graphics/korfont.h
+++ b/graphics/korfont.h
@@ -1,5 +1,8 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2002-2005 The ScummVM project
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -13,10 +16,10 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $Header: /cvsroot/scummvm/scummvm/graphics/font.h,v 1.8 2005/05/15 16:13:52 fingolfin Exp $
*/
+
#ifndef GRAPHICS_KORFONT_H
#define GRAPHICS_KORFONT_H
@@ -24,15 +27,10 @@
#include "graphics/surface.h"
namespace Graphics {
-
- int getKorFontWidth();
- int getKorFontHeight();
- bool checkKorCode(byte hi, byte lo);
- void loadKoreanGUIFont();
- void unloadKoreanGUIFont();
- void drawKorChar(Surface *dst, uint32 chr, int tx, int ty, uint32 color);
- int get_oem_code_page(uint16 code);
- uint16 _KS_to_unicode(uint16 ksc);
+
+bool checkKorCode(byte hi, byte lo);
+int get_oem_code_page(uint16 code);
+uint16 _KS_to_unicode(uint16 ksc);
/**
* A font that is able to draw Korean encoded characters.
@@ -160,7 +158,7 @@ protected:
};
/**
- * Our custom SJIS Korean FNT.
+ * Our custom Korean FNT.
*/
class FontKoreanSVM : public FontKoreanBase {
public:
@@ -194,8 +192,6 @@ private:
/**
* Korean Wansung compatible font.
- *
- * This is used in KYRA, SCUMM and SCI.
*/
class FontKoreanWansung : public FontKoreanBase {
public:
Commit: 71d0362b7574fa08e3899b19ab97974b1910830f
https://github.com/scummvm/scummvm/commit/71d0362b7574fa08e3899b19ab97974b1910830f
Author: wonst719 (wonst719 at gmail.com)
Date: 2020-11-08T22:26:31+02:00
Commit Message:
GRAPHICS: Rewrite Korean codepage conversion code
Changed paths:
R graphics/cp949m.h
graphics/korfont.cpp
graphics/korfont.h
diff --git a/graphics/cp949m.h b/graphics/cp949m.h
deleted file mode 100644
index a29400be87..0000000000
--- a/graphics/cp949m.h
+++ /dev/null
@@ -1,1704 +0,0 @@
-//
-// CP-949 Map definition by xsnake
-// ideas on 2014-02-12
-// validated 2014-02-18
-//
-#define _CP949_PAGE 234
-
-typedef struct {
- unsigned short first;
- unsigned short last;
- unsigned short uc_first;
- unsigned short uc_last;
- unsigned short offset;
- unsigned short cnt;
-} _CP949MAP;
-//
-// KS2350 ì±íì í
ì´ë¸ì 2350 X 2 = 4700 ë°ì´í¸ ( ì½ 5KB )
-// cp949 íê¸, íê¸ì모ë§
-// í¹ì문ì, íì ì ì¸
-//
-// ì¤ì í
ì´ë¸íì 11172 X 2 = 22344 ( 21.8KB )
-// ì¶ì¶ í
ì´ë¸íì 11266 X 1 = 11266
-// 12 X 234 = 2808
-// 384
-// 122
-// 240
-// -----------------
-// 14820 ( 14.5 KB )
-//
-// ì ììì¤ì ì½ 66% í¬ê¸° í
ì´ë¸ë¡ì¨ ëì¼í¨ê³¼
-//
-
-const _CP949MAP cp949[ _CP949_PAGE ]={
-// LOCALE UNICODE
-// ---------------------------
- {0x8141,0x815A,0xAC02,0xAC34, 0, 26},// 0
- {0x8161,0x817A,0xAC35,0xAC55, 26, 26},// 1
- {0x8181,0x81FE,0xAC56,0xAD13, 52,126},// 2
- {0x8241,0x825A,0xAD14,0xAD33, 178, 26},// 3
- {0x8261,0x827A,0xAD36,0xAD57, 204, 26},// 4
- {0x8281,0x82FE,0xAD59,0xADF7, 230,126},// 5
- {0x8341,0x835A,0xADFA,0xAE1C, 356, 26},// 6
- {0x8361,0x837A,0xAE1D,0xAE3C, 382, 26},// 7
- {0x8381,0x83FE,0xAE3D,0xAEE5, 408,126},// 8
- {0x8441,0x845A,0xAEE6,0xAF05, 534, 26},// 9
- {0x8461,0x847A,0xAF06,0xAF23, 560, 26},// 10
- {0x8481,0x84FE,0xAF24,0xAFBE, 586,126},// 11
- {0x8541,0x855A,0xAFBF,0xAFE1, 712, 26},// 12
- {0x8561,0x857A,0xAFE2,0xB003, 738, 26},// 13
- {0x8581,0x85FE,0xB005,0xB0A4, 764,126},// 14
- {0x8641,0x865A,0xB0A5,0xB0D2, 890, 26},// 15
- {0x8661,0x867A,0xB0D3,0xB0F0, 916, 26},// 16
- {0x8681,0x86FE,0xB0F1,0xB19D, 942,126},// 17
- {0x8741,0x875A,0xB19E,0xB1B8, 1068, 26},// 18
- {0x8761,0x877A,0xB1B9,0xB1D5, 1094, 26},// 19
- {0x8781,0x87FE,0xB1D6,0xB26E, 1120,126},// 20
- {0x8841,0x885A,0xB26F,0xB28E, 1246, 26},// 21
- {0x8861,0x887A,0xB28F,0xB2B7, 1272, 26},// 22
- {0x8881,0x88FE,0xB2B8,0xB363, 1298,126},// 23
- {0x8941,0x895A,0xB366,0xB38D, 1424, 26},// 24
- {0x8961,0x897A,0xB38E,0xB3AD, 1450, 26},// 25
- {0x8981,0x89FE,0xB3AE,0xB444, 1476,126},// 26
- {0x8A41,0x8A5A,0xB445,0xB466, 1602, 26},// 27
- {0x8A61,0x8A7A,0xB467,0xB482, 1628, 26},// 28
- {0x8A81,0x8AFE,0xB483,0xB51D, 1654,126},// 29
- {0x8B41,0x8B5A,0xB51E,0xB546, 1780, 26},// 30
- {0x8B61,0x8B7A,0xB547,0xB56A, 1806, 26},// 31
- {0x8B81,0x8BFE,0xB56B,0xB5FF, 1832,126},// 32
- {0x8C41,0x8C5A,0xB600,0xB61D, 1958, 26},// 33
- {0x8C61,0x8C7A,0xB61E,0xB63A, 1984, 26},// 34
- {0x8C81,0x8CFE,0xB63B,0xB6C2, 2010,126},// 35
- {0x8D41,0x8D5A,0xB6C3,0xB6DD, 2136, 26},// 36
- {0x8D61,0x8D7A,0xB6DE,0xB6FA, 2162, 26},// 37
- {0x8D81,0x8DFE,0xB6FB,0xB79E, 2188,126},// 38
- {0x8E41,0x8E5A,0xB79F,0xB7C1, 2314, 26},// 39
- {0x8E61,0x8E7A,0xB7C2,0xB7DD, 2340, 26},// 40
- {0x8E81,0x8EFE,0xB7DE,0xB884, 2366,126},// 41
- {0x8F41,0x8F5A,0xB885,0xB89F, 2492, 26},// 42
- {0x8F61,0x8F7A,0xB8A0,0xB8BD, 2518, 26},// 43
- {0x8F81,0x8FFE,0xB8BE,0xB957, 2544,126},// 44
- {0x9041,0x905A,0xB95A,0xB97D, 2670, 26},// 45
- {0x9061,0x907A,0xB97E,0xB99E, 2696, 26},// 46
- {0x9081,0x90FE,0xB99F,0xBA46, 2722,126},// 47
- {0x9141,0x915A,0xBA47,0xBA6F, 2848, 26},// 48
- {0x9161,0x917A,0xBA72,0xBA92, 2874, 26},// 49
- {0x9181,0x91FE,0xBA93,0xBB27, 2900,126},// 50
- {0x9241,0x925A,0xBB28,0xBB52, 3026, 26},// 51
- {0x9261,0x927A,0xBB53,0xBB71, 3052, 26},// 52
- {0x9281,0x92FE,0xBB72,0xBC01, 3078,126},// 53
- {0x9341,0x935A,0xBC03,0xBC35, 3204, 26},// 54
- {0x9361,0x937A,0xBC36,0xBC59, 3230, 26},// 55
- {0x9381,0x93FE,0xBC5A,0xBCFD, 3256,126},// 56
- {0x9441,0x945A,0xBCFE,0xBD1D, 3382, 26},// 57
- {0x9461,0x947A,0xBD1E,0xBD39, 3408, 26},// 58
- {0x9481,0x94FE,0xBD3A,0xBDD1, 3434,126},// 59
- {0x9541,0x955A,0xBDD2,0xBDF1, 3560, 26},// 60
- {0x9561,0x957A,0xBDF2,0xBE13, 3586, 26},// 61
- {0x9581,0x95FE,0xBE15,0xBEB7, 3612,126},// 62
- {0x9641,0x965A,0xBEB8,0xBED3, 3738, 26},// 63
- {0x9661,0x967A,0xBED5,0xBEF5, 3764, 26},// 64
- {0x9681,0x96FE,0xBEF6,0xBF82, 3790,126},// 65
- {0x9741,0x975A,0xBF83,0xBF9D, 3916, 26},// 66
- {0x9761,0x977A,0xBF9E,0xBFB8, 3942, 26},// 67
- {0x9781,0x97FE,0xBFB9,0xC03F, 3968,126},// 68
- {0x9841,0x985A,0xC040,0xC05B, 4094, 26},// 69
- {0x9861,0x987A,0xC05D,0xC079, 4120, 26},// 70
- {0x9881,0x98FE,0xC07A,0xC12E, 4146,126},// 71
- {0x9941,0x995A,0xC132,0xC157, 4272, 26},// 72
- {0x9961,0x997A,0xC159,0xC17B, 4298, 26},// 73
- {0x9981,0x99FE,0xC17C,0xC223, 4324,126},// 74
- {0x9A41,0x9A5A,0xC224,0xC245, 4450, 26},// 75
- {0x9A61,0x9A7A,0xC246,0xC266, 4476, 26},// 76
- {0x9A81,0x9AFE,0xC267,0xC30F, 4502,126},// 77
- {0x9B41,0x9B5A,0xC310,0xC332, 4628, 26},// 78
- {0x9B61,0x9B7A,0xC333,0xC34D, 4654, 26},// 79
- {0x9B81,0x9BFE,0xC34E,0xC3DA, 4680,126},// 80
- {0x9C41,0x9C5A,0xC3DB,0xC3FE, 4806, 26},// 81
- {0x9C61,0x9C7A,0xC3FF,0xC41A, 4832, 26},// 82
- {0x9C81,0x9CFE,0xC41B,0xC4A9, 4858,126},// 83
- {0x9D41,0x9D5A,0xC4AA,0xC4C5, 4984, 26},// 84
- {0x9D61,0x9D7A,0xC4C6,0xC4DF, 5010, 26},// 85
- {0x9D81,0x9DFE,0xC4E0,0xC594, 5036,126},// 86
- {0x9E41,0x9E5A,0xC596,0xC5B6, 5162, 26},// 87
- {0x9E61,0x9E7A,0xC5B7,0xC5E7, 5188, 26},// 88
- {0x9E81,0x9EFE,0xC5E8,0xC6A6, 5214,126},// 89
- {0x9F41,0x9F5A,0xC6A8,0xC6CE, 5340, 26},// 90
- {0x9F61,0x9F7A,0xC6CF,0xC6F2, 5366, 26},// 91
- {0x9F81,0x9FFE,0xC6F3,0xC7B7, 5392,126},// 92
- {0xA041,0xA05A,0xC7B8,0xC7DC, 5518, 26},// 93
- {0xA061,0xA07A,0xC7DE,0xC7FA, 5544, 26},// 94
- {0xA081,0xA0FE,0xC7FB,0xC8A4, 5570,126},// 95
- {0xA141,0xA15A,0xC8A5,0xC8C1, 5696, 26},// 96
- {0xA161,0xA17A,0xC8C2,0xC8E5, 5722, 26},// 97
- {0xA181,0xA1A0,0xC8E6,0xC90E, 5748, 32},// 98
- {0xA241,0xA25A,0xC910,0xC92B, 5780, 26},// 99
- {0xA261,0xA27A,0xC92D,0xC947, 5806, 26},// 100
- {0xA281,0xA2A0,0xC948,0xC96F, 5832, 32},// 101
- {0xA341,0xA35A,0xC971,0xC98F, 5864, 26},// 102
- {0xA361,0xA37A,0xC991,0xC9AE, 5890, 26},// 103
- {0xA381,0xA3A0,0xC9AF,0xC9DB, 5916, 32},// 104
- {0xA441,0xA45A,0xC9DE,0xCA04, 5948, 26},// 105
- {0xA461,0xA47A,0xCA05,0xCA25, 5974, 26},// 106
- {0xA481,0xA4A0,0xCA26,0xCA46, 6000, 32},// 107
- {0xA4A1,0xA4FE,0x3131,0x318E, 6032, 94},// 108 íê¸ ì모ì
- {0xA541,0xA55A,0xCA47,0xCA6A, 6126, 26},// 109
- {0xA561,0xA57A,0xCA6B,0xCA86, 6152, 26},// 110
- {0xA581,0xA5A0,0xCA87,0xCAA7, 6178, 32},// 111
- {0xA641,0xA65A,0xCAA8,0xCAC5, 6210, 26},// 112
- {0xA661,0xA67A,0xCAC6,0xCAE7, 6236, 26},// 113
- {0xA681,0xA6A0,0xCAE8,0xCB0A, 6262, 32},// 114
- {0xA741,0xA75A,0xCB0B,0xCB29, 6294, 26},// 115
- {0xA761,0xA77A,0xCB2A,0xCB44, 6320, 26},// 116
- {0xA781,0xA7A0,0xCB45,0xCB6C, 6346, 32},// 117
- {0xA841,0xA85A,0xCB6D,0xCB88, 6378, 26},// 118
- {0xA861,0xA87A,0xCB89,0xCBA3, 6404, 26},// 119
- {0xA881,0xA8A0,0xCBA4,0xCBC4, 6430, 32},// 120
- {0xA941,0xA95A,0xCBC5,0xCBDF, 6462, 26},// 121
- {0xA961,0xA97A,0xCBE0,0xCBFC, 6488, 26},// 122
- {0xA981,0xA9A0,0xCBFD,0xCC24, 6514, 32},// 123
- {0xAA41,0xAA5A,0xCC25,0xCC4E, 6546, 26},// 124
- {0xAA61,0xAA7A,0xCC4F,0xCC72, 6572, 26},// 125
- {0xAA81,0xAAA0,0xCC73,0xCC93, 6598, 32},// 126
- {0xAB41,0xAB5A,0xCC94,0xCCB9, 6630, 26},// 127
- {0xAB61,0xAB7A,0xCCBA,0xCCDA, 6656, 26},// 128
- {0xAB81,0xABA0,0xCCDB,0xCCFD, 6682, 32},// 129
- {0xAC41,0xAC5A,0xCCFE,0xCD20, 6714, 26},// 130
- {0xAC61,0xAC7A,0xCD21,0xCD3E, 6740, 26},// 131
- {0xAC81,0xACA0,0xCD3F,0xCD5F, 6766, 32},// 132
- {0xAD41,0xAD5A,0xCD61,0xCD80, 6798, 26},// 133
- {0xAD61,0xAD7A,0xCD81,0xCD9F, 6824, 26},// 134
- {0xAD81,0xADA0,0xCDA0,0xCDC5, 6850, 32},// 135
- {0xAE41,0xAE5A,0xCDC6,0xCDE1, 6882, 26},// 136
- {0xAE61,0xAE7A,0xCDE2,0xCE02, 6908, 26},// 137
- {0xAE81,0xAEA0,0xCE03,0xCE2B, 6934, 32},// 138
- {0xAF41,0xAF5A,0xCE2C,0xCE49, 6966, 26},// 139
- {0xAF61,0xAF7A,0xCE4A,0xCE6C, 6992, 26},// 140
- {0xAF81,0xAFA0,0xCE6E,0xCE99, 7018, 32},// 141
- {0xB041,0xB05A,0xCE9A,0xCEBA, 7050, 26},// 142
- {0xB061,0xB07A,0xCEBB,0xCED5, 7076, 26},// 143
- {0xB081,0xB0A0,0xCED6,0xCEFF, 7102, 32},// 144
- {0xB0A1,0xB0FE,0xAC00,0xAD06, 7134, 94},// 145
- {0xB141,0xB15A,0xCF02,0xCF23, 7228, 26},// 146
- {0xB161,0xB17A,0xCF25,0xCF44, 7254, 26},// 147
- {0xB181,0xB1A0,0xCF45,0xCF6C, 7280, 32},// 148
- {0xB1A1,0xB1FE,0xAD0C,0xAE78, 7312, 94},// 149
- {0xB241,0xB25A,0xCF6D,0xCF8D, 7406, 26},// 150
- {0xB261,0xB27A,0xCF8E,0xCFA9, 7432, 26},// 151
- {0xB281,0xB2A0,0xCFAA,0xCFCB, 7458, 32},// 152
- {0xB2A1,0xB2FE,0xAE79,0xB059, 7490, 94},// 153
- {0xB341,0xB35A,0xCFCC,0xCFE9, 7584, 26},// 154.
- {0xB361,0xB37A,0xCFEA,0xD00A, 7610, 26},// 155
- {0xB381,0xB3A0,0xD00B,0xD02C, 7636, 32},// 156
- {0xB3A1,0xB3FE,0xB05D,0xB1DD, 7668, 94},// 157
- {0xB441,0xB45A,0xD02E,0xD04F, 7762, 26},// 158.
- {0xB461,0xB47A,0xD051,0xD06F, 7788, 26},// 159
- {0xB481,0xB4A0,0xD071,0xD094, 7814, 32},// 160
- {0xB4A1,0xB4FE,0xB1DF,0xB365, 7846, 94},// 161
- {0xB541,0xB55A,0xD095,0xD0B2, 7940, 26},// 162.
- {0xB561,0xB57A,0xD0B3,0xD0DA, 7966, 26},// 163
- {0xB581,0xB5A0,0xD0DB,0xD104, 7992, 32},// 164
- {0xB5A1,0xB5FE,0xB367,0xB538, 8024, 94},// 165
- {0xB641,0xB65A,0xD105,0xD11F, 8118, 26},// 166.
- {0xB661,0xB67A,0xD120,0xD13E, 8144, 26},// 167
- {0xB681,0xB6A0,0xD13F,0xD16D, 8170, 32},// 168
- {0xB6A1,0xB6FE,0xB540,0xB797, 8202, 94},// 169
- {0xB741,0xB75A,0xD16E,0xD18A, 8296, 26},// 170.
- {0xB761,0xB77A,0xD18B,0xD1A7, 8322, 26},// 171
- {0xB781,0xB7A0,0xD1A9,0xD1CF, 8348, 32},// 172
- {0xB7A1,0xB7FE,0xB798,0xB969, 8380, 94},// 173
- {0xB841,0xB85A,0xD1D0,0xD1EA, 8474, 26},// 174.
- {0xB861,0xB87A,0xD1EB,0xD206, 8500, 26},// 175
- {0xB881,0xB8A0,0xD208,0xD229, 8526, 32},// 176
- {0xB8A1,0xB8FE,0xB96B,0xBAFC, 8558, 94},// 177
- {0xB941,0xB95A,0xD22A,0xD24C, 8652, 26},// 178.
- {0xB961,0xB97A,0xD24D,0xD268, 8678, 26},// 179
- {0xB981,0xB9A0,0xD269,0xD28C, 8704, 32},// 180
- {0xB9A1,0xB9FE,0xBB00,0xBC97, 8736, 94},// 181
- {0xBA41,0xBA5A,0xD28D,0xD2AD, 8830, 26},// 182.
- {0xBA61,0xBA7A,0xD2AE,0xD2D1, 8856, 26},// 183
- {0xBA81,0xBAA0,0xD2D2,0xD2FA, 8882, 32},// 184
- {0xBAA1,0xBAFE,0xBC99,0xBE64, 8914, 94},// 185
- {0xBB41,0xBB5A,0xD2FB,0xD323, 9008, 26},// 186.
- {0xBB61,0xBB7A,0xD324,0xD349, 9034, 26},// 187
- {0xBB81,0xBBA0,0xD34A,0xD369, 9060, 32},// 188
- {0xBBA1,0xBBFE,0xBE68,0xC0E4, 9092, 94},// 189
- {0xBC41,0xBC5A,0xD36A,0xD387, 9186, 26},// 190.
- {0xBC61,0xBC7A,0xD388,0xD3AE, 9212, 26},// 191
- {0xBC81,0xBCA0,0xD3AF,0xD3D6, 9238, 32},// 192
- {0xBCA1,0xBCFE,0xC0E5,0xC22D, 9270, 94},// 193
- {0xBD41,0xBD5A,0xD3D7,0xD3F7, 9364, 26},// 194.
- {0xBD61,0xBD7A,0xD3F8,0xD416, 9390, 26},// 195
- {0xBD81,0xBDA0,0xD417,0xD437, 9416, 32},// 196
- {0xBDA1,0xBDFE,0xC22F,0xC430, 9448, 94},// 197
- {0xBE41,0xBE5A,0xD438,0xD453, 9542, 26},// 198.
- {0xBE61,0xBE7A,0xD454,0xD472, 9568, 26},// 199
- {0xBE81,0xBEA0,0xD473,0xD49D, 9594, 32},// 200
- {0xBEA1,0xBEFE,0xC434,0xC5CE, 9626, 94},// 201
- {0xBF41,0xBF5A,0xD49E,0xD4B8, 9720, 26},// 202.
- {0xBF61,0xBF7A,0xD4B9,0xD4D5, 9746, 26},// 203
- {0xBF81,0xBFA0,0xD4D6,0xD4FC, 9772, 32},// 204
- {0xBFA1,0xBFFE,0xC5D0,0xC6E8, 9804, 94},// 205
- {0xC041,0xC05A,0xD4FE,0xD51D, 9898, 26},// 206.
- {0xC061,0xC07A,0xD51E,0xD537, 9924, 26},// 207
- {0xC081,0xC0A0,0xD538,0xD563, 9950, 32},// 208
- {0xC0A1,0xC0FE,0xC6E9,0xC80A, 9982, 94},// 209
- {0xC141,0xC15A,0xD564,0xD58B,10076, 26},// 210.
- {0xC161,0xC17A,0xD58C,0xD5A7,10102, 26},// 211
- {0xC181,0xC1A0,0xD5A8,0xD5C7,10128, 32},// 212
- {0xC1A1,0xC1FE,0xC810,0xC9D3,10160, 94},// 213
- {0xC241,0xC25A,0xD5CA,0xD5EE,10254, 26},// 214.
- {0xC261,0xC27A,0xD5EF,0xD612,10280, 26},// 215
- {0xC281,0xC2A0,0xD616,0xD63B,10306, 32},// 216
- {0xC2A1,0xC2FE,0xC9D5,0xCC3B,10338, 94},// 217
- {0xC341,0xC35A,0xD63D,0xD661,10432, 26},// 218.
- {0xC361,0xC37A,0xD662,0xD680,10458, 26},// 219
- {0xC381,0xC3A0,0xD681,0xD6AA,10484, 32},// 220
- {0xC3A1,0xC3FE,0xCC3C,0xCE35,10516, 94},// 221
- {0xC441,0xC45A,0xD6AB,0xD6CB,10610, 26},// 222.
- {0xC461,0xC47A,0xD6CD,0xD6ED,10636, 26},// 223
- {0xC481,0xC4A0,0xD6EE,0xD714,10662, 32},// 224
- {0xC4A1,0xC4FE,0xCE58,0xD03C,10694, 94},// 225
- {0xC541,0xC55A,0xD715,0xD739,10788, 26},// 226.
- {0xC561,0xC57A,0xD73A,0xD75E,10814, 26},// 227
- {0xC581,0xC5A0,0xD75F,0xD78B,10840, 32},// 228
- {0xC5A1,0xC5FE,0xD044,0xD25C,10872, 94},// 229
- {0xC641,0xC652,0xD78D,0xD7A3,10966, 18},// 230.
- {0xC6A1,0xC6FE,0xD264,0xD401,10984, 94},// 231
- {0xC7A1,0xC7FE,0xD408,0xD620,11078, 94},// 232
- {0xC8A1,0xC8FE,0xD624,0xD79D,11172, 94} // 233
-}; // 11266 codes
-
-/*
-
-(ì ëì½ë ìì±í íê¸ì½ë) = 0xAC00 + 28*21*(ì´ì±ì¸ë±ì¤) + 28*(ì¤ì±ì¸ë±ì¤) + (ì¢
ì±ì¸ë±ì¤)
-
-
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
-ì´ ã± ã² ã´ ã· ã¸ ã¹ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
-ì¤ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
¡ ã
¢ ã
£
-ì¢
X ã± ã² ã±ã
ã´ ã´ã
ã´ã
ã· ã¹ ã¹ã± ã¹ã
ã¹ã
ã¹ã
ã¹ã
ã¹ã
ã¹ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
-
- ìì©ì¡°í©í
ì´ë¸ from FLBP-8SR IBM 2Byte (F)
- ----------------------------------------
- 10ì§ 2ì§ ì´ì± ì¤ì± ì¢
ì±
- ----------------------------------------
- 0 00000 ë¶ê° ë¶ê° ë¶ê°
- 1 00001 ì±ì ë¶ê° ë¶ê°
- 2 00010 ã± ì±ì ã±
- 3 00011 ã² ã
ã²
- ----------------------------------------
- 4 00100 ã´ ã
ã±ã
- 5 00101 ã· ã
ã´
- 6 00110 㸠ã
ã´ã
- 7 00111 ã¹ ã
ã´ã
- ----------------------------------------
- 8 01000 ã
ë¶ê° ã·
- 9 01001 ã
ë¶ê° ã¹
- 10 01010 ã
ã
ã¹ã±
- 11 01011 ã
ã
ã¹ã
- ----------------------------------------
- 12 01100 ã
ã
ã¹ã
- 13 01101 ã
ã
ã¹ã
- 14 01110 ã
ã
ã¹ã
- 15 01111 ã
ã
ã¹ã
- ----------------------------------------
- 16 10000 ã
ë¶ê° ã¹ã
- 17 10001 ã
ë¶ê° ã
- 18 10010 ã
ã
<ã
>
- 19 10011 ã
ã
ã
- ----------------------------------------
- 20 10100 ã
ã
ã
ã
- 21 10101 íì ã
ã
- 22 10110 íì ã
ã
- 23 10111 íì ã
ã
- ----------------------------------------
- 24 11000 íì ë¶ê° ã
- 25 11001 íì ë¶ê° ã
- 26 11010 íì ã
ã
- 27 11011 íì ã
¡ ã
- ----------------------------------------
- 28 11100 íì ã
¢ ã
- 29 11101 íì ã
£ ã
- 30 11110 íì <ã> <ã>
- 31 11111 ë¶ê° <ã> ë¶ê°
- ----------------------------------------
-
-*/
-// ------------------------------------------------------------------------------------------------------------------
-// unicode -> ì´,ì¤,ì±ê°ì¼ë¡ ë³íí -> KSSM ë³íì íìí í
ì´ë¸
-// ------------------------------------------------------------------------------------------------------------------
-// KSSM ì½ëì²´ê³ììë ë±ì를 ííí기 ìí´ì ì´ì±ê³¼ ì¤ì±ìë FILL ì´ ìë ë°ë©´ì
-// unicode ìì ì´ì±ì´ ìë ê²½ì°ì ì¤ì±ì´ ìë ê²½ì°ë ìë¤
-//
-// unicode ì¶ì¶ ì´ì± ì¸ë±ì¤ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
-// 㱠㲠㴠㷠㸠㹠ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
-const unsigned short _u2j_cho[]={2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20};
-// unicode ì¶ì¶ ì¤ì± ì¸ë±ì¤ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-// ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
¡ ã
¢ ã
£
-const unsigned short _u2j_jung[]={3, 4, 5, 6, 7,10,11,12, 13,14,15,18,19,20,21,22,23,26,27,28,29};
-// unicode ì¶ì¶ ì¢
ì± ì¸ë±ì¤ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
-// ì± ã± ã² ã³ ã´ ãµ ã¶ ã· ã¹ ãº ã» ã¼ ã½ ã¾ ã¿ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
-const unsigned short _u2j_jong[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29};
-
-
-// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
-// ë¶ ì± ã± ã² ã´ ã· ã¸ ã¹ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
í í í í í í í í í í ë¶
-// 1 2
-const unsigned short _j2u_cho[]={99,50, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,80,80,80,80,80,80,80,80,80,80,99};
-// ë¶ ë¶ ì± ã
ã
ã
ã
ã
ë¶ ë¶ ã
ã
ã
ã
ã
ã
ë¶ ë¶ ã
ã
ã
ã
ã
ã
ë¶ ë¶ ã
ã
¡ ã
¢ ã
£ ã ã
-// 2 3
-const unsigned short _j2u_jung[]={99,99,50, 0, 1, 2, 3, 4,99,99, 5, 6, 7, 8, 9,10,99,99, 11,12,13,14,15,16,99,99,17,18,19,20,99,99};
-// ë¶ ì± ã± ã² ã³ ã´ ãµ ã¶ ã· ã¹ ãº ã» ã¼ ã½ ã¾ ã¿ ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã
ã ë¶
-// 1 2
-const unsigned short _j2u_jong[]={99, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,99,17,18,19,20,21,22,23,24,25,26,27,99,99};
-
-
-
-// ------------------------------------------------------------------------------------------------------------------
-// U+FFA1 ~ U+FFDC ì íê¸ì모ìì ìí ë³íí
ì´ë¸
-const unsigned short _ffa1_ffdc[]={
- // KSSM U+ CP949
- 0x8841,// 0 0xffa1 0xa4a1 ;ã±;
- 0x8C41,// 1 0xffa2 0xa4a2 ;ã²;
- 0x8444,// 2 0xffa3 0xa4a3 ;ã³;
- 0x9041,// 3 0xffa4 0xa4a4 ;ã´;
- 0x8446,// 4 0xffa5 0xa4a5 ;ãµ;
- 0x8447,// 5 0xffa6 0xa4a6 ;ã¶;
- 0x9441,// 6 0xffa7 0xa4a7 ;ã·;
- 0x9841,// 7 0xffa8 0xa4a8 ;ã¸;
- 0x9C41,// 8 0xffa9 0xa4a9 ;ã¹;
- 0x844A,// 9 0xffaa 0xa4aa ;ãº;
- 0x844B,// 10 0xffab 0xa4ab ;ã»;
- 0x844C,// 11 0xffac 0xa4ac ;ã¼;
- 0x844D,// 12 0xffad 0xa4ad ;ã½;
- 0x844E,// 13 0xffae 0xa4ae ;ã¾;
- 0x844F,// 14 0xffaf 0xa4af ;ã¿;
- 0x8450,// 15 0xffb0 0xa4b0 ;ã
;
- 0xA041,// 16 0xffb1 0xa4b1 ;ã
;
- 0xA441,// 17 0xffb2 0xa4b2 ;ã
;
- 0xA841,// 18 0xffb3 0xa4b3 ;ã
;
- 0x8454,// 19 0xffb4 0xa4b4 ;ã
;
- 0xAC41,// 20 0xffb5 0xa4b5 ;ã
;
- 0xB041,// 21 0xffb6 0xa4b6 ;ã
;
- 0xB441,// 22 0xffb7 0xa4b7 ;ã
;
- 0xB841,// 23 0xffb8 0xa4b8 ;ã
;
- 0xBC41,// 24 0xffb9 0xa4b9 ;ã
;
- 0xC041,// 25 0xffba 0xa4ba ;ã
;
- 0xC441,// 26 0xffbb 0xa4bb ;ã
;
- 0xC841,// 27 0xffbc 0xa4bc ;ã
;
- 0xCC41,// 28 0xffbd 0xa4bd ;ã
;
- 0xD041,// 29 0xffbe 0xa4be ;ã
;
- 0x0000,// 30 0xffbf
- 0x0000,// 31 0xffc0
- 0x0000,// 32 0xffc1
- 0x8461,// 33 0xffc2 0xa4bf ;ã
;
- 0x8481,// 34 0xffc3 0xa4c0 ;ã
;
- 0x84A1,// 35 0xffc4 0xa4c1 ;ã
;
- 0x84C1,// 36 0xffc5 0xa4c2 ;ã
;
- 0x84E1,// 37 0xffc6 0xa4c3 ;ã
;
- 0x8541,// 38 0xffc7 0xa4c4 ;ã
;
- 0x0000,// 39 0xffc8
- 0x0000,// 40 0xffc9
- 0x8561,// 41 0xffca 0xa4c5 ;ã
;
- 0x8581,// 42 0xffcb 0xa4c6 ;ã
;
- 0x85A1,// 43 0xffcc 0xa4c7 ;ã
;
- 0x85C1,// 44 0xffcd 0xa4c8 ;ã
;
- 0x85E1,// 45 0xffce 0xa4c9 ;ã
;
- 0x8641,// 46 0xffcf 0xa4ca ;ã
;
- 0x0000,// 47 0xffd0
- 0x0000,// 48 0xffd1
- 0x8661,// 49 0xffd2 0xa4cb ;ã
;
- 0x8681,// 50 0xffd3 0xa4cc ;ã
;
- 0x86A1,// 51 0xffd4 0xa4cd ;ã
;
- 0x86C1,// 52 0xffd5 0xa4ce ;ã
;
- 0x86E1,// 53 0xffd6 0xa4cf ;ã
;
- 0x8741,// 54 0xffd7 0xa4d0 ;ã
;
- 0x0000,// 55 0xffd8
- 0x0000,// 56 0xffd9
- 0x8761,// 57 0xffda 0xa4d1 ;ã
¡;
- 0x8781,// 58 0xffdb 0xa4d2 ;ã
¢;
- 0x87A1,// 59 0xffdc 0xa4d3 ;ã
£;
- 0x0000 // 60
-};
-
-const unsigned char _ua000[17]={
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13,145,149,153
-};
-const unsigned short _ub000[67]={
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68,153,155,157,161,
- 165,169,173,177,181,185,189
-};
-const unsigned char _uc000[94]={
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99,100,101,102,103,104,105,106,107,
- 109,110,111,112,113,114,115,116,117,118,
- 119,120,121,122,123,124,125,126,127,128,
- 129,130,131,132,133,134,135,136,137,138,
- 139,140,141,142,143,144,146,147,148,150,
- 151,152,154,155,189,193,197,201,205,209,
- 213,217,221,225
-};
-
-const unsigned char _ud000[62]={
- 155,156,158,159,160,162,163,164,166,167,
- 168,170,171,172,174,175,176,178,179,180,
- 182,183,184,186,187,188,190,191,192,194,
- 195,196,198,199,200,202,203,204,206,207,
- 208,210,211,212,214,215,216,218,219,220,
- 222,223,224,225,226,227,228,229,230,231,
- 232,233
-};
-
-// differential table of unicodes for each oem pages
-
-const unsigned char _OEM_DATA[]={
- 0x00,0x01,0x02,0x01,0x05,0x01,0x01,0x01,0x01,0x09,
- 0x06,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x04,0x01,0x01,
- 0x00,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x02,
- 0x01,0x01,0x01,0x01,0x03,0x05,0x01,0x05,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x01,
- 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
- 0x01,0x02,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x03,0x02,0x02,0x01,0x04,0x02,0x03,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x03,0x02,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x03,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
- 0x01,0x05,0x01,0x01,0x01,0x04,0x02,0x03,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x01,0x04,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x03,0x02,0x01,
- 0x00,0x01,0x01,0x03,0x02,0x03,0x01,0x01,0x02,0x04,
- 0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x03,
- 0x04,0x01,0x01,0x02,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x01,0x02,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x03,0x01,0x01,0x01,0x02,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x02,0x04,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,
- 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x03,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
- 0x02,0x02,0x02,0x01,0x01,0x01,0x04,0x02,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x04,0x02,0x01,0x05,0x01,
- 0x00,0x01,0x01,0x03,0x06,0x02,0x04,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
- 0x01,0x01,0x01,0x01,0x01,0x03,
- 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x03,0x01,0x01,0x02,0x03,0x01,
- 0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x04,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x02,0x01,
- 0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x04,
- 0x01,0x01,0x02,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x03,0x01,0x02,0x01,0x01,0x04,0x01,0x01,0x01,
- 0x01,0x03,0x02,0x03,0x01,0x01,0x02,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
- 0x01,0x01,0x01,0x02,0x04,0x02,0x01,0x06,0x01,0x01,
- 0x04,0x06,0x01,0x01,0x04,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x02,
- 0x01,0x03,0x03,0x01,0x01,0x01,
- 0x00,0x02,0x02,0x02,0x01,0x02,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
- 0x01,0x01,0x01,0x01,0x01,0x02,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x02,0x02,0x01,
- 0x01,0x03,0x02,0x02,0x02,0x02,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x02,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x03,0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x03,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x05,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x04,
- 0x00,0x01,0x01,0x01,0x04,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x03,
- 0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x04,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x05,
- 0x01,0x01,0x05,0x01,0x02,0x01,
- 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
- 0x01,0x01,0x04,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x02,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,0x02,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x03,0x01,
- 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x06,0x01,0x01,0x01,
- 0x01,0x03,0x02,0x03,0x01,0x02,0x04,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x05,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x02,0x01,0x01,0x01,
- 0x00,0x03,0x02,0x03,0x01,0x01,0x01,0x04,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x04,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x03,0x01,0x01,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x04,0x02,0x01,0x05,0x01,0x01,0x01,0x01,0x03,0x02,
- 0x02,0x01,0x01,0x02,0x03,0x01,
- 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x03,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x04,0x02,0x02,0x01,
- 0x06,0x01,0x06,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
- 0x01,0x02,0x01,0x03,0x01,0x02,
- 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x04,0x01,0x01,0x02,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x03,0x02,0x01,0x01,0x01,
- 0x01,0x03,0x02,0x03,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x04,0x01,0x01,0x02,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x04,0x02,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x05,0x01,0x01,0x01,0x01,
- 0x03,0x02,0x02,0x01,0x01,0x03,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x02,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
- 0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x04,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x04,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,
- 0x00,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x04,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x03,0x01,0x05,0x01,0x01,0x01,0x01,
- 0x03,0x04,0x01,0x01,0x02,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x06,0x01,
- 0x03,0x03,0x01,0x01,0x01,0x03,
- 0x00,0x01,0x01,0x01,0x02,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x04,0x02,0x01,0x01,0x02,
- 0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
- 0x02,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x03,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x03,0x02,0x02,0x02,0x03,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
- 0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0x02,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x01,
- 0x01,0x01,0x01,0x01,0x04,0x02,0x02,0x01,0x01,0x01,
- 0x02,0x03,0x03,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x03,0x01,
- 0x00,0x01,0x01,0x04,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x03,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x03,0x01,0x03,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,
- 0x00,0x02,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x02,0x01,0x01,0x01,0x04,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x04,0x04,0x01,0x01,0x01,0x04,0x04,0x01,0x01,
- 0x03,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x02,0x01,0x01,
- 0x01,0x03,0x02,0x02,0x01,0x01,
- 0x00,0x03,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,
- 0x00,0x03,0x05,0x01,0x01,0x01,0x01,0x08,0x02,0x02,
- 0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x02,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x04,0x02,0x01,0x01,0x02,0x03,
- 0x01,0x01,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
- 0x01,0x01,0x04,0x02,0x01,0x04,0x02,0x02,0x02,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,
- 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
- 0x01,0x01,0x04,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x03,
- 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x02,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x02,0x03,0x02,0x09,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x04,0x01,0x01,0x01,0x04,0x05,
- 0x01,0x01,0x02,0x03,0x01,0x02,0x04,0x02,0x01,0x01,
- 0x01,0x01,0x03,0x05,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x02,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x03,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x03,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x03,0x02,0x04,0x01,0x01,0x04,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x02,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x04,0x01,0x01,0x01,
- 0x01,0x03,
- 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
- 0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x03,
- 0x01,0x03,
- 0x00,0x01,0x02,0x02,0x02,0x01,0x02,0x01,0x01,0x01,
- 0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,0x02,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x02,
- 0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x02,0x01,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,
- 0x03,0x01,
- 0x00,0x01,0x04,0x01,0x02,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x05,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x02,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,
- 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x02,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x02,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,
- 0x00,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x04,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x03,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x01,0x03,0x03,0x01,0x01,0x01,0x06,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,
- 0x04,0x0b,0x02,0x07,0x04,0x04,0x14,0x01,0x03,0x03,
- 0x01,0x02,0x06,0x01,0x02,0x01,0x01,0x01,0x03,0x01,
- 0x01,0x01,0x04,0x04,0x08,0x01,0x02,0x01,0x01,0x07,
- 0x01,0x01,0x02,0x03,0x01,0x08,0x01,0x02,0x01,0x01,
- 0x04,0x03,0x04,0x04,0x09,0x02,0x09,0x01,0x03,0x03,
- 0x01,0x02,0x02,0x03,0x01,0x01,0x02,0x02,0x01,0x06,
- 0x01,0x03,0x04,0x02,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
- 0x01,0x01,
- 0x00,0x01,0x02,0x02,0x07,0x04,0x04,0x09,0x03,0x01,
- 0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x04,
- 0x04,0x09,0x02,0x09,0x01,0x03,0x03,0x01,0x01,0x01,
- 0x05,0x01,0x01,0x02,0x02,0x01,0x06,0x01,0x03,0x04,
- 0x0c,0x01,0x07,0x13,0x09,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x09,0x04,0x04,0x14,0x01,0x03,0x03,0x01,0x01,
- 0x07,0x01,0x02,0x02,0x07,0x1c,0x01,0x03,0x03,0x01,
- 0x02,0x06,0x01,0x02,0x02,0x01,0x04,0x02,0x01,0x01,
- 0x02,0x04,0x02,0x06,0x01,0x02,0x01,0x01,0x04,0x03,
- 0x01,0x03,0x04,0x08,
- 0x00,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x02,0x01,0x01,0x07,0x01,0x07,0x30,0x01,0x01,
- 0x02,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,
- 0x0c,0x03,0x02,0x07,0x04,0x04,0x0b,0x01,0x05,0x03,
- 0x1c,0x01,0x03,0x02,0x02,0x08,0x01,0x02,0x02,0x01,
- 0x01,0x05,0x01,0x07,0x0c,0x01,0x07,0x01,0x14,0x07,
- 0x04,0x04,0x08,0x01,0x04,0x07,0x1c,0x01,0x03,0x04,
- 0x07,0x01,0x01,0x02,0x02,0x01,0x06,0x08,0x0c,0x01,
- 0x07,0x01,0x03,0x04,0x08,0x01,0x03,0x08,0x04,0x04,
- 0x08,0x01,0x0b,0x1c,0x01,0x03,0x02,0x02,0x02,0x05,
- 0x01,0x01,0x02,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,0x02,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x1f,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,
- 0x01,0x01,0x02,0x03,0x01,0x01,0x01,0x06,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,
- 0x05,0x23,0x01,0x02,0x01,0x04,0x02,0x01,0x05,0x01,
- 0x02,0x01,0x01,0x06,0x01,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,0x01,0x03,
- 0x01,0x03,0x04,0x04,0x18,0x01,0x03,0x04,0x02,0x06,
- 0x01,0x02,0x02,0x05,0x01,0x01,0x04,0x04,0x0c,0x24,
- 0x04,0x04,0x08,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x09,0x01,0x03,0x04,0x09,0x02,0x02,0x07,0x01,
- 0x03,0x03,0x01,0x08,0x01,0x02,0x02,0x07,0x14,0x08,
- 0x1c,0x04,0x04,0x08,0x01,0x0b,0x01,0x07,0x08,0x01,
- 0x04,0x07,0x01,0x03,0x04,0x01,0x01,0x06,0x01,0x02,
- 0x02,0x01,0x04,0x02,0x04,0x04,0x14,0x01,0x03,0x04,
- 0x02,0x06,0x01,0x02,0x02,0x05,0x02,0x01,0x01,0x02,
- 0x03,0x01,0x01,0x01,0x01,0x04,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x04,0x01,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x01,0x01,0x07,0x38,0x01,0x01,0x02,0x03,0x01,
- 0x02,0x01,0x05,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x04,0x01,0x01,0x01,0x01,
- 0x00,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x02,0x02,0x03,0x02,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x01,0x01,0x07,0x04,0x04,0x0c,0x01,0x07,0x04,
- 0x18,0x01,0x03,0x03,0x01,0x02,0x02,0x04,0x01,0x02,
- 0x02,0x02,0x02,0x03,0x04,0x04,0x14,0x14,0x08,0x04,
- 0x04,0x08,0x01,0x02,0x09,0x1c,0x01,0x03,0x04,0x08,
- 0x01,0x02,0x02,0x07,0x14,0x08,0x15,0x07,0x04,0x04,
- 0x09,0x02,0x02,0x07,0x04,0x04,0x08,0x05,0x07,0x01,
- 0x03,0x03,0x01,0x02,0x06,0x01,0x02,0x02,0x07,0x1c,
- 0x01,0x03,0x03,0x01,0x08,0x01,0x02,0x01,0x01,0x01,
- 0x06,0x01,0x03,0x04,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x02,0x01,0x01,0x01,
- 0x00,0x03,0x04,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x02,
- 0x00,0x01,0x02,0x01,0x01,0x06,0x01,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x01,0x01,0x3f,0x01,0x03,0x04,0x02,
- 0x01,0x05,0x01,0x02,0x01,0x01,0x06,0x01,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x14,0x24,0x01,
- 0x03,0x04,0x0d,0x07,0x08,0x14,0x1c,0x04,0x34,0x01,
- 0x03,0x04,0x07,0x01,0x05,0x23,0x1c,0x04,0x04,0x08,
- 0x01,0x04,0x23,0x01,0x03,0x03,0x01,0x08,0x01,0x02,
- 0x09,0x04,0x04,0x08,0x01,0x0b,0x04,0x04,0x08,0x01,
- 0x02,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x01,
- 0x01,0x01,0x04,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,
- 0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x01,0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,
- 0x01,0x03,0x0f,0x02,0x23,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x01,0x01,0x06,0x01,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x01,
- 0x01,0x07,0x04,0x0d,0x02,0x09,0x01,0x03,0x04,0x08,
- 0x01,0x02,0x02,0x07,0x04,0x11,0x1b,0x08,0x04,0x04,
- 0x08,0x01,0x02,0x02,0x07,0x04,0x04,0x09,0x02,0x02,
- 0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x14,
- 0x08,0x1c,0x01,0x03,0x04,0x08,0x03,0x02,0x07,0x01,
- 0x03,0x04,0x08,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,
- 0x01,0x03,0x01,0x1e,0x01,0x03,0x04,0x08,0x01,0x02,
- 0x02,0x07,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x06,
- 0x01,0x02,0x02,0x01,0x03,0x02,0x01,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x01,0x01,0x01,0x06,0x01,0x07,0x0d,
- 0x23,0x01,0x03,0x04,0x02,0x06,0x01,0x02,0x02,0x01,
- 0x05,0x01,0x01,0x03,0x04,0x08,0x01,0x02,0x01,0x01,
- 0x07,0x01,0x03,0x04,0x0b,0x01,0x01,0x02,0x05,0x1c,
- 0x01,0x02,0x01,0x04,0x02,0x06,0x01,0x02,0x02,0x07,
- 0x04,0x10,0x01,0x23,
- 0x00,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,
- 0x00,0x04,0x09,0x02,0x02,0x07,0x04,0x04,0x09,0x02,
- 0x09,0x01,0x01,0x02,0x03,0x01,0x01,0x01,0x06,0x01,
- 0x02,0x02,0x04,0x02,0x01,0x04,0x04,0x09,0x02,0x09,
- 0x1c,0x04,0x04,0x14,0x04,0x04,0x08,0x03,0x09,0x04,
- 0x04,0x08,0x03,0x25,0x01,0x03,0x03,0x01,0x02,0x06,
- 0x01,0x02,0x01,0x01,0x02,0x02,0x03,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x01,0x01,0x01,0x05,0x01,0x02,0x02,
- 0x04,0x03,0x01,0x03,0x04,0x08,0x01,0x02,0x01,0x01,
- 0x04,0x03,0x01,0x03,0x0d,0x27,0x01,0x03,0x03,0x01,
- 0x02,0x06,0x01,0x02,
- 0x00,0x01,0x01,0x03,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x03,0x02,0x01,0x01,0x01,0x01,0x03,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,
- 0x02,0x01,
- 0x00,0x01,0x06,0x01,0x03,0x03,0x01,0x08,0x01,0x02,
- 0x01,0x01,0x07,0x01,0x03,0x04,0x09,0x02,0x01,0x01,
- 0x04,0x03,0x04,0x18,0x01,0x01,0x02,0x04,0x08,0x01,
- 0x02,0x02,0x07,0x04,0x10,0x08,0x14,0x08,0x01,0x03,
- 0x04,0x08,0x01,0x0b,0x04,0x18,0x01,0x03,0x03,0x01,
- 0x01,0x01,0x06,0x01,0x02,0x02,0x04,0x01,0x02,0x08,
- 0x0c,0x08,0x1c,0x01,0x03,0x04,0x0d,0x07,0x04,0x04,
- 0x08,0x03,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,
- 0x25,0x01,0x03,0x04,0x02,0x06,0x01,0x02,0x02,0x01,
- 0x01,0x05,0x01,0x03,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x04,0x02,0x01,0x01,0x02,0x02,0x01,
- 0x01,0x01,0x01,0x03,0x04,0x01,
- 0x00,0x02,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x02,0x06,0x01,0x02,0x01,0x01,0x06,0x01,0x01,
- 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x0f,
- 0x28,0x01,0x03,0x03,0x01,0x08,0x03,0x01,0x01,0x07,
- 0x15,0x07,0x01,0x0f,0x01,0x02,0x01,0x01,0x23,0x01,
- 0x03,0x04,0x08,0x01,0x04,0x3f,0x1c,0x15,0x07,0x01,
- 0x03,0x04,0x08,0x03,0x02,0x5b,0x15,0x07,0x04,0x04,
- 0x08,0x01,0x27,0x01,0x03,0x04,0x08,0x01,0x02,0x02,
- 0x07,0x01,0x02,0x01,0x03,0x01,0x01,0x01,0x06,0x01,
- 0x02,0x01,0x01,0x04,0x03,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x01,0x01,0x07,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x02,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x03,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x04,0x04,
- 0x08,0x05,0x07,0x01,0x01,0x01,0x01,0x03,0x01,0x02,
- 0x01,0x05,0x01,0x02,0x01,0x01,0x05,0x02,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x01,0x01,0x07,0x04,0x04,0x0d,0x07,
- 0x01,0x01,0x02,0x04,0x02,0x06,0x01,0x02,0x02,0x04,
- 0x03,0x01,0x03,0x04,0x0d,0x07,0x04,0x04,0x08,0x03,
- 0x01,0x08,0x04,0x04,0x08,0x01,0x02,0x09,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x03,0x01,
- 0x08,0x01,0x02,0x02,
- 0x00,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x01,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x02,0x01,0x02,0x14,0x08,0x01,0x03,0x04,0x08,
- 0x05,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,
- 0x01,0x07,0x08,0x03,0x02,0x07,0x01,0x03,0x04,0x01,
- 0x07,0x01,0x02,0x02,0x23,0x01,0x03,0x03,0x01,0x07,
- 0x01,0x01,0x02,0x02,0x05,0x02,0x01,0x02,0x01,0x04,
- 0x08,0x01,0x03,0x01,0x06,0x01,0x01,0x03,0x04,0x08,
- 0x01,0x03,0x01,0x1c,0x23,0x01,0x03,0x04,0x02,0x06,
- 0x01,0x03,0x01,0x07,0x04,0x04,0x34,0x18,0x01,0x03,
- 0x03,0x01,0x02,0x06,0x01,0x04,0x07,0x01,0x03,0x10,
- 0x08,0x14,0x08,0x04,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x03,
- 0x02,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x08,0x01,0x0b,0x1c,0x01,0x03,0x04,0x08,0x01,
- 0x04,0x07,0x14,0x08,0x1c,0x04,0x2d,0x07,0x01,0x03,
- 0x04,0x02,0x05,0x01,0x01,0x0b,0x04,0x04,0x08,0x0c,
- 0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,
- 0x01,0x01,0x02,0x01,0x01,0x05,0x01,0x01,0x02,0x01,
- 0x01,0x04,0x01,0x02,0x01,0x03,0x04,0x08,0x01,0x02,
- 0x01,0x01,0x07,0x01,0x03,0x04,0x03,0x05,0x01,0x02,
- 0x02,0x04,0x02,0x01,0x04,0x04,0x09,0x0b,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x01,0x06,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x02,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x02,
- 0x00,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,
- 0x01,0x02,0x04,0x02,0x01,0x05,0x01,0x01,0x01,0x01,
- 0x01,0x04,0x01,0x01,0x01,0x04,0x04,0x08,0x01,0x02,
- 0x01,0x08,0x01,0x03,0x04,0x01,0x01,0x02,0x03,0x01,
- 0x01,0x02,0x02,0x02,0x05,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x01,0x01,0x07,0x01,0x03,0x0c,0x03,0x02,0x07,
- 0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x01,
- 0x01,0x06,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,
- 0x01,0x03,0x01,0x07,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,
- 0x00,0x03,0x04,0x08,0x01,0x04,0x07,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x02,0x02,0x05,0x01,0x03,0x04,0x06,0x02,0x01,
- 0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,
- 0x04,0x08,0x03,0x09,0x01,0x03,0x04,0x01,0x01,0x05,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x04,0x02,0x01,0x03,
- 0x02,0x01,0x01,0x02,0x06,0x01,0x02,0x01,0x01,0x01,
- 0x06,0x01,0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,
- 0x01,0x03,0x02,0x02,0x08,0x05,0x07,0x04,0x04,0x14,
- 0x01,0x03,0x04,0x02,
- 0x00,0x02,0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x04,0x01,
- 0x00,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,
- 0x00,0x01,0x02,0x02,0x01,0x06,0x01,0x03,0x04,0x08,
- 0x01,0x02,0x02,0x07,0x04,0x04,0x08,0x01,0x03,0x01,
- 0x07,0x1c,0x01,0x03,0x04,0x02,0x06,0x01,0x02,0x02,
- 0x01,0x01,0x04,0x01,0x01,0x07,0x09,0x02,0x02,0x07,
- 0x14,0x01,0x07,0x04,0x04,0x08,0x01,0x02,0x02,0x07,
- 0x01,0x03,0x11,0x07,0x01,0x03,0x04,0x01,0x01,0x06,
- 0x01,0x02,0x02,0x07,0x14,0x08,0x1c,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x09,0x04,0x04,0x08,0x0c,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x02,0x23,0x01,0x03,0x03,0x01,
- 0x02,0x06,0x01,0x02,
- 0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x02,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,
- 0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,
- 0x00,0x01,0x03,0x01,0x02,0x01,0x03,0x02,0x02,0x03,
- 0x05,0x01,0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,
- 0x01,0x02,0x01,0x01,0x07,0x04,0x11,0x23,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x15,0x07,0x14,
- 0x24,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x02,0x05,
- 0x01,0x07,0x0c,0x08,0x14,0x08,0x04,0x04,0x08,0x01,
- 0x20,0x07,0x01,0x03,0x04,0x08,0x01,0x04,0x07,0x14,
- 0x01,0x23,0x1c,0x1c,0x10,0x03,0x02,0x23,0x01,0x03,
- 0x04,0x08,0x01,0x04,0x01,0x05,0x01,0x01,0x03,0x02,
- 0x02,0x08,0x01,0x02,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x02,0x01,0x03,
- 0x02,0x02,0x01,0x01,0x02,0x01,0x03,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x02,0x01,
- 0x00,0x01,0x01,0x06,0x01,0x03,0x04,0x08,0x01,0x02,
- 0x01,0x01,0x07,0x04,0x02,0x02,0x08,0x05,0x23,0x01,
- 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x02,0x07,0x04,0x10,0x08,0x04,
- 0x11,0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,
- 0x04,0x04,0x0d,0x23,0x04,0x04,0x08,0x01,0x02,0x02,
- 0x07,0x10,0x0c,0x01,0x03,0x04,0x08,0x01,0x02,0x02,
- 0x07,0x14,0x08,0x04,0x18,0x04,0x04,0x08,0x01,0x02,
- 0x02,0x07,0x04,0x04,0x08,0x05,0x07,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x02,
- 0x00,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x02,0x01,0x01,
- 0x00,0x01,0x01,0x01,0x02,0x01,0x02,0x01,0x02,0x02,
- 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x01,0x02,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x01,
- 0x00,0x01,0x03,0x03,0x01,0x01,0x07,0x01,0x02,0x02,
- 0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,
- 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x14,
- 0x23,0x01,0x03,0x03,0x01,0x08,0x01,0x02,0x01,0x01,
- 0x07,0x01,0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x04,
- 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x1c,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,
- 0x05,0x07,0x15,0x07,0x08,0x14,0x1c,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x02,0x07,0x04,0x04,0x0d,0x07,0x15,
- 0x07,0x01,0x03,0x04,
- 0x00,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x02,0x02,0x01,0x01,
- 0x01,0x01,0x01,0x03,0x01,0x02,
- 0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
- 0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x05,0x01,0x01,0x01,0x01,
- 0x00,0x03,0x02,0x02,0x01,0x01,0x02,0x01,0x02,0x01,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x03,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x01,
- 0x00,0x01,0x02,0x02,0x07,0x04,0x04,0x08,0x0c,0x01,
- 0x03,0x04,0x08,0x01,0x04,0x23,0x01,0x03,0x04,0x08,
- 0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x01,0x07,0x01,
- 0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,0x01,0x02,
- 0x01,0x01,0x07,0x15,0x23,0x01,0x03,0x04,0x02,0x06,
- 0x01,0x02,0x01,0x01,0x07,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x02,0x07,0x04,0x10,0x08,0x04,0x18,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x02,0x05,0x02,0x04,0x18,0x1c,
- 0x04,0x0f,0x02,0x07,0x1c,0x01,0x03,0x04,0x08,0x01,
- 0x02,0x02,0x07,0x14,
- 0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
- 0x00,0x1c,0x01,0x03,0x04,0x08,0x01,0x04,0x07,0x04,
- 0x04,0x08,0x05,0x07,0x01,0x03,0x03,0x01,0x02,0x06,
- 0x01,0x02,0x09,0x04,0x04,0x08,0x01,0x0b,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x01,0x02,0x04,
- 0x02,0x06,0x01,0x02,0x01,0x01,0x04,0x03,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x37,0x01,
- 0x03,0x04,0x08,0x01,0x02,0x01,0x01,0x07,0x01,0x03,
- 0x04,0x08,0x01,0x02,0x02,0x07,0x04,0x04,0x08,0x01,
- 0x03,0x01,0x07,0x08,0x09,0x02,0x09,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x02,
- 0x00,0x15,0x23,0x04,0x18,0x04,0x04,0x09,0x02,0x09,
- 0x01,0x03,0x03,0x01,0x02,0x06,0x01,0x02,0x02,0x07,
- 0x15,0x23,0x04,0x04,0x08,0x03,0x09,0x04,0x04,0x08,
- 0x03,0x02,0x07,0x04,0x04,0x08,0x01,0x02,0x25,0x01,
- 0x03,0x04,0x08,0x01,0x02,0x02,0x07,0x01,0x03,0x04,
- 0x05,0x03,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,
- 0x01,0x02,0x01,0x01,0x07,0x15,0x23,0x01,0x03,0x04,
- 0x02,0x06,0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,
- 0x01,0x02,0x02,0x07,0x01,0x03,0x04,0x08,0x01,0x02,
- 0x01,0x01,0x07,0x04,
- 0x00,0x09,0x0b,0x01,0x03,0x04,0x05,0x03,0x01,0x02,
- 0x02,0x04,0x03,0x01,0x03,0x04,0x0b,0x02,0x07,0x01,
- 0x03,0x0f,0x02,0x07,0x01,0x03,0x04,0x09,0x02,0x02,
- 0x07,0x04,0x04,0x09,0x02,0x09,0x01,0x03,0x04,0x05,
- 0x03,0x03,0x02,0x07,0x04,0x04,0x08,0x05,0x07,0x01,
- 0x03,0x04,0x0d,0x07,0x01,0x03,0x04,0x08,0x01,0x02,
- 0x02,0x07,0x01,0x03,0x04,0x08,0x03,0x02,0x07,0x01,
- 0x03,0x02,0x01,0x01,0x01,0x07,0x01,0x02,0x02,0x04,
- 0x03,0x04,0x04,0x08,0x01,0x04,0x07,0x01,0x03,0x04,
- 0x08,0x01,0x02,0x02
-};
diff --git a/graphics/korfont.cpp b/graphics/korfont.cpp
index ced17f2e86..3a39871875 100644
--- a/graphics/korfont.cpp
+++ b/graphics/korfont.cpp
@@ -22,7 +22,7 @@
#include "graphics/font.h"
#include "graphics/korfont.h"
-#include "graphics/cp949m.h"
+
#include "common/file.h"
namespace Graphics {
@@ -40,62 +40,166 @@ bool checkKorCode(byte hi, byte lo)
return false;
}
-int get_oem_code_page(uint16 code)
-{
- int i,j,k;
- if((code>=0x8141)&&(code<=0xc8fe)){
-
- i = j = k = 0;
-
- // ì¢ ë íì ìê°ì ë¨ì¶í기 ìí
-
- k = (int)((code&0x7f00)>>8); // 1~ 72;
-
- if((k>=1)&&(k<=36)) j = (k-1)*3;
- else if((k>=37)&&(k<=48)) j = 109 + (k-37)*3;
- else if((k>=49)&&(k<=70)) j = 146 + (k-49)*4;
- else j=232;
-
- for(i=j;i<_CP949_PAGE;i++)
- {
- if((code>=cp949[i].first)&&(code<=cp949[i].last))return(i);
- }
- }
- return(-1);
-}
-
-
-uint16 _KS_to_unicode(uint16 ksc)
-{
- uint16 c,i,j,k;
- int page;
- uint16 u,oem,offset,cnt;
- unsigned char *p;
-
- c = (ksc << 8) | (ksc >> 8 & 0xFF);
- u=oem=offset=cnt=0;
- i=j=k=0;
- page = get_oem_code_page(c);
- if(page>=0)
- {
- oem = cp949[page].first;
- u = cp949[page].uc_first;
- offset = cp949[page].offset;
- cnt = cp949[page].cnt;
- p = (unsigned char *)&_OEM_DATA[offset];
- for(i=0;i<cnt;i++,oem++)
- {
- if(oem<c) u+=(*p++);
- else{
- if(i) u+=(*p++);
- break;
- }
- }
- }
- return(u);
+// KS (EUC-KR) to UCS-2 table
+static const uint16 _ksToUcs2Table[2350] = {
+ 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19,
+ 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d, 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b,
+ 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77, 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86,
+ 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d, 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf,
+ 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4, 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7,
+ 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5, 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06, 0xad0c, 0xad0d,
+ 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad28, 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45, 0xad47, 0xad49,
+ 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c, 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c, 0xad7d, 0xad7f,
+ 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90, 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8, 0xadd0, 0xadd1,
+ 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9, 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d, 0xae14, 0xae30,
+ 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40, 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e, 0xae50, 0xae54,
+ 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61, 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78, 0xae79, 0xae7b, 0xae7c, 0xae7d,
+ 0xae84, 0xae85, 0xae8c, 0xaebc, 0xaebd, 0xaebe, 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf, 0xaed0, 0xaed1, 0xaed8, 0xaed9, 0xaedc,
+ 0xaee8, 0xaeeb, 0xaeed, 0xaef4, 0xaef8, 0xaefc, 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d, 0xaf30, 0xaf32, 0xaf34, 0xaf3c,
+ 0xaf3d, 0xaf3f, 0xaf41, 0xaf42, 0xaf43, 0xaf48, 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64, 0xaf65, 0xaf79, 0xaf80, 0xaf84, 0xaf88,
+ 0xaf90, 0xaf91, 0xaf95, 0xaf9c, 0xafb8, 0xafb9, 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9, 0xafcb, 0xafcd, 0xafce, 0xafd4, 0xafdc,
+ 0xafe8, 0xafe9, 0xaff0, 0xaff1, 0xaff4, 0xaff8, 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010, 0xb014, 0xb01c, 0xb01d, 0xb028, 0xb044,
+ 0xb045, 0xb048, 0xb04a, 0xb04c, 0xb04e, 0xb053, 0xb054, 0xb055, 0xb057, 0xb059, 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c,
+ 0xb08d, 0xb08f, 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f, 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad,
+ 0xb0ae, 0xb0af, 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc, 0xb0c4, 0xb0c5, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4,
+ 0xb0d8, 0xb0e0, 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110, 0xb112, 0xb113, 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123,
+ 0xb124, 0xb125, 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138, 0xb139, 0xb140, 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154,
+ 0xb155, 0xb158, 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180, 0xb182, 0xb188, 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194,
+ 0xb198, 0xb19c, 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd, 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd,
+ 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217, 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268,
+ 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290, 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3,
+ 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9, 0xb2cc, 0xb2d0, 0xb2d6, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2,
+ 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa,
+ 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311, 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358,
+ 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365, 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378, 0xb380, 0xb381,
+ 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394, 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb, 0xb3cc, 0xb3ce,
+ 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db, 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c, 0xb420, 0xb428,
+ 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454, 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488, 0xb49d, 0xb4a4,
+ 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0, 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3, 0xb4e4, 0xb4e6,
+ 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514, 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528, 0xb529, 0xb52a,
+ 0xb530, 0xb531, 0xb534, 0xb538, 0xb540, 0xb541, 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c, 0xb54d, 0xb550, 0xb554, 0xb55c, 0xb55d,
+ 0xb55f, 0xb560, 0xb561, 0xb5a0, 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc,
+ 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc, 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610, 0xb611, 0xb614, 0xb618, 0xb625, 0xb62c,
+ 0xb634, 0xb648, 0xb664, 0xb668, 0xb69c, 0xb69d, 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4, 0xb6f0, 0xb6f4, 0xb6f8, 0xb700,
+ 0xb701, 0xb705, 0xb728, 0xb729, 0xb72c, 0xb72f, 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744, 0xb748, 0xb74c, 0xb754, 0xb755, 0xb760,
+ 0xb764, 0xb768, 0xb770, 0xb771, 0xb773, 0xb775, 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c, 0xb78d, 0xb78f, 0xb790, 0xb791, 0xb792,
+ 0xb796, 0xb797, 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9, 0xb7ab, 0xb7ac, 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9,
+ 0xb7ec, 0xb7ed, 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800, 0xb801, 0xb807, 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819,
+ 0xb81b, 0xb81d, 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835, 0xb837, 0xb838, 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c,
+ 0xb85d, 0xb860, 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878, 0xb87c, 0xb88d, 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1,
+ 0xb8c3, 0xb8c5, 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1, 0xb8e8, 0xb8e9, 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd,
+ 0xb904, 0xb918, 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c, 0xb94f, 0xb951, 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969,
+ 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985, 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0,
+ 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db,
+ 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec, 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01,
+ 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48, 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58,
+ 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71, 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8,
+ 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb, 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc, 0xbb00, 0xbb04,
+ 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20, 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e,
+ 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f, 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c, 0xbb90, 0xbba4,
+ 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4, 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00, 0xbc02, 0xbc08,
+ 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11, 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f,
+ 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30, 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45, 0xbc49, 0xbc4c,
+ 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88, 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97, 0xbc99, 0xbc9a, 0xbca0, 0xbca1,
+ 0xbca4, 0xbca7, 0xbca8, 0xbcb0, 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4, 0xbccd, 0xbccf, 0xbcd0, 0xbcd1,
+ 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07, 0xbd09, 0xbd10, 0xbd14, 0xbd24, 0xbd2c,
+ 0xbd40, 0xbd48, 0xbd49, 0xbd4c, 0xbd50, 0xbd58, 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81, 0xbd84, 0xbd87, 0xbd88, 0xbd89, 0xbd8a,
+ 0xbd90, 0xbd91, 0xbd93, 0xbd95, 0xbd99, 0xbd9a, 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5, 0xbdd8, 0xbddc, 0xbde9, 0xbdf0,
+ 0xbdf4, 0xbdf8, 0xbe00, 0xbe03, 0xbe05, 0xbe0c, 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f, 0xbe44, 0xbe45, 0xbe48, 0xbe4c,
+ 0xbe4e, 0xbe54, 0xbe55, 0xbe57, 0xbe59, 0xbe5a, 0xbe5b, 0xbe60, 0xbe61, 0xbe64, 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74,
+ 0xbe75, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d, 0xbe8f, 0xbe90, 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1,
+ 0xbed4, 0xbed7, 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec, 0xbf01, 0xbf08, 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d,
+ 0xbf40, 0xbf41, 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94, 0xbfb0, 0xbfc5, 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf,
+ 0xbfe1, 0xc03c, 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069, 0xc090, 0xc091, 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5,
+ 0xc0ac, 0xc0ad, 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0bc, 0xc0bd, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9,
+ 0xc0cc, 0xc0d0, 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4, 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100,
+ 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f, 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f,
+ 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148, 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c,
+ 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178, 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c,
+ 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0, 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0,
+ 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200, 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c,
+ 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d, 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254, 0xc258, 0xc260,
+ 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c, 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b, 0xc29d, 0xc2a4,
+ 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5, 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb, 0xc2ec, 0xc2ed,
+ 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb, 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314, 0xc315, 0xc318,
+ 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345, 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c, 0xc37d, 0xc384,
+ 0xc388, 0xc38c, 0xc399, 0xc3d8, 0xc3d9, 0xc3dc, 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5, 0xc3f8, 0xc408,
+ 0xc410, 0xc424, 0xc42c, 0xc430, 0xc434, 0xc43c, 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468, 0xc46c, 0xc474, 0xc475, 0xc479, 0xc480,
+ 0xc494, 0xc49c, 0xc4b8, 0xc4bc, 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff, 0xc500, 0xc501, 0xc50c, 0xc510, 0xc514,
+ 0xc51c, 0xc528, 0xc529, 0xc52c, 0xc530, 0xc538, 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545, 0xc548, 0xc549, 0xc54a, 0xc54c, 0xc54d,
+ 0xc54e, 0xc553, 0xc554, 0xc555, 0xc557, 0xc558, 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561, 0xc564, 0xc568, 0xc570, 0xc571, 0xc573,
+ 0xc574, 0xc575, 0xc57c, 0xc57d, 0xc580, 0xc584, 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591, 0xc595, 0xc597, 0xc598, 0xc59c, 0xc5a0,
+ 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8, 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca,
+ 0xc5cc, 0xc5ce, 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1, 0xc5e3, 0xc5e5, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6,
+ 0xc5f7, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605, 0xc606, 0xc607, 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b,
+ 0xc61c, 0xc624, 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630, 0xc633, 0xc634, 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641,
+ 0xc644, 0xc648, 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c, 0xc65d, 0xc660, 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c,
+ 0xc680, 0xc688, 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698, 0xc69c, 0xc6a4, 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4,
+ 0xc6b8, 0xc6b9, 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc, 0xc6cd, 0xc6d0, 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8,
+ 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705, 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721,
+ 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c, 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751,
+ 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c, 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d,
+ 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a, 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a,
+ 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad, 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8,
+ 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8, 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a, 0xc810, 0xc811,
+ 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820, 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840, 0xc848, 0xc849,
+ 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874, 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887, 0xc88b, 0xc88c,
+ 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8, 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7, 0xc8d9, 0xc8e0,
+ 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900, 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918, 0xc92c, 0xc934,
+ 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961, 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c, 0xc990, 0xc998,
+ 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4, 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3, 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da,
+ 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2, 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8, 0xc9f9, 0xc9fc, 0xca00, 0xca08,
+ 0xca09, 0xca0b, 0xca0c, 0xca0d, 0xca14, 0xca18, 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54, 0xca5c, 0xca5d, 0xca5f, 0xca60, 0xca61,
+ 0xca68, 0xca7d, 0xca84, 0xca98, 0xcabc, 0xcabd, 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf, 0xcad1, 0xcad3, 0xcad8, 0xcad9, 0xcae0,
+ 0xcaec, 0xcaf4, 0xcb08, 0xcb10, 0xcb14, 0xcb18, 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49, 0xcb4c, 0xcb50, 0xcb58, 0xcb59, 0xcb5d,
+ 0xcb64, 0xcb78, 0xcb79, 0xcb9c, 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10, 0xcc14, 0xcc1c, 0xcc1d, 0xcc21,
+ 0xcc22, 0xcc27, 0xcc28, 0xcc29, 0xcc2c, 0xcc2e, 0xcc30, 0xcc38, 0xcc39, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48,
+ 0xcc4c, 0xcc54, 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64, 0xcc66, 0xcc68, 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0,
+ 0xcca8, 0xcca9, 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8, 0xccbc, 0xccc4, 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4,
+ 0xccec, 0xccf0, 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18, 0xcd19, 0xcd1b, 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c,
+ 0xcd60, 0xcd64, 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88, 0xcd94, 0xcd95, 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9,
+ 0xcdb0, 0xcdc4, 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8, 0xcdf9, 0xcdfb, 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19,
+ 0xce20, 0xce21, 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35, 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69,
+ 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85, 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1,
+ 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5, 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9,
+ 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15, 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31,
+ 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67, 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c,
+ 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8, 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011,
+ 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c, 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060, 0xd06c, 0xd06d,
+ 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4, 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0, 0xd0c1, 0xd0c4,
+ 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4, 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef, 0xd0f0, 0xd0f1,
+ 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138, 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d, 0xd150, 0xd154,
+ 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c, 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0, 0xd1b1, 0xd1b3,
+ 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4, 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234, 0xd23c, 0xd23d,
+ 0xd23f, 0xd241, 0xd248, 0xd25c, 0xd264, 0xd280, 0xd281, 0xd284, 0xd288, 0xd290, 0xd291, 0xd295, 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac,
+ 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc, 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8, 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0,
+ 0xd2f1, 0xd2f4, 0xd2f8, 0xd300, 0xd301, 0xd303, 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310, 0xd314, 0xd316, 0xd31c, 0xd31d, 0xd31f,
+ 0xd320, 0xd321, 0xd325, 0xd328, 0xd329, 0xd32c, 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c, 0xd33d, 0xd344, 0xd345, 0xd37c, 0xd37d,
+ 0xd380, 0xd384, 0xd38c, 0xd38d, 0xd38f, 0xd390, 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0, 0xd3a8, 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4,
+ 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5, 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed, 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd,
+ 0xd3ff, 0xd401, 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460, 0xd464, 0xd46d, 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480,
+ 0xd482, 0xd488, 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc, 0xd4d0, 0xd4d4, 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8,
+ 0xd4fb, 0xd4fd, 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517, 0xd53c, 0xd53d, 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551,
+ 0xd558, 0xd559, 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b, 0xd56d, 0xd574, 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587,
+ 0xd588, 0xd589, 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0, 0xd5d2, 0xd5d8, 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8,
+ 0xd5ec, 0xd5f4, 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604, 0xd608, 0xd610, 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620,
+ 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648, 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c,
+ 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c, 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac,
+ 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1, 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5,
+ 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c, 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738,
+ 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756, 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769,
+ 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789, 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d
+};
+
+uint16 ConvertKSToUCS2(uint16 code) {
+ uint16 c1 = code & 0xff;
+ uint16 c2 = code >> 8;
+ uint16 index = (c1 - 0xb0) * 94 + c2 - 0xa1;
+ assert(index < 2350);
+
+ return _ksToUcs2Table[index];
}
-
FontKorean *FontKorean::createFont(const char * fontFile) {
FontKorean *ret = 0;
@@ -392,15 +496,14 @@ bool FontKoreanSVM::hasFeature(int feat) const {
return (((_fontWidth == 8) ? features8 : features16) & feat) ? true : false;
}
+// FIXME: Unused?
const uint8 *FontKoreanSVM::getCharDataPCE(uint16 c) const {
if (isASCII(c))
return 0;
- //c += 256; // HACK
- if(!checkKorCode(c % 256, c / 256))
- //if (c < 0xAC00 || c >= 0xD7A4)
+ if (!checkKorCode(c % 256, c / 256))
return 0;
- uint16 uc = _KS_to_unicode(c);
+ uint16 uc = ConvertKSToUCS2(c);
const uint offset = (uc - 0xAC00) * 8;
assert(offset + 96 <= _fontData8x8Size); // 11184 * 8
@@ -413,11 +516,9 @@ const uint8 *FontKoreanSVM::getCharDataDefault(uint16 c) const {
assert(offset <= _fontData8x16Size);
return _fontData8x16 + offset;
} else {
- //c += 256; // HACK
- if(!checkKorCode(c % 256, c / 256))
- //if (c < 0xAC00 || c >= 0xD7B0)
+ if (!checkKorCode(c % 256, c / 256))
return 0;
- uint16 uc = _KS_to_unicode(c);
+ uint16 uc = ConvertKSToUCS2(c);
const uint offset = (uc - 0xAC00) * 32;
assert(offset + 384 <= _fontData16x16Size); // 11184 * 32
diff --git a/graphics/korfont.h b/graphics/korfont.h
index fab328b60a..f79cc15126 100644
--- a/graphics/korfont.h
+++ b/graphics/korfont.h
@@ -28,10 +28,6 @@
namespace Graphics {
-bool checkKorCode(byte hi, byte lo);
-int get_oem_code_page(uint16 code);
-uint16 _KS_to_unicode(uint16 ksc);
-
/**
* A font that is able to draw Korean encoded characters.
*/
Commit: b60aa001753c54883d08f3e3c9c57b849754ab68
https://github.com/scummvm/scummvm/commit/b60aa001753c54883d08f3e3c9c57b849754ab68
Author: wonst719 (wonst719 at gmail.com)
Date: 2020-11-08T22:26:31+02:00
Commit Message:
SCI: Improve comment on Korean fan translated versions
Changed paths:
engines/sci/detection_tables.h
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 3197f36706..ca55e2fda3 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -147,7 +147,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformDOS, 0, GUIO_STD16 },
- // Castle of Dr. Brain - Korean DOS Floppy 1.1
+ // Castle of Dr. Brain - Korean fan translation, based on English DOS Floppy 1.1
{"castlebrain", "", {
{"resource.map", 0, "f77728304c70017c54793eb6ca648174", 2745},
{"resource.000", 0, "27ec5fa09cd12a7fd16e86d96a2ed245", 347071},
@@ -553,7 +553,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO_STD16_SPEECH_GM },
- // Eco Quest - Korean DOS CD 1.1
+ // Eco Quest - Korean fan translation, based on English DOS CD 1.1
// SCI interpreter version 1.001.064
{"ecoquest", "CD", {
{"resource.aud", 0, "1971dcb007a0c064c152175400f4021b", 305187924},
@@ -853,7 +853,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO_GK1_CD_WIN },
- // Gabriel Knight - Korean Windows CD (from aquilegia)
+ // Gabriel Knight - Korean fan translation, based on English Windows CD
// Executable scanning reports "2.000.000", VERSION file reports "01.100.000"
{"gk1", "CD", {
{"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10996},
@@ -1709,7 +1709,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformDOS, 0, GUIO_STD16 },
- // King's Quest 5 - Korean DOS Floppy
+ // King's Quest 5 - Korean fan translation, based on English DOS Floppy
// SCI interpreter version 1.000.060
{"kq5", "", {
{"resource.map", 0, "d6172c27b453350e158815fbae23f41e", 8004},
@@ -2074,7 +2074,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO_KQ6_CD_WINDOWS },
- // King's Quest 6 - Korean DOS Floppy (supplied by aquilegia)
+ // King's Quest 6 - Korean fan translation, based on English DOS Floppy
{"kq6", "", {
{"resource.map", 0, "a362063318eebe7d6423b1d9dc6213e1", 8703},
{"resource.000", 0, "f2b7f753992c56a0c7a08d6a5077c895", 7863324},
@@ -2082,7 +2082,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::KO_KOR, Common::kPlatformDOS, 0, GUIO_STD16 },
- // King's Quest 6 - Korean DOS CD (from the King's Quest Collection)
+ // King's Quest 6 - Korean fan translation, based on English DOS CD (from the King's Quest Collection)
// Executable scanning reports "1.cfs.158", VERSION file reports "1.034 9/11/94 - KQ6 version 1.000.00G"
// SCI interpreter version 1.001.054
{"kq6", "CD", {
@@ -2092,7 +2092,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO5(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING) },
- // King's Quest 6 - Korean Windows CD (from the King's Quest Collection)
+ // King's Quest 6 - Korean fan translation, based on English Windows CD (from the King's Quest Collection)
// Executable scanning reports "1.cfs.158", VERSION file reports "1.034 9/11/94 - KQ6 version 1.000.00G"
// SCI interpreter version 1.001.054
{"kq6", "CD", {
@@ -2410,7 +2410,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO_STD16_SPEECH },
- // Laura Bow 2 - Korean DOS CD (from "The Roberta Williams Antology"/1996)
+ // Laura Bow 2 - Korean fan translation, based on English DOS CD (from "The Roberta Williams Antology"/1996)
// Executable scanning reports "1.001.072", VERSION file reports "1.1" (from jvprat)
// SCI interpreter version 1.001.069 (just a guess)
{"laurabow2", "CD", {
@@ -5291,7 +5291,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, GUIO6(GUIO_MIDIGM, GAMEOPTION_SQ4_SILVER_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING) },
- // Space Quest 4 - Korean DOS CD (from the Space Quest Collection)
+ // Space Quest 4 - Korean fan translation, based on English DOS CD (from the Space Quest Collection)
// Executable scanning reports "1.001.064", VERSION file reports "1.0"
{"sq4", "", {
{"resource.map", 0, "ed90a8e3ccc53af6633ff6ab58392bae", 7054},
Commit: 00bd55284046e0abdb7dd7d324ccd1f94194d21c
https://github.com/scummvm/scummvm/commit/00bd55284046e0abdb7dd7d324ccd1f94194d21c
Author: wonst719 (wonst719 at gmail.com)
Date: 2020-11-08T22:26:31+02:00
Commit Message:
SCI: Korean code cleanup
- Move repeated message.map tests into ResourceManager::isKoreanMessageMap()
- Fix comments
- Fix formatting
- Remove unused codes
Changed paths:
engines/sci/graphics/cache.cpp
engines/sci/graphics/text16.cpp
engines/sci/graphics/text32.cpp
engines/sci/resource.cpp
engines/sci/resource.h
graphics/korfont.cpp
graphics/korfont.h
diff --git a/engines/sci/graphics/cache.cpp b/engines/sci/graphics/cache.cpp
index 15017b5346..28129abadc 100644
--- a/engines/sci/graphics/cache.cpp
+++ b/engines/sci/graphics/cache.cpp
@@ -68,12 +68,10 @@ GfxFont *GfxCache::getFont(GuiResourceId fontId) {
if (!_cachedFonts.contains(fontId)) {
// Create special Korean font in korean games, when font 1001 is selected
- if ((fontId == 1001) && (g_sci->getLanguage() == Common::KO_KOR)) {
+ if ((fontId == 1001) && (g_sci->getLanguage() == Common::KO_KOR))
_cachedFonts[fontId] = new GfxFontKorean(_screen, fontId);
- }
- else
// Create special SJIS font in japanese games, when font 900 is selected
- if ((fontId == 900) && (g_sci->getLanguage() == Common::JA_JPN))
+ else if((fontId == 900) && (g_sci->getLanguage() == Common::JA_JPN))
_cachedFonts[fontId] = new GfxFontSjis(_screen, fontId);
else
_cachedFonts[fontId] = new GfxFontFromResource(_resMan, _screen, fontId);
diff --git a/engines/sci/graphics/text16.cpp b/engines/sci/graphics/text16.cpp
index f5c020e18b..4eb9234cff 100644
--- a/engines/sci/graphics/text16.cpp
+++ b/engines/sci/graphics/text16.cpp
@@ -693,7 +693,7 @@ void GfxText16::DrawStatus(const Common::String &strOrig) {
}
}
-// korean and then switch to font 1001
+// Check for Korean strings, and use font 1001 to render them
bool GfxText16::SwitchToFont1001OnKorean(const char *text, uint16 languageSplitter) {
byte firstChar = (*(const byte *)text++);
if (languageSplitter != 0x6b23) { // #k prefix as language splitter
diff --git a/engines/sci/graphics/text32.cpp b/engines/sci/graphics/text32.cpp
index 2c0a2fc96a..d7debd08e7 100644
--- a/engines/sci/graphics/text32.cpp
+++ b/engines/sci/graphics/text32.cpp
@@ -56,7 +56,7 @@ GfxText32::GfxText32(SegManager *segMan, GfxCache *fonts) :
void GfxText32::init() {
_xResolution = g_sci->_gfxFrameout->getScriptWidth();
_yResolution = g_sci->_gfxFrameout->getScriptHeight();
- // GK1 Korean pathed version use doubled resolution for font
+ // GK1 Korean patched version uses doubled resolution for fonts
if (g_sci->getGameId() == GID_GK1 && g_sci->getLanguage() == Common::KO_KOR) {
_xResolution = _xResolution * 2;
_yResolution = _yResolution * 2;
@@ -870,7 +870,7 @@ void GfxText32::scrollLine(const Common::String &lineText, int numLines, uint8 c
drawText(0, lineText.size());
}
-// korean and then switch to font 1001
+// Check for Korean strings, and use font 1001 to render them
bool GfxText32::SwitchToFont1001OnKorean(const char *text) {
//byte firstChar = (*(const byte *)text++);
if (1/*(firstChar >= 0xA1) && (firstChar <= 0xFE)*/) {
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index 6a55009340..b316619b29 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -861,8 +861,7 @@ void DirectoryResourceSource::scanSource(ResourceManager *resMan) {
}
void ExtMapResourceSource::scanSource(ResourceManager *resMan) {
- if (resMan->_mapVersion < kResVersionSci1Late &&
- !(getLocationName() == "message.map" && g_sci->getLanguage() == Common::KO_KOR)) {
+ if (resMan->_mapVersion < kResVersionSci1Late && !resMan->isKoreanMessageMap(this)) {
if (resMan->readResourceMapSCI0(this) != SCI_ERROR_NONE) {
resMan->_hasBadResources = true;
}
@@ -1934,7 +1933,7 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) {
memset(resMap, 0, sizeof(resource_index_t) * 32);
byte type = 0, prevtype = 0;
byte nEntrySize = _mapVersion == kResVersionSci11 ? SCI11_RESMAP_ENTRIES_SIZE : SCI1_RESMAP_ENTRIES_SIZE;
- if (map->getLocationName() == "message.map" && g_sci->getLanguage() == Common::KO_KOR)
+ if (isKoreanMessageMap(map))
nEntrySize = SCI1_RESMAP_ENTRIES_SIZE;
ResourceId resId;
@@ -1963,7 +1962,7 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) {
for (int i = 0; i < resMap[type].wSize; i++) {
uint16 number = fileStream->readUint16LE();
int volume_nr = 0;
- if (_mapVersion == kResVersionSci11 && !(map->getLocationName() == "message.map" && g_sci->getLanguage() == Common::KO_KOR)) {
+ if (_mapVersion == kResVersionSci11 && !isKoreanMessageMap(map)) {
// offset stored in 3 bytes
fileOffset = fileStream->readUint16LE();
fileOffset |= fileStream->readByte() << 16;
@@ -1971,7 +1970,7 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) {
} else {
// offset/volume stored in 4 bytes
fileOffset = fileStream->readUint32LE();
- if (_mapVersion < kResVersionSci11 && !(map->getLocationName() == "message.map" && g_sci->getLanguage() == Common::KO_KOR)) {
+ if (_mapVersion < kResVersionSci11 && !isKoreanMessageMap(map)) {
volume_nr = fileOffset >> 28; // most significant 4 bits
fileOffset &= 0x0FFFFFFF; // least significant 28 bits
} else {
@@ -3089,6 +3088,10 @@ Common::String ResourceManager::findSierraGameId(const bool isBE) {
return heap->getStringAt(offset);
}
+bool ResourceManager::isKoreanMessageMap(ResourceSource *source) {
+ return source->getLocationName() == "message.map" && g_sci->getLanguage() == Common::KO_KOR;
+}
+
const Common::String &Resource::getResourceLocation() const {
return _source->getLocationName();
}
diff --git a/engines/sci/resource.h b/engines/sci/resource.h
index 9fe0f0aaa6..b4bee9fc9a 100644
--- a/engines/sci/resource.h
+++ b/engines/sci/resource.h
@@ -644,6 +644,9 @@ protected:
bool checkResourceForSignatures(ResourceType resourceType, uint16 resourceNr, const byte *signature1, const byte *signature2);
void detectSciVersion();
+public:
+ bool isKoreanMessageMap(ResourceSource *source);
+
private:
// For better or worse, because the patcher is added as a ResourceSource,
// its destruction is managed by freeResourceSources.
diff --git a/graphics/korfont.cpp b/graphics/korfont.cpp
index 3a39871875..ecbcfce4bf 100644
--- a/graphics/korfont.cpp
+++ b/graphics/korfont.cpp
@@ -268,7 +268,6 @@ uint FontKoreanBase::getMaxFontWidth() const {
uint FontKoreanBase::getCharWidth(uint16 ch) const {
if (isASCII(ch))
- //return ((_drawMode == kOutlineMode) ? 10 : (_drawMode == kDefaultMode ? 8 : 9));
return ((_drawMode == kOutlineMode) ? _fontWidth / 2 + 2 : (_drawMode == kDefaultMode ? _fontWidth / 2 : _fontWidth / 2 + 1));
else
return getMaxFontWidth();
diff --git a/graphics/korfont.h b/graphics/korfont.h
index f79cc15126..091c71a5e4 100644
--- a/graphics/korfont.h
+++ b/graphics/korfont.h
@@ -143,11 +143,11 @@ protected:
virtual const uint8 *getCharData(uint16 c) const = 0;
enum DrawingFeature {
- kFeatDefault = 1 << 0,
- kFeatOutline = 1 << 1,
- kFeatShadow = 1 << 2,
- kFeatFMTownsShadow = 1 << 3,
- kFeatFlipped = 1 << 4
+ kFeatDefault = 1 << 0,
+ kFeatOutline = 1 << 1,
+ kFeatShadow = 1 << 2,
+ kFeatFMTownsShadow = 1 << 3,
+ kFeatFlipped = 1 << 4
};
virtual bool hasFeature(int feat) const = 0;
Commit: a615b7a66c0bba70d3d434678738e2be733afe09
https://github.com/scummvm/scummvm/commit/a615b7a66c0bba70d3d434678738e2be733afe09
Author: wonst719 (wonst719 at gmail.com)
Date: 2020-11-08T22:26:31+02:00
Commit Message:
SCI: Fix Korean detection table entries
- Remove GK1 exception in GfxFrameout::detectHiRes()
Changed paths:
engines/sci/detection_tables.h
engines/sci/graphics/frameout.cpp
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index ca55e2fda3..b77904e4f1 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -860,7 +860,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 12581736},
{"resource.msg", 0, "5a35e00e0b8d656ff423b76831a86ab8", 980765},
AD_LISTEND},
- Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO_GK1_CD_DOS },
+ Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO3(GUIO_LINKSPEECHTOSFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_HQ_VIDEO) },
{"gk1", "CD", {
{"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10996},
@@ -2090,7 +2090,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "233394a5f33b475ae5975e7e9a420865", 8376352},
{"resource.msg", 0, "51ca9f8afc42ef442f6545b3c82a9165", 596121},
AD_LISTEND},
- Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO5(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING) },
+ Common::KO_KOR, Common::kPlatformDOS, ADGF_CD, GUIO4(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING) },
// King's Quest 6 - Korean fan translation, based on English Windows CD (from the King's Quest Collection)
// Executable scanning reports "1.cfs.158", VERSION file reports "1.034 9/11/94 - KQ6 version 1.000.00G"
@@ -2100,7 +2100,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"resource.000", 0, "233394a5f33b475ae5975e7e9a420865", 8376352},
{"resource.msg", 0, "51ca9f8afc42ef442f6545b3c82a9165", 596121},
AD_LISTEND},
- Common::KO_KOR, Common::kPlatformWindows, ADGF_CD, GUIO6(GUIO_NOASPECT, GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_KQ6_WINDOWS_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE) },
+ Common::KO_KOR, Common::kPlatformWindows, ADGF_CD, GUIO5(GUIO_NOASPECT, GAMEOPTION_KQ6_WINDOWS_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE) },
// King's Quest 6 - English Macintosh Floppy
// VERSION file reports "1.0"
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 1ce4e0989f..0402ffa496 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -146,11 +146,6 @@ bool GfxFrameout::detectHiRes() const {
return false;
}
- // GK1 Korean pathed version is high resolution only
- if (g_sci->getGameId() == GID_GK1 && g_sci->getLanguage() == Common::KO_KOR) {
- return true;
- }
-
// GK1 DOS floppy is low resolution only, but GK1 Mac floppy is high
// resolution only
if (g_sci->getGameId() == GID_GK1 &&
Commit: e2415b59d6bfc2ff3b324b7f0cf7e87341b36ead
https://github.com/scummvm/scummvm/commit/e2415b59d6bfc2ff3b324b7f0cf7e87341b36ead
Author: wonst719 (wonst719 at gmail.com)
Date: 2020-11-08T22:26:31+02:00
Commit Message:
SCI: Change Korean text detection method
Changed paths:
engines/sci/graphics/text16.cpp
engines/sci/graphics/text32.cpp
diff --git a/engines/sci/graphics/text16.cpp b/engines/sci/graphics/text16.cpp
index 4eb9234cff..fc5ff44b9c 100644
--- a/engines/sci/graphics/text16.cpp
+++ b/engines/sci/graphics/text16.cpp
@@ -450,10 +450,12 @@ int16 GfxText16::Size(Common::Rect &rect, const char *text, uint16 languageSplit
rect.right = (maxWidth ? maxWidth : 192);
const char *curTextPos = text; // in work position for GetLongest()
const char *curTextLine = text; // starting point of current line
+
+ // Check for Korean text
+ if (g_sci->getLanguage() == Common::KO_KOR)
+ SwitchToFont1001OnKorean(curTextPos, languageSplitter);
+
while (*curTextPos) {
- // We need to check for Korean-EUCKR every line
- if (g_sci->getLanguage() == Common::KO_KOR)
- SwitchToFont1001OnKorean(curTextPos, languageSplitter);
// We need to check for Shift-JIS every line
if (g_sci->getLanguage() == Common::JA_JPN)
SwitchToFont900OnSjis(curTextPos, languageSplitter);
@@ -548,17 +550,20 @@ void GfxText16::Box(const char *text, uint16 languageSplitter, bool show, const
else
fontId = previousFontId;
+ // Check for Korean text
+ if (g_sci->getLanguage() == Common::KO_KOR) {
+ if (SwitchToFont1001OnKorean(curTextPos, languageSplitter)) {
+ doubleByteMode = true;
+ fontId = 1001;
+ }
+ }
+
// Reset reference code rects
_codeRefRects.clear();
_codeRefTempRect.left = _codeRefTempRect.top = -1;
maxTextWidth = 0;
while (*curTextPos) {
- // We need to check for Korean-EUCKR every line
- if (g_sci->getLanguage() == Common::KO_KOR) {
- if (SwitchToFont1001OnKorean(curTextPos, languageSplitter))
- doubleByteMode = true;
- }
// We need to check for Shift-JIS every line
// Police Quest 2 PC-9801 often draws English + Japanese text during the same call
if (g_sci->getLanguage() == Common::JA_JPN) {
@@ -695,11 +700,21 @@ void GfxText16::DrawStatus(const Common::String &strOrig) {
// Check for Korean strings, and use font 1001 to render them
bool GfxText16::SwitchToFont1001OnKorean(const char *text, uint16 languageSplitter) {
- byte firstChar = (*(const byte *)text++);
+ const byte* ptr = (const byte *)text;
if (languageSplitter != 0x6b23) { // #k prefix as language splitter
- if ((firstChar >= 0xA1) && (firstChar <= 0xFE)) {
- SetFont(1001);
- return true;
+ // Check if the text contains at least one Korean character
+ while (*ptr) {
+ byte ch = *ptr++;
+ if (ch >= 0xB0 && ch <= 0xC8) {
+ ch = *ptr++;
+ if (!ch)
+ return false;
+
+ if (ch >= 0xA1 && ch <= 0xFE) {
+ SetFont(1001);
+ return true;
+ }
+ }
}
}
return false;
diff --git a/engines/sci/graphics/text32.cpp b/engines/sci/graphics/text32.cpp
index d7debd08e7..ce62f6beda 100644
--- a/engines/sci/graphics/text32.cpp
+++ b/engines/sci/graphics/text32.cpp
@@ -338,12 +338,13 @@ void GfxText32::drawTextBox() {
}
}
+ // Check for Korean text
+ if (g_sci->getLanguage() == Common::KO_KOR)
+ SwitchToFont1001OnKorean(text);
+
charIndex = 0;
uint nextCharIndex = 0;
while (*text != '\0') {
- // We need to check for Korean-EUCKR every line
- if (g_sci->getLanguage() == Common::KO_KOR)
- SwitchToFont1001OnKorean(text);
_drawPosition.x = _textRect.left;
uint length = getLongest(&nextCharIndex, textRectWidth);
@@ -719,12 +720,14 @@ Common::Rect GfxText32::getTextSize(const Common::String &text, int16 maxWidth,
if (_text.size() > 0) {
const char *rawText = _text.c_str();
const char *sourceText = rawText;
+
+ // Check for Korean text
+ if (g_sci->getLanguage() == Common::KO_KOR)
+ SwitchToFont1001OnKorean(rawText);
+
uint charIndex = 0;
uint nextCharIndex = 0;
while (*rawText != '\0') {
- // We need to check for Korean-EUCKR every line
- if (g_sci->getLanguage() == Common::KO_KOR)
- SwitchToFont1001OnKorean(rawText);
uint length = getLongest(&nextCharIndex, result.width());
textWidth = MAX(textWidth, getTextWidth(charIndex, length));
charIndex = nextCharIndex;
@@ -872,10 +875,20 @@ void GfxText32::scrollLine(const Common::String &lineText, int numLines, uint8 c
// Check for Korean strings, and use font 1001 to render them
bool GfxText32::SwitchToFont1001OnKorean(const char *text) {
- //byte firstChar = (*(const byte *)text++);
- if (1/*(firstChar >= 0xA1) && (firstChar <= 0xFE)*/) {
- setFont(1001);
- return true;
+ const byte *ptr = (const byte *)text;
+ // Check if the text contains at least one Korean character
+ while (*ptr) {
+ byte ch = *ptr++;
+ if (ch >= 0xB0 && ch <= 0xC8) {
+ ch = *ptr++;
+ if (!ch)
+ return false;
+
+ if (ch >= 0xA1 && ch <= 0xFE) {
+ setFont(1001);
+ return true;
+ }
+ }
}
return false;
}
More information about the Scummvm-git-logs
mailing list