summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2003-04-24 11:26:04 +0000
committerVladimir Glazounov <vg@openoffice.org>2003-04-24 11:26:04 +0000
commit5b58927e9af3abf4f728686b43d36d1cd0210a7a (patch)
treedf342b2f20857dfc35d555a0a1aa80c9b7bc8e80
parent6705b4531d1c483151a3251aaaa05a2200de7f94 (diff)
cws_srx644_i18napi -> HEAD
-rw-r--r--i18nutil/inc/i18nutil/casefolding.hxx127
-rw-r--r--i18nutil/inc/i18nutil/oneToOneMapping.hxx96
-rw-r--r--i18nutil/inc/i18nutil/unicode.hxx98
-rw-r--r--i18nutil/inc/i18nutil/widthfolding.hxx84
-rw-r--r--i18nutil/inc/i18nutil/x_rtl_ustring.h115
-rw-r--r--i18nutil/prj/build.lst3
-rw-r--r--i18nutil/prj/d.lst20
-rw-r--r--i18nutil/source/utility/casefolding.cxx182
-rw-r--r--i18nutil/source/utility/casefolding_data.h845
-rw-r--r--i18nutil/source/utility/makefile.mk87
-rw-r--r--i18nutil/source/utility/oneToOneMapping.cxx138
-rw-r--r--i18nutil/source/utility/unicode.cxx342
-rw-r--r--i18nutil/source/utility/unicode_data.h1667
-rw-r--r--i18nutil/source/utility/widthfolding.cxx236
-rw-r--r--i18nutil/source/utility/widthfolding_data.h955
15 files changed, 4995 insertions, 0 deletions
diff --git a/i18nutil/inc/i18nutil/casefolding.hxx b/i18nutil/inc/i18nutil/casefolding.hxx
new file mode 100644
index 000000000000..08593b43c28a
--- /dev/null
+++ b/i18nutil/inc/i18nutil/casefolding.hxx
@@ -0,0 +1,127 @@
+/*************************************************************************
+ *
+ * $RCSfile: casefolding.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:25:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef INCLUDED_I18NUTIL_CASEFOLDING_HXX
+#define INCLUDED_I18NUTIL_CASEFOLDING_HXX
+
+#ifndef _SAL_TYPES_H_
+#include <sal/types.h>
+#endif
+
+#ifndef _COM_SUN_STAR_I18N_TRANSLITERATIONMODULES_HPP_
+#include <com/sun/star/i18n/TransliterationModules.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_
+#include <com/sun/star/lang/Locale.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UNO_RUNTIMEEXCEPTION_HPP_
+#include <com/sun/star/uno/RuntimeException.hpp>
+#endif
+
+namespace com { namespace sun { namespace star { namespace i18n {
+
+#define MappingTypeLowerToUpper 1 << 0 // Upper to Lower mapping
+#define MappingTypeUpperToLower 1 << 1 // Lower to Upper mapping
+#define MappingTypeToUpper 1 << 2 // to Upper mapping
+#define MappingTypeToLower 1 << 3 // to Lower mapping
+#define MappingTypeToTitle 1 << 4 // to Title mapping
+#define MappingTypeSimpleFolding 1 << 5 // Simple Case Folding
+#define MappingTypeFullFolding 1 << 6 // Full Case Folding
+#define MappingTypeMask MappingTypeLowerToUpper|MappingTypeUpperToLower|\
+ MappingTypeToUpper|MappingTypeToLower|MappingTypeToTitle|\
+ MappingTypeSimpleFolding|MappingTypeFullFolding
+
+#define ValueTypeNotValue 1 << 7 // Value field is an address
+
+#define CasedLetter MappingTypeMask // for final sigmar
+
+struct Value
+{
+ sal_uInt8 type;
+ sal_uInt16 value; // value or address, depend on the type
+};
+
+struct Mapping
+{
+ sal_uInt8 type;
+ sal_Int8 nmap;
+#define NMAPPINGMAX 3
+ sal_Unicode map[NMAPPINGMAX];
+}; // for Unconditional mapping
+
+struct MappingElement
+{
+ MappingElement() {element.nmap = current = 0;};
+ Mapping element;
+ sal_Int8 current;
+};
+
+class casefolding
+{
+public:
+ static Mapping& getValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, com::sun::star::lang::Locale& aLocale, sal_uInt8 nMappingType) throw (com::sun::star::uno::RuntimeException);
+ static Mapping& getConditionalValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, com::sun::star::lang::Locale& aLocale, sal_uInt8 nMappingType) throw (com::sun::star::uno::RuntimeException);
+ static sal_Unicode getNextChar(const sal_Unicode *str, sal_Int32& idx, sal_Int32 len, MappingElement& e, com::sun::star::lang::Locale& aLocale,sal_uInt8 nMappingtype, TransliterationModules moduleLoaded) throw (com::sun::star::uno::RuntimeException);
+
+};
+
+} } } }
+
+#endif
diff --git a/i18nutil/inc/i18nutil/oneToOneMapping.hxx b/i18nutil/inc/i18nutil/oneToOneMapping.hxx
new file mode 100644
index 000000000000..e70f39e83c57
--- /dev/null
+++ b/i18nutil/inc/i18nutil/oneToOneMapping.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * $RCSfile: oneToOneMapping.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:25:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef INCLUDED_I18NUTIL_TRANSLITERATION_ONETOONEMAPPING_HXX
+#define INCLUDED_I18NUTIL_TRANSLITERATION_ONETOONEMAPPING_HXX
+
+#include <utility>
+#include <rtl/ustring.hxx>
+
+namespace com { namespace sun { namespace star { namespace i18n {
+
+typedef std::pair< sal_Unicode, sal_Unicode > OneToOneMappingTable_t;
+
+#define MAKE_PAIR(item1,item2) std::make_pair< sal_Unicode, sal_Unicode >((sal_Unicode)item1,(sal_Unicode)item2)
+
+class oneToOneMapping
+{
+public:
+ oneToOneMapping(OneToOneMappingTable_t *_table, const size_t _bytes);
+ ~oneToOneMapping();
+
+ // make index for fast search
+ void makeIndex();
+ // binary search / idex search
+ sal_Unicode find(const sal_Unicode key) const;
+
+ // translator
+ sal_Unicode operator[] (const sal_Unicode key) const { return find (key); };
+
+protected:
+ OneToOneMappingTable_t *table;
+ size_t max_size;
+ int *index[256];
+ sal_Bool hasIndex;
+};
+
+} } } }
+
+#endif // _I18N_TRANSLITERATION_ONETOONEMAPPING_HXX_
diff --git a/i18nutil/inc/i18nutil/unicode.hxx b/i18nutil/inc/i18nutil/unicode.hxx
new file mode 100644
index 000000000000..a2aed2734e45
--- /dev/null
+++ b/i18nutil/inc/i18nutil/unicode.hxx
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * $RCSfile: unicode.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:25:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef INCLUDED_I18NUTIL_UNICODE_HXX
+#define INCLUDED_I18NUTIL_UNICODE_HXX
+
+#include <com/sun/star/i18n/UnicodeScript.hpp>
+#include <sal/types.h>
+
+typedef struct _ScriptTypeList {
+ sal_Int16 from;
+ sal_Int16 to;
+} ScriptTypeList;
+
+class unicode
+{
+public:
+
+ static sal_Int16 SAL_CALL getUnicodeType( const sal_Unicode ch );
+ static sal_Bool SAL_CALL isUnicodeScriptType( const sal_Unicode ch, sal_Int16 type);
+ static sal_Int16 SAL_CALL getUnicodeScriptType( const sal_Unicode ch, ScriptTypeList *typeList = NULL, sal_Int16 unknownType = 0 );
+ static sal_uInt8 SAL_CALL getUnicodeDirection( const sal_Unicode ch );
+ static sal_Int32 SAL_CALL getCharType( const sal_Unicode ch );
+ static sal_Bool SAL_CALL isUpper( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isLower( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isTitle( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isDigit( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isControl( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isPrint( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isBase( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isAlpha( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isSpace( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isWhiteSpace( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isAlphaDigit( const sal_Unicode ch);
+ static sal_Bool SAL_CALL isPunctuation( const sal_Unicode ch);
+};
+
+#endif
+
+
+
diff --git a/i18nutil/inc/i18nutil/widthfolding.hxx b/i18nutil/inc/i18nutil/widthfolding.hxx
new file mode 100644
index 000000000000..1680de550125
--- /dev/null
+++ b/i18nutil/inc/i18nutil/widthfolding.hxx
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: widthfolding.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:25:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef INCLUDED_I18NUTIL_WIDTHFOLDING_HXX
+#define INCLUDED_I18NUTIL_WIDTHFOLDING_HXX
+
+#include <sal/types.h>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <i18nutil/oneToOneMapping.hxx>
+
+namespace com { namespace sun { namespace star { namespace i18n {
+
+class widthfolding
+{
+public:
+ static oneToOneMapping& getfull2halfTable();
+ static oneToOneMapping& gethalf2fullTable();
+ static rtl::OUString decompose_ja_voiced_sound_marks(const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, com::sun::star::uno::Sequence< sal_Int32 >& offset, sal_Bool useOffset);
+ static sal_Unicode decompose_ja_voiced_sound_marksChar2Char (sal_Unicode inChar);
+ static rtl::OUString compose_ja_voiced_sound_marks(const rtl::OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, com::sun::star::uno::Sequence< sal_Int32 >& offset, sal_Bool useOffset);
+ static sal_Unicode getCompositionChar(sal_Unicode c1, sal_Unicode c2);
+};
+
+
+} } } }
+
+#endif
diff --git a/i18nutil/inc/i18nutil/x_rtl_ustring.h b/i18nutil/inc/i18nutil/x_rtl_ustring.h
new file mode 100644
index 000000000000..3a9306230ea0
--- /dev/null
+++ b/i18nutil/inc/i18nutil/x_rtl_ustring.h
@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * $RCSfile: x_rtl_ustring.h,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:26:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef INCLUDED_I18NUTIL_X_RTL_USTRING_H
+#define INCLUDED_I18NUTIL_X_RTL_USTRING_H
+
+#ifndef _RTL_STRING_HXX_
+#include <rtl/strbuf.hxx>
+#endif
+
+#ifndef _RTL_MEMORY_H_
+#include <rtl/memory.h>
+#endif
+#include <rtl/alloc.h>
+
+
+/**
+ * Allocates a new <code>rtl_uString</code> which can hold nLen + 1 characters.
+ * The reference count is 0. The characters of room is not cleared.
+ * This method is similar to rtl_uString_new_WithLength in rtl/ustring.h, but
+ * can allocate a new string more efficiently. You need to "acquire" by such as
+ * OUString( rtl_uString * value ) if you intend to use it for a while.
+ * @param [output] newStr
+ * @param [input] nLen
+ */
+inline void SAL_CALL x_rtl_uString_new_WithLength( rtl_uString ** newStr, sal_Int32 nLen, sal_Int32 _refCount = 0 )
+{
+ *newStr = (rtl_uString*) rtl_allocateMemory ( sizeof(rtl_uString) + sizeof(sal_Unicode) * nLen);
+ (*newStr)->refCount = _refCount;
+ (*newStr)->length = nLen;
+
+ // rtl_uString is defined in rtl/ustring.h as below:
+ //typedef struct _rtl_uString
+ //{
+ // sal_Int32 refCount;
+ // sal_Int32 length;
+ // sal_Unicode buffer[1];
+ //} rtl_uString;
+}
+
+inline rtl_uString * SAL_CALL x_rtl_uString_new_WithLength( sal_Int32 nLen, sal_Int32 _refCount = 0 )
+{
+ rtl_uString *newStr = (rtl_uString*) rtl_allocateMemory ( sizeof(rtl_uString) + sizeof(sal_Unicode) * nLen);
+ newStr->refCount = _refCount;
+ newStr->length = nLen;
+ return newStr;
+}
+
+/**
+ * Release <code>rtl_uString</code> regardless its reference count.
+ */
+inline void SAL_CALL x_rtl_uString_release( rtl_uString * value )
+{
+ rtl_freeMemory(value);
+}
+
+
+#endif // #ifndef _I18N_X_RTL_USTRING_H_
diff --git a/i18nutil/prj/build.lst b/i18nutil/prj/build.lst
new file mode 100644
index 000000000000..58152feacdb2
--- /dev/null
+++ b/i18nutil/prj/build.lst
@@ -0,0 +1,3 @@
+inu i18nutil : sal cppu NULL
+inu i18nutil usr1 - all inu_mkout NULL
+inu i18nutil\source\utility nmake - all inu_utility NULL
diff --git a/i18nutil/prj/d.lst b/i18nutil/prj/d.lst
new file mode 100644
index 000000000000..a07cab08398a
--- /dev/null
+++ b/i18nutil/prj/d.lst
@@ -0,0 +1,20 @@
+
+mkdir: %_DEST%\inc%_EXT%\i18nutil
+
+..\inc\i18nutil\casefolding.hxx %_DEST%\inc%_EXT%\i18nutil\casefolding.hxx
+..\inc\i18nutil\oneToOneMapping.hxx %_DEST%\inc%_EXT%\i18nutil\oneToOneMapping.hxx
+..\inc\i18nutil\unicode.hxx %_DEST%\inc%_EXT%\i18nutil\unicode.hxx
+..\inc\i18nutil\widthfolding.hxx %_DEST%\inc%_EXT%\i18nutil\widthfolding.hxx
+..\inc\i18nutil\x_rtl_ustring.h %_DEST%\inc%_EXT%\i18nutil\x_rtl_ustring.h
+
+..\%__SRC%\bin\i18nutil*.dll %_DEST%\bin%_EXT%\i18nutil*.dll
+..\%__SRC%\lib\libi18nutil*.so %_DEST%\lib%_EXT%\libi18nutil*.so
+..\%__SRC%\lib\libi18nutil*.dylib %_DEST%\lib%_EXT%\libi18nutil*.dylib
+..\%__SRC%\lib\ii18nutil.lib %_DEST%\lib%_EXT%\ii18nutil.lib
+
+..\%__SRC%\lib\lib*static*.dylib %_DEST%\lib%_EXT%\lib*static*.dylib
+..\%__SRC%\misc\*staticdatamembers.cxx %_DEST%\inc%_EXT%\*staticdatamembers.cxx
+..\%__SRC%\misc\*staticdatamembers.h* %_DEST%\inc%_EXT%\*staticdatamembers.h*
+
+dos: sh -c "if test %OS% = MACOSX; then create-bundle %_DEST%\lib%_EXT%\*.dylib; fi"
+dos: sh -c "if test %OS% = MACOSX; then create-libstatic-link %_DEST%\lib%_EXT%; fi"
diff --git a/i18nutil/source/utility/casefolding.cxx b/i18nutil/source/utility/casefolding.cxx
new file mode 100644
index 000000000000..fe22c1cb3a4f
--- /dev/null
+++ b/i18nutil/source/utility/casefolding.cxx
@@ -0,0 +1,182 @@
+/*************************************************************************
+ *
+ * $RCSfile: casefolding.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:26:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "i18nutil/casefolding.hxx"
+#include "casefolding_data.h"
+#include "i18nutil/widthfolding.hxx"
+
+using namespace com::sun::star::lang;
+using namespace com::sun::star::uno;
+
+namespace com { namespace sun { namespace star { namespace i18n {
+
+static Mapping mapping_03a3[] = {{0, 1, 0x03c2, 0, 0 },{0, 1, 0x03c3, 0, 0}};
+static Mapping mapping_0307[] = {{0, 0, 0, 0, 0 },{0, 1, 0x0307, 0, 0}};
+static Mapping mapping_0049[] = {{0, 2, 0x0069, 0x0307, 0},{0, 1, 0x0131, 0, 0},{0, 1, 0x0069, 0, 0}};
+static Mapping mapping_004a[] = {{0, 2, 0x006a, 0x0307, 0},{0, 1, 0x006a, 0, 0}};
+static Mapping mapping_012e[] = {{0, 2, 0x012f, 0x0307, 0},{0, 1, 0x012f, 0, 0}};
+static Mapping mapping_00cc[] = {{0, 3, 0x0069, 0x0307, 0x0300},{0, 1, 0x00ec, 0, 0}};
+static Mapping mapping_00cd[] = {{0, 3, 0x0069, 0x0307, 0x0301},{0, 1, 0x00ed, 0, 0}};
+static Mapping mapping_0128[] = {{0, 3, 0x0069, 0x0307, 0x0303},{0, 1, 0x0129, 0, 0}};
+static Mapping mapping_0069[] = {{0, 1, 0x0130, 0, 0},{0, 1, 0x0049, 0, 0}};
+
+#define langIs(lang) (aLocale.Language.compareToAscii(lang) == 0)
+
+// only check simple case, there is more complicated case need to be checked.
+#define type_i(ch) (ch == 0x0069 || ch == 0x006a)
+
+#define cased_letter(ch) (CaseMappingIndex[ch>>8] >= 0 && (CaseMappingValue[(CaseMappingIndex[ch>>8] << 8) + (ch&0xff)].type & CasedLetter))
+
+Mapping& casefolding::getConditionalValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, Locale& aLocale, sal_uInt8 nMappingType) throw (RuntimeException)
+{
+ switch(str[pos]) {
+ case 0x03a3:
+ // final_sigma (not followed by cased and preceded by cased character)
+ // DOES NOT check ignorable sequence yet (more complicated implementation).
+ return !(pos < len && cased_letter(str[pos+1])) && (pos > 0 && cased_letter(str[pos-1])) ?
+ mapping_03a3[0] : mapping_03a3[1];
+ case 0x0307:
+ return ((nMappingType == MappingTypeLowerToUpper && langIs("lt") ||
+ nMappingType == MappingTypeUpperToLower && (langIs("tr") || langIs("az"))) &&
+ (pos > 0 && type_i(str[pos-1]))) ? // after_i
+ mapping_0307[0] : mapping_0307[1];
+ case 0x0069:
+ return (langIs("tr") || langIs("az")) ? mapping_0069[0] : mapping_0069[1];
+ case 0x0049: return langIs("lt") ? mapping_0049[0] :
+ (langIs("tr") || langIs("az")) ? mapping_0049[1] : mapping_0049[2];
+ case 0x004a: return langIs("lt") ? mapping_004a[0] : mapping_004a[1];
+ case 0x012e: return langIs("lt") ? mapping_012e[0] : mapping_012e[1];
+ case 0x00cc: return langIs("lt") ? mapping_00cc[0] : mapping_00cc[1];
+ case 0x00cd: return langIs("lt") ? mapping_00cd[0] : mapping_00cd[1];
+ case 0x0128: return langIs("lt") ? mapping_0128[0] : mapping_0128[1];
+ }
+}
+
+Mapping& casefolding::getValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, Locale& aLocale, sal_uInt8 nMappingType) throw (RuntimeException)
+{
+ static Mapping dummy = { 0, 1, 0, 0, 0 };
+ sal_Int16 address = CaseMappingIndex[str[pos] >> 8] << 8;
+
+ dummy.map[0] = str[pos];
+
+ if (address >= 0 && (CaseMappingValue[address += (str[pos] & 0xFF)].type & nMappingType)) {
+ sal_uInt8 type = CaseMappingValue[address].type;
+ if (type & ValueTypeNotValue) {
+ if (CaseMappingValue[address].value == 0)
+ return getConditionalValue(str, pos, len, aLocale, nMappingType);
+ else {
+ for (int map = CaseMappingValue[address].value;
+ map < CaseMappingValue[address].value + MaxCaseMappingExtras; map++) {
+ if (CaseMappingExtra[map].type & nMappingType) {
+ if (CaseMappingExtra[map].type & ValueTypeNotValue)
+ return getConditionalValue(str, pos, len, aLocale, nMappingType);
+ else
+ return CaseMappingExtra[map];
+ }
+ }
+ // Should not come here
+ throw RuntimeException();
+ }
+ } else
+ dummy.map[0] = CaseMappingValue[address].value;
+ }
+ return dummy;
+}
+
+inline sal_Bool SAL_CALL
+is_ja_voice_sound_mark(sal_Unicode& current, sal_Unicode next)
+{
+ sal_Unicode c = 0;
+
+ if ((next == 0x3099 || next == 0x309a) && (c = widthfolding::getCompositionChar(current, next)))
+ current = c;
+ return c != 0;
+}
+
+sal_Unicode casefolding::getNextChar(const sal_Unicode *str, sal_Int32& idx, sal_Int32 len, MappingElement& e, Locale& aLocale, sal_uInt8 nMappingType, TransliterationModules moduleLoaded) throw (RuntimeException)
+{
+ sal_Unicode c;
+ if (moduleLoaded & TransliterationModules_IGNORE_CASE) {
+ if (e.current >= e.element.nmap && idx < len ) {
+ e.element = getValue(str, idx++, len, aLocale, nMappingType);
+ e.current = 0;
+ }
+ c = e.element.map[e.current++];
+ } else {
+ c = *(str + idx++);
+ }
+ if (moduleLoaded & TransliterationModules_IGNORE_KANA) {
+ if (0x3040 <= c && c <= 0x3094 || 0x309d <= c && c <= 0x309f)
+ c += 0x60;
+ }
+
+ // composition: KA + voice-mark --> GA. see halfwidthToFullwidth.cxx for detail
+ if (moduleLoaded & TransliterationModules_IGNORE_WIDTH) {
+ static oneToOneMapping& half2fullTable = widthfolding::gethalf2fullTable();
+ c = half2fullTable[c];
+ if (0x3040 <= c && c <= 0x30ff && idx < len &&
+ is_ja_voice_sound_mark(c, half2fullTable[*(str + idx)]))
+ idx++;
+ }
+ return c;
+}
+
+} } } }
diff --git a/i18nutil/source/utility/casefolding_data.h b/i18nutil/source/utility/casefolding_data.h
new file mode 100644
index 000000000000..bb285e251886
--- /dev/null
+++ b/i18nutil/source/utility/casefolding_data.h
@@ -0,0 +1,845 @@
+/*************************************************************************
+ *
+ * $RCSfile: casefolding_data.h,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:26:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef CASEFOLDING_DATA_H
+#define CASEFOLDING_DATA_H
+
+#include <sal/types.h>
+
+namespace com { namespace sun { namespace star { namespace i18n {
+
+static sal_Int8 CaseMappingIndex[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, -1, -1, // 0000 - 07ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 0800 - 0fff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 1000 - 17ff
+ -1, -1, -1, -1, -1, -1, 0x06, 0x07, // 1800 - 1fff
+ -1, 0x08, -1, -1, 0x09, -1, -1, -1, // 2000 - 27ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 2800 - 2fff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 3000 - 37ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 3800 - 3fff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 4000 - 47ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 4800 - 4fff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 5000 - 57ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 5800 - 5fff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 6000 - 67ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 6800 - 6fff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 7000 - 77ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 7800 - 7fff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 8000 - 87ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 8800 - 8fff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 9000 - 97ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // 9800 - 9fff
+ -1, -1, -1, -1, -1, -1, -1, -1, // a000 - a7ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // a800 - afff
+ -1, -1, -1, -1, -1, -1, -1, -1, // b000 - b7ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // b800 - bfff
+ -1, -1, -1, -1, -1, -1, -1, -1, // c000 - c7ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // c800 - cfff
+ -1, -1, -1, -1, -1, -1, -1, -1, // d000 - d7ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // d800 - dfff
+ -1, -1, -1, -1, -1, -1, -1, -1, // e000 - e7ff
+ -1, -1, -1, -1, -1, -1, -1, -1, // e800 - efff
+ -1, -1, -1, -1, -1, -1, -1, -1, // f000 - f7ff
+ -1, -1, -1, 0x0a, -1, -1, -1, 0x0b, // f800 - ffff
+};
+
+
+static Value CaseMappingValue[] = {
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0000 - 0007
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0008 - 000f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0010 - 0017
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0018 - 001f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0020 - 0027
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0028 - 002f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0030 - 0037
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0038 - 003f
+ {0x00, 0x0000}, {0x6a, 0x0061}, {0x6a, 0x0062}, {0x6a, 0x0063}, {0x6a, 0x0064}, {0x6a, 0x0065}, {0x6a, 0x0066}, {0x6a, 0x0067}, // 0040 - 0047
+ {0x6a, 0x0068}, {0xea, 0x0001}, {0xea, 0x0003}, {0x6a, 0x006B}, {0x6a, 0x006C}, {0x6a, 0x006D}, {0x6a, 0x006E}, {0x6a, 0x006F}, // 0048 - 004f
+ {0x6a, 0x0070}, {0x6a, 0x0071}, {0x6a, 0x0072}, {0x6a, 0x0073}, {0x6a, 0x0074}, {0x6a, 0x0075}, {0x6a, 0x0076}, {0x6a, 0x0077}, // 0050 - 0057
+ {0x6a, 0x0078}, {0x6a, 0x0079}, {0x6a, 0x007A}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0058 - 005f
+ {0x00, 0x0000}, {0x15, 0x0041}, {0x15, 0x0042}, {0x15, 0x0043}, {0x15, 0x0044}, {0x15, 0x0045}, {0x15, 0x0046}, {0x15, 0x0047}, // 0060 - 0067
+ {0x15, 0x0048}, {0x95, 0x0000}, {0x15, 0x004A}, {0x15, 0x004B}, {0x15, 0x004C}, {0x15, 0x004D}, {0x15, 0x004E}, {0x15, 0x004F}, // 0068 - 006f
+ {0x15, 0x0050}, {0x15, 0x0051}, {0x15, 0x0052}, {0x15, 0x0053}, {0x15, 0x0054}, {0x15, 0x0055}, {0x15, 0x0056}, {0x15, 0x0057}, // 0070 - 0077
+ {0x15, 0x0058}, {0x15, 0x0059}, {0x15, 0x005A}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0078 - 007f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0080 - 0087
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0088 - 008f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0090 - 0097
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0098 - 009f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 00a0 - 00a7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 00a8 - 00af
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0xf5, 0x0005}, {0x00, 0x0000}, {0x00, 0x0000}, // 00b0 - 00b7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 00b8 - 00bf
+ {0x6a, 0x00E0}, {0x6a, 0x00E1}, {0x6a, 0x00E2}, {0x6a, 0x00E3}, {0x6a, 0x00E4}, {0x6a, 0x00E5}, {0x6a, 0x00E6}, {0x6a, 0x00E7}, // 00c0 - 00c7
+ {0x6a, 0x00E8}, {0x6a, 0x00E9}, {0x6a, 0x00EA}, {0x6a, 0x00EB}, {0xea, 0x0007}, {0xea, 0x0009}, {0x6a, 0x00EE}, {0x6a, 0x00EF}, // 00c8 - 00cf
+ {0x6a, 0x00F0}, {0x6a, 0x00F1}, {0x6a, 0x00F2}, {0x6a, 0x00F3}, {0x6a, 0x00F4}, {0x6a, 0x00F5}, {0x6a, 0x00F6}, {0x00, 0x0000}, // 00d0 - 00d7
+ {0x6a, 0x00F8}, {0x6a, 0x00F9}, {0x6a, 0x00FA}, {0x6a, 0x00FB}, {0x6a, 0x00FC}, {0x6a, 0x00FD}, {0x6a, 0x00FE}, {0xd5, 0x000B}, // 00d8 - 00df
+ {0x15, 0x00C0}, {0x15, 0x00C1}, {0x15, 0x00C2}, {0x15, 0x00C3}, {0x15, 0x00C4}, {0x15, 0x00C5}, {0x15, 0x00C6}, {0x15, 0x00C7}, // 00e0 - 00e7
+ {0x15, 0x00C8}, {0x15, 0x00C9}, {0x15, 0x00CA}, {0x15, 0x00CB}, {0x15, 0x00CC}, {0x15, 0x00CD}, {0x15, 0x00CE}, {0x15, 0x00CF}, // 00e8 - 00ef
+ {0x15, 0x00D0}, {0x15, 0x00D1}, {0x15, 0x00D2}, {0x15, 0x00D3}, {0x15, 0x00D4}, {0x15, 0x00D5}, {0x15, 0x00D6}, {0x00, 0x0000}, // 00f0 - 00f7
+ {0x15, 0x00D8}, {0x15, 0x00D9}, {0x15, 0x00DA}, {0x15, 0x00DB}, {0x15, 0x00DC}, {0x15, 0x00DD}, {0x15, 0x00DE}, {0x15, 0x0178}, // 00f8 - 00ff
+
+ {0x6a, 0x0101}, {0x15, 0x0100}, {0x6a, 0x0103}, {0x15, 0x0102}, {0x6a, 0x0105}, {0x15, 0x0104}, {0x6a, 0x0107}, {0x15, 0x0106}, // 0100 - 0107
+ {0x6a, 0x0109}, {0x15, 0x0108}, {0x6a, 0x010B}, {0x15, 0x010A}, {0x6a, 0x010D}, {0x15, 0x010C}, {0x6a, 0x010F}, {0x15, 0x010E}, // 0108 - 010f
+ {0x6a, 0x0111}, {0x15, 0x0110}, {0x6a, 0x0113}, {0x15, 0x0112}, {0x6a, 0x0115}, {0x15, 0x0114}, {0x6a, 0x0117}, {0x15, 0x0116}, // 0110 - 0117
+ {0x6a, 0x0119}, {0x15, 0x0118}, {0x6a, 0x011B}, {0x15, 0x011A}, {0x6a, 0x011D}, {0x15, 0x011C}, {0x6a, 0x011F}, {0x15, 0x011E}, // 0118 - 011f
+ {0x6a, 0x0121}, {0x15, 0x0120}, {0x6a, 0x0123}, {0x15, 0x0122}, {0x6a, 0x0125}, {0x15, 0x0124}, {0x6a, 0x0127}, {0x15, 0x0126}, // 0120 - 0127
+ {0xea, 0x000E}, {0x15, 0x0128}, {0x6a, 0x012B}, {0x15, 0x012A}, {0x6a, 0x012D}, {0x15, 0x012C}, {0xea, 0x0010}, {0x15, 0x012E}, // 0128 - 012f
+ {0x6a, 0x0069}, {0xf5, 0x0012}, {0x6a, 0x0133}, {0x15, 0x0132}, {0x6a, 0x0135}, {0x15, 0x0134}, {0x6a, 0x0137}, {0x15, 0x0136}, // 0130 - 0137
+ {0x00, 0x0000}, {0x6a, 0x013A}, {0x15, 0x0139}, {0x6a, 0x013C}, {0x15, 0x013B}, {0x6a, 0x013E}, {0x15, 0x013D}, {0x6a, 0x0140}, // 0138 - 013f
+ {0x15, 0x013F}, {0x6a, 0x0142}, {0x15, 0x0141}, {0x6a, 0x0144}, {0x15, 0x0143}, {0x6a, 0x0146}, {0x15, 0x0145}, {0x6a, 0x0148}, // 0140 - 0147
+ {0x15, 0x0147}, {0xd5, 0x0014}, {0x6a, 0x014B}, {0x15, 0x014A}, {0x6a, 0x014D}, {0x15, 0x014C}, {0x6a, 0x014F}, {0x15, 0x014E}, // 0148 - 014f
+ {0x6a, 0x0151}, {0x15, 0x0150}, {0x6a, 0x0153}, {0x15, 0x0152}, {0x6a, 0x0155}, {0x15, 0x0154}, {0x6a, 0x0157}, {0x15, 0x0156}, // 0150 - 0157
+ {0x6a, 0x0159}, {0x15, 0x0158}, {0x6a, 0x015B}, {0x15, 0x015A}, {0x6a, 0x015D}, {0x15, 0x015C}, {0x6a, 0x015F}, {0x15, 0x015E}, // 0158 - 015f
+ {0x6a, 0x0161}, {0x15, 0x0160}, {0x6a, 0x0163}, {0x15, 0x0162}, {0x6a, 0x0165}, {0x15, 0x0164}, {0x6a, 0x0167}, {0x15, 0x0166}, // 0160 - 0167
+ {0x6a, 0x0169}, {0x15, 0x0168}, {0x6a, 0x016B}, {0x15, 0x016A}, {0x6a, 0x016D}, {0x15, 0x016C}, {0x6a, 0x016F}, {0x15, 0x016E}, // 0168 - 016f
+ {0x6a, 0x0171}, {0x15, 0x0170}, {0x6a, 0x0173}, {0x15, 0x0172}, {0x6a, 0x0175}, {0x15, 0x0174}, {0x6a, 0x0177}, {0x15, 0x0176}, // 0170 - 0177
+ {0x6a, 0x00FF}, {0x6a, 0x017A}, {0x15, 0x0179}, {0x6a, 0x017C}, {0x15, 0x017B}, {0x6a, 0x017E}, {0x15, 0x017D}, {0xf5, 0x0016}, // 0178 - 017f
+ {0x00, 0x0000}, {0x6a, 0x0253}, {0x6a, 0x0183}, {0x15, 0x0182}, {0x6a, 0x0185}, {0x15, 0x0184}, {0x6a, 0x0254}, {0x6a, 0x0188}, // 0180 - 0187
+ {0x15, 0x0187}, {0x6a, 0x0256}, {0x6a, 0x0257}, {0x6a, 0x018C}, {0x15, 0x018B}, {0x00, 0x0000}, {0x6a, 0x01DD}, {0x6a, 0x0259}, // 0188 - 018f
+ {0x6a, 0x025B}, {0x6a, 0x0192}, {0x15, 0x0191}, {0x6a, 0x0260}, {0x6a, 0x0263}, {0x15, 0x01F6}, {0x6a, 0x0269}, {0x6a, 0x0268}, // 0190 - 0197
+ {0x6a, 0x0199}, {0x15, 0x0198}, {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x026F}, {0x6a, 0x0272}, {0x00, 0x0000}, {0x6a, 0x0275}, // 0198 - 019f
+ {0x6a, 0x01A1}, {0x15, 0x01A0}, {0x6a, 0x01A3}, {0x15, 0x01A2}, {0x6a, 0x01A5}, {0x15, 0x01A4}, {0x6a, 0x0280}, {0x6a, 0x01A8}, // 01a0 - 01a7
+ {0x15, 0x01A7}, {0x6a, 0x0283}, {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x01AD}, {0x15, 0x01AC}, {0x6a, 0x0288}, {0x6a, 0x01B0}, // 01a8 - 01af
+ {0x15, 0x01AF}, {0x6a, 0x028A}, {0x6a, 0x028B}, {0x6a, 0x01B4}, {0x15, 0x01B3}, {0x6a, 0x01B6}, {0x15, 0x01B5}, {0x6a, 0x0292}, // 01b0 - 01b7
+ {0x6a, 0x01B9}, {0x15, 0x01B8}, {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x01BD}, {0x15, 0x01BC}, {0x00, 0x0000}, {0x15, 0x01F7}, // 01b8 - 01bf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0xfa, 0x0018}, {0xec, 0x001A}, {0x95, 0x001C}, {0xfa, 0x001E}, // 01c0 - 01c7
+ {0xec, 0x0020}, {0x95, 0x0022}, {0xfa, 0x0024}, {0xec, 0x0026}, {0x95, 0x0028}, {0x6a, 0x01CE}, {0x15, 0x01CD}, {0x6a, 0x01D0}, // 01c8 - 01cf
+ {0x15, 0x01CF}, {0x6a, 0x01D2}, {0x15, 0x01D1}, {0x6a, 0x01D4}, {0x15, 0x01D3}, {0x6a, 0x01D6}, {0x15, 0x01D5}, {0x6a, 0x01D8}, // 01d0 - 01d7
+ {0x15, 0x01D7}, {0x6a, 0x01DA}, {0x15, 0x01D9}, {0x6a, 0x01DC}, {0x15, 0x01DB}, {0x15, 0x018E}, {0x6a, 0x01DF}, {0x15, 0x01DE}, // 01d8 - 01df
+ {0x6a, 0x01E1}, {0x15, 0x01E0}, {0x6a, 0x01E3}, {0x15, 0x01E2}, {0x6a, 0x01E5}, {0x15, 0x01E4}, {0x6a, 0x01E7}, {0x15, 0x01E6}, // 01e0 - 01e7
+ {0x6a, 0x01E9}, {0x15, 0x01E8}, {0x6a, 0x01EB}, {0x15, 0x01EA}, {0x6a, 0x01ED}, {0x15, 0x01EC}, {0x6a, 0x01EF}, {0x15, 0x01EE}, // 01e8 - 01ef
+ {0xd5, 0x002A}, {0xfa, 0x002C}, {0xec, 0x002E}, {0x95, 0x0030}, {0x6a, 0x01F5}, {0x15, 0x01F4}, {0x6a, 0x0195}, {0x6a, 0x01BF}, // 01f0 - 01f7
+ {0x6a, 0x01F9}, {0x15, 0x01F8}, {0x6a, 0x01FB}, {0x15, 0x01FA}, {0x6a, 0x01FD}, {0x15, 0x01FC}, {0x6a, 0x01FF}, {0x15, 0x01FE}, // 01f8 - 01ff
+
+ {0x6a, 0x0201}, {0x15, 0x0200}, {0x6a, 0x0203}, {0x15, 0x0202}, {0x6a, 0x0205}, {0x15, 0x0204}, {0x6a, 0x0207}, {0x15, 0x0206}, // 0200 - 0207
+ {0x6a, 0x0209}, {0x15, 0x0208}, {0x6a, 0x020B}, {0x15, 0x020A}, {0x6a, 0x020D}, {0x15, 0x020C}, {0x6a, 0x020F}, {0x15, 0x020E}, // 0208 - 020f
+ {0x6a, 0x0211}, {0x15, 0x0210}, {0x6a, 0x0213}, {0x15, 0x0212}, {0x6a, 0x0215}, {0x15, 0x0214}, {0x6a, 0x0217}, {0x15, 0x0216}, // 0210 - 0217
+ {0x6a, 0x0219}, {0x15, 0x0218}, {0x6a, 0x021B}, {0x15, 0x021A}, {0x6a, 0x021D}, {0x15, 0x021C}, {0x6a, 0x021F}, {0x15, 0x021E}, // 0218 - 021f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x0223}, {0x15, 0x0222}, {0x6a, 0x0225}, {0x15, 0x0224}, {0x6a, 0x0227}, {0x15, 0x0226}, // 0220 - 0227
+ {0x6a, 0x0229}, {0x15, 0x0228}, {0x6a, 0x022B}, {0x15, 0x022A}, {0x6a, 0x022D}, {0x15, 0x022C}, {0x6a, 0x022F}, {0x15, 0x022E}, // 0228 - 022f
+ {0x6a, 0x0231}, {0x15, 0x0230}, {0x6a, 0x0233}, {0x15, 0x0232}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0230 - 0237
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0238 - 023f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0240 - 0247
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0248 - 024f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x15, 0x0181}, {0x15, 0x0186}, {0x00, 0x0000}, {0x15, 0x0189}, {0x15, 0x018A}, // 0250 - 0257
+ {0x00, 0x0000}, {0x15, 0x018F}, {0x00, 0x0000}, {0x15, 0x0190}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0258 - 025f
+ {0x15, 0x0193}, {0x00, 0x0000}, {0x00, 0x0000}, {0x15, 0x0194}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0260 - 0267
+ {0x15, 0x0197}, {0x15, 0x0196}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x15, 0x019C}, // 0268 - 026f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x15, 0x019D}, {0x00, 0x0000}, {0x00, 0x0000}, {0x15, 0x019F}, {0x00, 0x0000}, {0x00, 0x0000}, // 0270 - 0277
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0278 - 027f
+ {0x15, 0x01A6}, {0x00, 0x0000}, {0x00, 0x0000}, {0x15, 0x01A9}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0280 - 0287
+ {0x15, 0x01AE}, {0x00, 0x0000}, {0x15, 0x01B1}, {0x15, 0x01B2}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0288 - 028f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x15, 0x01B7}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0290 - 0297
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0298 - 029f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02a0 - 02a7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02a8 - 02af
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02b0 - 02b7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02b8 - 02bf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02c0 - 02c7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02c8 - 02cf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02d0 - 02d7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02d8 - 02df
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02e0 - 02e7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02e8 - 02ef
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02f0 - 02f7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 02f8 - 02ff
+
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x9f, 0x0000}, // 0300 - 0307
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0308 - 030f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0310 - 0317
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0318 - 031f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0320 - 0327
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0328 - 032f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0330 - 0337
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0338 - 033f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0xf4, 0x0032}, {0x00, 0x0000}, {0x00, 0x0000}, // 0340 - 0347
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0348 - 034f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0350 - 0357
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0358 - 035f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0360 - 0367
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0368 - 036f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0370 - 0377
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0378 - 037f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x03AC}, {0x00, 0x0000}, // 0380 - 0387
+ {0x6a, 0x03AD}, {0x6a, 0x03AE}, {0x6a, 0x03AF}, {0x00, 0x0000}, {0x6a, 0x03CC}, {0x00, 0x0000}, {0x6a, 0x03CD}, {0x6a, 0x03CE}, // 0388 - 038f
+ {0xd5, 0x0034}, {0x6a, 0x03B1}, {0x6a, 0x03B2}, {0x6a, 0x03B3}, {0x6a, 0x03B4}, {0x6a, 0x03B5}, {0x6a, 0x03B6}, {0x6a, 0x03B7}, // 0390 - 0397
+ {0x6a, 0x03B8}, {0x6a, 0x03B9}, {0x6a, 0x03BA}, {0x6a, 0x03BB}, {0x6a, 0x03BC}, {0x6a, 0x03BD}, {0x6a, 0x03BE}, {0x6a, 0x03BF}, // 0398 - 039f
+ {0x6a, 0x03C0}, {0x6a, 0x03C1}, {0x00, 0x0000}, {0xea, 0x0036}, {0x6a, 0x03C4}, {0x6a, 0x03C5}, {0x6a, 0x03C6}, {0x6a, 0x03C7}, // 03a0 - 03a7
+ {0x6a, 0x03C8}, {0x6a, 0x03C9}, {0x6a, 0x03CA}, {0x6a, 0x03CB}, {0x15, 0x0386}, {0x15, 0x0388}, {0x15, 0x0389}, {0x15, 0x038A}, // 03a8 - 03af
+ {0xd5, 0x0038}, {0x15, 0x0391}, {0x15, 0x0392}, {0x15, 0x0393}, {0x15, 0x0394}, {0x15, 0x0395}, {0x15, 0x0396}, {0x15, 0x0397}, // 03b0 - 03b7
+ {0x15, 0x0398}, {0x15, 0x0399}, {0x15, 0x039A}, {0x15, 0x039B}, {0x15, 0x039C}, {0x15, 0x039D}, {0x15, 0x039E}, {0x15, 0x039F}, // 03b8 - 03bf
+ {0x15, 0x03A0}, {0x15, 0x03A1}, {0xf5, 0x003A}, {0x15, 0x03A3}, {0x15, 0x03A4}, {0x15, 0x03A5}, {0x15, 0x03A6}, {0x15, 0x03A7}, // 03c0 - 03c7
+ {0x15, 0x03A8}, {0x15, 0x03A9}, {0x15, 0x03AA}, {0x15, 0x03AB}, {0x15, 0x038C}, {0x15, 0x038E}, {0x15, 0x038F}, {0x00, 0x0000}, // 03c8 - 03cf
+ {0xf5, 0x003C}, {0xf5, 0x003E}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0xf5, 0x0040}, {0xf5, 0x0042}, {0x00, 0x0000}, // 03d0 - 03d7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x03DB}, {0x15, 0x03DA}, {0x6a, 0x03DD}, {0x15, 0x03DC}, {0x6a, 0x03DF}, {0x15, 0x03DE}, // 03d8 - 03df
+ {0x6a, 0x03E1}, {0x15, 0x03E0}, {0x6a, 0x03E3}, {0x15, 0x03E2}, {0x6a, 0x03E5}, {0x15, 0x03E4}, {0x6a, 0x03E7}, {0x15, 0x03E6}, // 03e0 - 03e7
+ {0x6a, 0x03E9}, {0x15, 0x03E8}, {0x6a, 0x03EB}, {0x15, 0x03EA}, {0x6a, 0x03ED}, {0x15, 0x03EC}, {0x6a, 0x03EF}, {0x15, 0x03EE}, // 03e8 - 03ef
+ {0xf5, 0x0044}, {0xf5, 0x0046}, {0xf5, 0x0048}, {0x00, 0x0000}, {0x6a, 0x03B8}, {0xf5, 0x004A}, {0x00, 0x0000}, {0x00, 0x0000}, // 03f0 - 03f7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 03f8 - 03ff
+
+ {0x6a, 0x0450}, {0x6a, 0x0451}, {0x6a, 0x0452}, {0x6a, 0x0453}, {0x6a, 0x0454}, {0x6a, 0x0455}, {0x6a, 0x0456}, {0x6a, 0x0457}, // 0400 - 0407
+ {0x6a, 0x0458}, {0x6a, 0x0459}, {0x6a, 0x045A}, {0x6a, 0x045B}, {0x6a, 0x045C}, {0x6a, 0x045D}, {0x6a, 0x045E}, {0x6a, 0x045F}, // 0408 - 040f
+ {0x6a, 0x0430}, {0x6a, 0x0431}, {0x6a, 0x0432}, {0x6a, 0x0433}, {0x6a, 0x0434}, {0x6a, 0x0435}, {0x6a, 0x0436}, {0x6a, 0x0437}, // 0410 - 0417
+ {0x6a, 0x0438}, {0x6a, 0x0439}, {0x6a, 0x043A}, {0x6a, 0x043B}, {0x6a, 0x043C}, {0x6a, 0x043D}, {0x6a, 0x043E}, {0x6a, 0x043F}, // 0418 - 041f
+ {0x6a, 0x0440}, {0x6a, 0x0441}, {0x6a, 0x0442}, {0x6a, 0x0443}, {0x6a, 0x0444}, {0x6a, 0x0445}, {0x6a, 0x0446}, {0x6a, 0x0447}, // 0420 - 0427
+ {0x6a, 0x0448}, {0x6a, 0x0449}, {0x6a, 0x044A}, {0x6a, 0x044B}, {0x6a, 0x044C}, {0x6a, 0x044D}, {0x6a, 0x044E}, {0x6a, 0x044F}, // 0428 - 042f
+ {0x15, 0x0410}, {0x15, 0x0411}, {0x15, 0x0412}, {0x15, 0x0413}, {0x15, 0x0414}, {0x15, 0x0415}, {0x15, 0x0416}, {0x15, 0x0417}, // 0430 - 0437
+ {0x15, 0x0418}, {0x15, 0x0419}, {0x15, 0x041A}, {0x15, 0x041B}, {0x15, 0x041C}, {0x15, 0x041D}, {0x15, 0x041E}, {0x15, 0x041F}, // 0438 - 043f
+ {0x15, 0x0420}, {0x15, 0x0421}, {0x15, 0x0422}, {0x15, 0x0423}, {0x15, 0x0424}, {0x15, 0x0425}, {0x15, 0x0426}, {0x15, 0x0427}, // 0440 - 0447
+ {0x15, 0x0428}, {0x15, 0x0429}, {0x15, 0x042A}, {0x15, 0x042B}, {0x15, 0x042C}, {0x15, 0x042D}, {0x15, 0x042E}, {0x15, 0x042F}, // 0448 - 044f
+ {0x15, 0x0400}, {0x15, 0x0401}, {0x15, 0x0402}, {0x15, 0x0403}, {0x15, 0x0404}, {0x15, 0x0405}, {0x15, 0x0406}, {0x15, 0x0407}, // 0450 - 0457
+ {0x15, 0x0408}, {0x15, 0x0409}, {0x15, 0x040A}, {0x15, 0x040B}, {0x15, 0x040C}, {0x15, 0x040D}, {0x15, 0x040E}, {0x15, 0x040F}, // 0458 - 045f
+ {0x6a, 0x0461}, {0x15, 0x0460}, {0x6a, 0x0463}, {0x15, 0x0462}, {0x6a, 0x0465}, {0x15, 0x0464}, {0x6a, 0x0467}, {0x15, 0x0466}, // 0460 - 0467
+ {0x6a, 0x0469}, {0x15, 0x0468}, {0x6a, 0x046B}, {0x15, 0x046A}, {0x6a, 0x046D}, {0x15, 0x046C}, {0x6a, 0x046F}, {0x15, 0x046E}, // 0468 - 046f
+ {0x6a, 0x0471}, {0x15, 0x0470}, {0x6a, 0x0473}, {0x15, 0x0472}, {0x6a, 0x0475}, {0x15, 0x0474}, {0x6a, 0x0477}, {0x15, 0x0476}, // 0470 - 0477
+ {0x6a, 0x0479}, {0x15, 0x0478}, {0x6a, 0x047B}, {0x15, 0x047A}, {0x6a, 0x047D}, {0x15, 0x047C}, {0x6a, 0x047F}, {0x15, 0x047E}, // 0478 - 047f
+ {0x6a, 0x0481}, {0x15, 0x0480}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0480 - 0487
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x048D}, {0x15, 0x048C}, {0x6a, 0x048F}, {0x15, 0x048E}, // 0488 - 048f
+ {0x6a, 0x0491}, {0x15, 0x0490}, {0x6a, 0x0493}, {0x15, 0x0492}, {0x6a, 0x0495}, {0x15, 0x0494}, {0x6a, 0x0497}, {0x15, 0x0496}, // 0490 - 0497
+ {0x6a, 0x0499}, {0x15, 0x0498}, {0x6a, 0x049B}, {0x15, 0x049A}, {0x6a, 0x049D}, {0x15, 0x049C}, {0x6a, 0x049F}, {0x15, 0x049E}, // 0498 - 049f
+ {0x6a, 0x04A1}, {0x15, 0x04A0}, {0x6a, 0x04A3}, {0x15, 0x04A2}, {0x6a, 0x04A5}, {0x15, 0x04A4}, {0x6a, 0x04A7}, {0x15, 0x04A6}, // 04a0 - 04a7
+ {0x6a, 0x04A9}, {0x15, 0x04A8}, {0x6a, 0x04AB}, {0x15, 0x04AA}, {0x6a, 0x04AD}, {0x15, 0x04AC}, {0x6a, 0x04AF}, {0x15, 0x04AE}, // 04a8 - 04af
+ {0x6a, 0x04B1}, {0x15, 0x04B0}, {0x6a, 0x04B3}, {0x15, 0x04B2}, {0x6a, 0x04B5}, {0x15, 0x04B4}, {0x6a, 0x04B7}, {0x15, 0x04B6}, // 04b0 - 04b7
+ {0x6a, 0x04B9}, {0x15, 0x04B8}, {0x6a, 0x04BB}, {0x15, 0x04BA}, {0x6a, 0x04BD}, {0x15, 0x04BC}, {0x6a, 0x04BF}, {0x15, 0x04BE}, // 04b8 - 04bf
+ {0x00, 0x0000}, {0x6a, 0x04C2}, {0x15, 0x04C1}, {0x6a, 0x04C4}, {0x15, 0x04C3}, {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x04C8}, // 04c0 - 04c7
+ {0x15, 0x04C7}, {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x04CC}, {0x15, 0x04CB}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 04c8 - 04cf
+ {0x6a, 0x04D1}, {0x15, 0x04D0}, {0x6a, 0x04D3}, {0x15, 0x04D2}, {0x6a, 0x04D5}, {0x15, 0x04D4}, {0x6a, 0x04D7}, {0x15, 0x04D6}, // 04d0 - 04d7
+ {0x6a, 0x04D9}, {0x15, 0x04D8}, {0x6a, 0x04DB}, {0x15, 0x04DA}, {0x6a, 0x04DD}, {0x15, 0x04DC}, {0x6a, 0x04DF}, {0x15, 0x04DE}, // 04d8 - 04df
+ {0x6a, 0x04E1}, {0x15, 0x04E0}, {0x6a, 0x04E3}, {0x15, 0x04E2}, {0x6a, 0x04E5}, {0x15, 0x04E4}, {0x6a, 0x04E7}, {0x15, 0x04E6}, // 04e0 - 04e7
+ {0x6a, 0x04E9}, {0x15, 0x04E8}, {0x6a, 0x04EB}, {0x15, 0x04EA}, {0x6a, 0x04ED}, {0x15, 0x04EC}, {0x6a, 0x04EF}, {0x15, 0x04EE}, // 04e8 - 04ef
+ {0x6a, 0x04F1}, {0x15, 0x04F0}, {0x6a, 0x04F3}, {0x15, 0x04F2}, {0x6a, 0x04F5}, {0x15, 0x04F4}, {0x00, 0x0000}, {0x00, 0x0000}, // 04f0 - 04f7
+ {0x6a, 0x04F9}, {0x15, 0x04F8}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 04f8 - 04ff
+
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0500 - 0507
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0508 - 050f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0510 - 0517
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0518 - 051f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0520 - 0527
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0528 - 052f
+ {0x00, 0x0000}, {0x6a, 0x0561}, {0x6a, 0x0562}, {0x6a, 0x0563}, {0x6a, 0x0564}, {0x6a, 0x0565}, {0x6a, 0x0566}, {0x6a, 0x0567}, // 0530 - 0537
+ {0x6a, 0x0568}, {0x6a, 0x0569}, {0x6a, 0x056A}, {0x6a, 0x056B}, {0x6a, 0x056C}, {0x6a, 0x056D}, {0x6a, 0x056E}, {0x6a, 0x056F}, // 0538 - 053f
+ {0x6a, 0x0570}, {0x6a, 0x0571}, {0x6a, 0x0572}, {0x6a, 0x0573}, {0x6a, 0x0574}, {0x6a, 0x0575}, {0x6a, 0x0576}, {0x6a, 0x0577}, // 0540 - 0547
+ {0x6a, 0x0578}, {0x6a, 0x0579}, {0x6a, 0x057A}, {0x6a, 0x057B}, {0x6a, 0x057C}, {0x6a, 0x057D}, {0x6a, 0x057E}, {0x6a, 0x057F}, // 0548 - 054f
+ {0x6a, 0x0580}, {0x6a, 0x0581}, {0x6a, 0x0582}, {0x6a, 0x0583}, {0x6a, 0x0584}, {0x6a, 0x0585}, {0x6a, 0x0586}, {0x00, 0x0000}, // 0550 - 0557
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0558 - 055f
+ {0x00, 0x0000}, {0x15, 0x0531}, {0x15, 0x0532}, {0x15, 0x0533}, {0x15, 0x0534}, {0x15, 0x0535}, {0x15, 0x0536}, {0x15, 0x0537}, // 0560 - 0567
+ {0x15, 0x0538}, {0x15, 0x0539}, {0x15, 0x053A}, {0x15, 0x053B}, {0x15, 0x053C}, {0x15, 0x053D}, {0x15, 0x053E}, {0x15, 0x053F}, // 0568 - 056f
+ {0x15, 0x0540}, {0x15, 0x0541}, {0x15, 0x0542}, {0x15, 0x0543}, {0x15, 0x0544}, {0x15, 0x0545}, {0x15, 0x0546}, {0x15, 0x0547}, // 0570 - 0577
+ {0x15, 0x0548}, {0x15, 0x0549}, {0x15, 0x054A}, {0x15, 0x054B}, {0x15, 0x054C}, {0x15, 0x054D}, {0x15, 0x054E}, {0x15, 0x054F}, // 0578 - 057f
+ {0x15, 0x0550}, {0x15, 0x0551}, {0x15, 0x0552}, {0x15, 0x0553}, {0x15, 0x0554}, {0x15, 0x0555}, {0x15, 0x0556}, {0xd5, 0x004C}, // 0580 - 0587
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0588 - 058f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0590 - 0597
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 0598 - 059f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05a0 - 05a7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05a8 - 05af
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05b0 - 05b7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05b8 - 05bf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05c0 - 05c7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05c8 - 05cf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05d0 - 05d7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05d8 - 05df
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05e0 - 05e7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05e8 - 05ef
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05f0 - 05f7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 05f8 - 05ff
+
+ {0x6a, 0x1E01}, {0x15, 0x1E00}, {0x6a, 0x1E03}, {0x15, 0x1E02}, {0x6a, 0x1E05}, {0x15, 0x1E04}, {0x6a, 0x1E07}, {0x15, 0x1E06}, // 1e00 - 1e07
+ {0x6a, 0x1E09}, {0x15, 0x1E08}, {0x6a, 0x1E0B}, {0x15, 0x1E0A}, {0x6a, 0x1E0D}, {0x15, 0x1E0C}, {0x6a, 0x1E0F}, {0x15, 0x1E0E}, // 1e08 - 1e0f
+ {0x6a, 0x1E11}, {0x15, 0x1E10}, {0x6a, 0x1E13}, {0x15, 0x1E12}, {0x6a, 0x1E15}, {0x15, 0x1E14}, {0x6a, 0x1E17}, {0x15, 0x1E16}, // 1e10 - 1e17
+ {0x6a, 0x1E19}, {0x15, 0x1E18}, {0x6a, 0x1E1B}, {0x15, 0x1E1A}, {0x6a, 0x1E1D}, {0x15, 0x1E1C}, {0x6a, 0x1E1F}, {0x15, 0x1E1E}, // 1e18 - 1e1f
+ {0x6a, 0x1E21}, {0x15, 0x1E20}, {0x6a, 0x1E23}, {0x15, 0x1E22}, {0x6a, 0x1E25}, {0x15, 0x1E24}, {0x6a, 0x1E27}, {0x15, 0x1E26}, // 1e20 - 1e27
+ {0x6a, 0x1E29}, {0x15, 0x1E28}, {0x6a, 0x1E2B}, {0x15, 0x1E2A}, {0x6a, 0x1E2D}, {0x15, 0x1E2C}, {0x6a, 0x1E2F}, {0x15, 0x1E2E}, // 1e28 - 1e2f
+ {0x6a, 0x1E31}, {0x15, 0x1E30}, {0x6a, 0x1E33}, {0x15, 0x1E32}, {0x6a, 0x1E35}, {0x15, 0x1E34}, {0x6a, 0x1E37}, {0x15, 0x1E36}, // 1e30 - 1e37
+ {0x6a, 0x1E39}, {0x15, 0x1E38}, {0x6a, 0x1E3B}, {0x15, 0x1E3A}, {0x6a, 0x1E3D}, {0x15, 0x1E3C}, {0x6a, 0x1E3F}, {0x15, 0x1E3E}, // 1e38 - 1e3f
+ {0x6a, 0x1E41}, {0x15, 0x1E40}, {0x6a, 0x1E43}, {0x15, 0x1E42}, {0x6a, 0x1E45}, {0x15, 0x1E44}, {0x6a, 0x1E47}, {0x15, 0x1E46}, // 1e40 - 1e47
+ {0x6a, 0x1E49}, {0x15, 0x1E48}, {0x6a, 0x1E4B}, {0x15, 0x1E4A}, {0x6a, 0x1E4D}, {0x15, 0x1E4C}, {0x6a, 0x1E4F}, {0x15, 0x1E4E}, // 1e48 - 1e4f
+ {0x6a, 0x1E51}, {0x15, 0x1E50}, {0x6a, 0x1E53}, {0x15, 0x1E52}, {0x6a, 0x1E55}, {0x15, 0x1E54}, {0x6a, 0x1E57}, {0x15, 0x1E56}, // 1e50 - 1e57
+ {0x6a, 0x1E59}, {0x15, 0x1E58}, {0x6a, 0x1E5B}, {0x15, 0x1E5A}, {0x6a, 0x1E5D}, {0x15, 0x1E5C}, {0x6a, 0x1E5F}, {0x15, 0x1E5E}, // 1e58 - 1e5f
+ {0x6a, 0x1E61}, {0x15, 0x1E60}, {0x6a, 0x1E63}, {0x15, 0x1E62}, {0x6a, 0x1E65}, {0x15, 0x1E64}, {0x6a, 0x1E67}, {0x15, 0x1E66}, // 1e60 - 1e67
+ {0x6a, 0x1E69}, {0x15, 0x1E68}, {0x6a, 0x1E6B}, {0x15, 0x1E6A}, {0x6a, 0x1E6D}, {0x15, 0x1E6C}, {0x6a, 0x1E6F}, {0x15, 0x1E6E}, // 1e68 - 1e6f
+ {0x6a, 0x1E71}, {0x15, 0x1E70}, {0x6a, 0x1E73}, {0x15, 0x1E72}, {0x6a, 0x1E75}, {0x15, 0x1E74}, {0x6a, 0x1E77}, {0x15, 0x1E76}, // 1e70 - 1e77
+ {0x6a, 0x1E79}, {0x15, 0x1E78}, {0x6a, 0x1E7B}, {0x15, 0x1E7A}, {0x6a, 0x1E7D}, {0x15, 0x1E7C}, {0x6a, 0x1E7F}, {0x15, 0x1E7E}, // 1e78 - 1e7f
+ {0x6a, 0x1E81}, {0x15, 0x1E80}, {0x6a, 0x1E83}, {0x15, 0x1E82}, {0x6a, 0x1E85}, {0x15, 0x1E84}, {0x6a, 0x1E87}, {0x15, 0x1E86}, // 1e80 - 1e87
+ {0x6a, 0x1E89}, {0x15, 0x1E88}, {0x6a, 0x1E8B}, {0x15, 0x1E8A}, {0x6a, 0x1E8D}, {0x15, 0x1E8C}, {0x6a, 0x1E8F}, {0x15, 0x1E8E}, // 1e88 - 1e8f
+ {0x6a, 0x1E91}, {0x15, 0x1E90}, {0x6a, 0x1E93}, {0x15, 0x1E92}, {0x6a, 0x1E95}, {0x15, 0x1E94}, {0xd5, 0x004F}, {0xd5, 0x0051}, // 1e90 - 1e97
+ {0xd5, 0x0053}, {0xd5, 0x0055}, {0xd5, 0x0057}, {0xf5, 0x0059}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 1e98 - 1e9f
+ {0x6a, 0x1EA1}, {0x15, 0x1EA0}, {0x6a, 0x1EA3}, {0x15, 0x1EA2}, {0x6a, 0x1EA5}, {0x15, 0x1EA4}, {0x6a, 0x1EA7}, {0x15, 0x1EA6}, // 1ea0 - 1ea7
+ {0x6a, 0x1EA9}, {0x15, 0x1EA8}, {0x6a, 0x1EAB}, {0x15, 0x1EAA}, {0x6a, 0x1EAD}, {0x15, 0x1EAC}, {0x6a, 0x1EAF}, {0x15, 0x1EAE}, // 1ea8 - 1eaf
+ {0x6a, 0x1EB1}, {0x15, 0x1EB0}, {0x6a, 0x1EB3}, {0x15, 0x1EB2}, {0x6a, 0x1EB5}, {0x15, 0x1EB4}, {0x6a, 0x1EB7}, {0x15, 0x1EB6}, // 1eb0 - 1eb7
+ {0x6a, 0x1EB9}, {0x15, 0x1EB8}, {0x6a, 0x1EBB}, {0x15, 0x1EBA}, {0x6a, 0x1EBD}, {0x15, 0x1EBC}, {0x6a, 0x1EBF}, {0x15, 0x1EBE}, // 1eb8 - 1ebf
+ {0x6a, 0x1EC1}, {0x15, 0x1EC0}, {0x6a, 0x1EC3}, {0x15, 0x1EC2}, {0x6a, 0x1EC5}, {0x15, 0x1EC4}, {0x6a, 0x1EC7}, {0x15, 0x1EC6}, // 1ec0 - 1ec7
+ {0x6a, 0x1EC9}, {0x15, 0x1EC8}, {0x6a, 0x1ECB}, {0x15, 0x1ECA}, {0x6a, 0x1ECD}, {0x15, 0x1ECC}, {0x6a, 0x1ECF}, {0x15, 0x1ECE}, // 1ec8 - 1ecf
+ {0x6a, 0x1ED1}, {0x15, 0x1ED0}, {0x6a, 0x1ED3}, {0x15, 0x1ED2}, {0x6a, 0x1ED5}, {0x15, 0x1ED4}, {0x6a, 0x1ED7}, {0x15, 0x1ED6}, // 1ed0 - 1ed7
+ {0x6a, 0x1ED9}, {0x15, 0x1ED8}, {0x6a, 0x1EDB}, {0x15, 0x1EDA}, {0x6a, 0x1EDD}, {0x15, 0x1EDC}, {0x6a, 0x1EDF}, {0x15, 0x1EDE}, // 1ed8 - 1edf
+ {0x6a, 0x1EE1}, {0x15, 0x1EE0}, {0x6a, 0x1EE3}, {0x15, 0x1EE2}, {0x6a, 0x1EE5}, {0x15, 0x1EE4}, {0x6a, 0x1EE7}, {0x15, 0x1EE6}, // 1ee0 - 1ee7
+ {0x6a, 0x1EE9}, {0x15, 0x1EE8}, {0x6a, 0x1EEB}, {0x15, 0x1EEA}, {0x6a, 0x1EED}, {0x15, 0x1EEC}, {0x6a, 0x1EEF}, {0x15, 0x1EEE}, // 1ee8 - 1eef
+ {0x6a, 0x1EF1}, {0x15, 0x1EF0}, {0x6a, 0x1EF3}, {0x15, 0x1EF2}, {0x6a, 0x1EF5}, {0x15, 0x1EF4}, {0x6a, 0x1EF7}, {0x15, 0x1EF6}, // 1ef0 - 1ef7
+ {0x6a, 0x1EF9}, {0x15, 0x1EF8}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 1ef8 - 1eff
+
+ {0x15, 0x1F08}, {0x15, 0x1F09}, {0x15, 0x1F0A}, {0x15, 0x1F0B}, {0x15, 0x1F0C}, {0x15, 0x1F0D}, {0x15, 0x1F0E}, {0x15, 0x1F0F}, // 1f00 - 1f07
+ {0x6a, 0x1F00}, {0x6a, 0x1F01}, {0x6a, 0x1F02}, {0x6a, 0x1F03}, {0x6a, 0x1F04}, {0x6a, 0x1F05}, {0x6a, 0x1F06}, {0x6a, 0x1F07}, // 1f08 - 1f0f
+ {0x15, 0x1F18}, {0x15, 0x1F19}, {0x15, 0x1F1A}, {0x15, 0x1F1B}, {0x15, 0x1F1C}, {0x15, 0x1F1D}, {0x00, 0x0000}, {0x00, 0x0000}, // 1f10 - 1f17
+ {0x6a, 0x1F10}, {0x6a, 0x1F11}, {0x6a, 0x1F12}, {0x6a, 0x1F13}, {0x6a, 0x1F14}, {0x6a, 0x1F15}, {0x00, 0x0000}, {0x00, 0x0000}, // 1f18 - 1f1f
+ {0x15, 0x1F28}, {0x15, 0x1F29}, {0x15, 0x1F2A}, {0x15, 0x1F2B}, {0x15, 0x1F2C}, {0x15, 0x1F2D}, {0x15, 0x1F2E}, {0x15, 0x1F2F}, // 1f20 - 1f27
+ {0x6a, 0x1F20}, {0x6a, 0x1F21}, {0x6a, 0x1F22}, {0x6a, 0x1F23}, {0x6a, 0x1F24}, {0x6a, 0x1F25}, {0x6a, 0x1F26}, {0x6a, 0x1F27}, // 1f28 - 1f2f
+ {0x15, 0x1F38}, {0x15, 0x1F39}, {0x15, 0x1F3A}, {0x15, 0x1F3B}, {0x15, 0x1F3C}, {0x15, 0x1F3D}, {0x15, 0x1F3E}, {0x15, 0x1F3F}, // 1f30 - 1f37
+ {0x6a, 0x1F30}, {0x6a, 0x1F31}, {0x6a, 0x1F32}, {0x6a, 0x1F33}, {0x6a, 0x1F34}, {0x6a, 0x1F35}, {0x6a, 0x1F36}, {0x6a, 0x1F37}, // 1f38 - 1f3f
+ {0x15, 0x1F48}, {0x15, 0x1F49}, {0x15, 0x1F4A}, {0x15, 0x1F4B}, {0x15, 0x1F4C}, {0x15, 0x1F4D}, {0x00, 0x0000}, {0x00, 0x0000}, // 1f40 - 1f47
+ {0x6a, 0x1F40}, {0x6a, 0x1F41}, {0x6a, 0x1F42}, {0x6a, 0x1F43}, {0x6a, 0x1F44}, {0x6a, 0x1F45}, {0x00, 0x0000}, {0x00, 0x0000}, // 1f48 - 1f4f
+ {0xd5, 0x005B}, {0x15, 0x1F59}, {0xd5, 0x005D}, {0x15, 0x1F5B}, {0xd5, 0x005F}, {0x15, 0x1F5D}, {0xd5, 0x0061}, {0x15, 0x1F5F}, // 1f50 - 1f57
+ {0x00, 0x0000}, {0x6a, 0x1F51}, {0x00, 0x0000}, {0x6a, 0x1F53}, {0x00, 0x0000}, {0x6a, 0x1F55}, {0x00, 0x0000}, {0x6a, 0x1F57}, // 1f58 - 1f5f
+ {0x15, 0x1F68}, {0x15, 0x1F69}, {0x15, 0x1F6A}, {0x15, 0x1F6B}, {0x15, 0x1F6C}, {0x15, 0x1F6D}, {0x15, 0x1F6E}, {0x15, 0x1F6F}, // 1f60 - 1f67
+ {0x6a, 0x1F60}, {0x6a, 0x1F61}, {0x6a, 0x1F62}, {0x6a, 0x1F63}, {0x6a, 0x1F64}, {0x6a, 0x1F65}, {0x6a, 0x1F66}, {0x6a, 0x1F67}, // 1f68 - 1f6f
+ {0x15, 0x1FBA}, {0x15, 0x1FBB}, {0x15, 0x1FC8}, {0x15, 0x1FC9}, {0x15, 0x1FCA}, {0x15, 0x1FCB}, {0x15, 0x1FDA}, {0x15, 0x1FDB}, // 1f70 - 1f77
+ {0x15, 0x1FF8}, {0x15, 0x1FF9}, {0x15, 0x1FEA}, {0x15, 0x1FEB}, {0x15, 0x1FFA}, {0x15, 0x1FFB}, {0x00, 0x0000}, {0x00, 0x0000}, // 1f78 - 1f7f
+ {0xd5, 0x0063}, {0xd5, 0x0066}, {0xd5, 0x0069}, {0xd5, 0x006C}, {0xd5, 0x006F}, {0xd5, 0x0072}, {0xd5, 0x0075}, {0xd5, 0x0078}, // 1f80 - 1f87
+ {0xec, 0x007B}, {0xec, 0x007E}, {0xec, 0x0081}, {0xec, 0x0084}, {0xec, 0x0087}, {0xec, 0x008A}, {0xec, 0x008D}, {0xec, 0x0090}, // 1f88 - 1f8f
+ {0xd5, 0x0093}, {0xd5, 0x0096}, {0xd5, 0x0099}, {0xd5, 0x009C}, {0xd5, 0x009F}, {0xd5, 0x00A2}, {0xd5, 0x00A5}, {0xd5, 0x00A8}, // 1f90 - 1f97
+ {0xec, 0x00AB}, {0xec, 0x00AE}, {0xec, 0x00B1}, {0xec, 0x00B4}, {0xec, 0x00B7}, {0xec, 0x00BA}, {0xec, 0x00BD}, {0xec, 0x00C0}, // 1f98 - 1f9f
+ {0xd5, 0x00C3}, {0xd5, 0x00C6}, {0xd5, 0x00C9}, {0xd5, 0x00CC}, {0xd5, 0x00CF}, {0xd5, 0x00D2}, {0xd5, 0x00D5}, {0xd5, 0x00D8}, // 1fa0 - 1fa7
+ {0xec, 0x00DB}, {0xec, 0x00DE}, {0xec, 0x00E1}, {0xec, 0x00E4}, {0xec, 0x00E7}, {0xec, 0x00EA}, {0xec, 0x00ED}, {0xec, 0x00F0}, // 1fa8 - 1faf
+ {0x15, 0x1FB8}, {0x15, 0x1FB9}, {0xd5, 0x00F3}, {0xd5, 0x00F6}, {0xd5, 0x00F9}, {0x00, 0x0000}, {0xd5, 0x00FC}, {0xd5, 0x00FE}, // 1fb0 - 1fb7
+ {0x6a, 0x1FB0}, {0x6a, 0x1FB1}, {0x6a, 0x1F70}, {0x6a, 0x1F71}, {0xec, 0x0101}, {0x00, 0x0000}, {0xf5, 0x0104}, {0x00, 0x0000}, // 1fb8 - 1fbf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0xd5, 0x0106}, {0xd5, 0x0109}, {0xd5, 0x010C}, {0x00, 0x0000}, {0xd5, 0x010F}, {0xd5, 0x0111}, // 1fc0 - 1fc7
+ {0x6a, 0x1F72}, {0x6a, 0x1F73}, {0x6a, 0x1F74}, {0x6a, 0x1F75}, {0xec, 0x0114}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 1fc8 - 1fcf
+ {0x15, 0x1FD8}, {0x15, 0x1FD9}, {0xd5, 0x0117}, {0xd5, 0x0119}, {0x00, 0x0000}, {0x00, 0x0000}, {0xd5, 0x011B}, {0xd5, 0x011D}, // 1fd0 - 1fd7
+ {0x6a, 0x1FD0}, {0x6a, 0x1FD1}, {0x6a, 0x1F76}, {0x6a, 0x1F77}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 1fd8 - 1fdf
+ {0x15, 0x1FE8}, {0x15, 0x1FE9}, {0xd5, 0x011F}, {0xd5, 0x0121}, {0xd5, 0x0123}, {0x15, 0x1FEC}, {0xd5, 0x0125}, {0xd5, 0x0127}, // 1fe0 - 1fe7
+ {0x6a, 0x1FE0}, {0x6a, 0x1FE1}, {0x6a, 0x1F7A}, {0x6a, 0x1F7B}, {0x6a, 0x1FE5}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 1fe8 - 1fef
+ {0x00, 0x0000}, {0x00, 0x0000}, {0xd5, 0x0129}, {0xd5, 0x012C}, {0xd5, 0x012F}, {0x00, 0x0000}, {0xd5, 0x0132}, {0xd5, 0x0134}, // 1ff0 - 1ff7
+ {0x6a, 0x1F78}, {0x6a, 0x1F79}, {0x6a, 0x1F7C}, {0x6a, 0x1F7D}, {0xec, 0x0137}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 1ff8 - 1fff
+
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2100 - 2107
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2108 - 210f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2110 - 2117
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2118 - 211f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x03C9}, {0x00, 0x0000}, // 2120 - 2127
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x6a, 0x006B}, {0x6a, 0x00E5}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2128 - 212f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2130 - 2137
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2138 - 213f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2140 - 2147
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2148 - 214f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2150 - 2157
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2158 - 215f
+ {0x68, 0x2170}, {0x68, 0x2171}, {0x68, 0x2172}, {0x68, 0x2173}, {0x68, 0x2174}, {0x68, 0x2175}, {0x68, 0x2176}, {0x68, 0x2177}, // 2160 - 2167
+ {0x68, 0x2178}, {0x68, 0x2179}, {0x68, 0x217A}, {0x68, 0x217B}, {0x68, 0x217C}, {0x68, 0x217D}, {0x68, 0x217E}, {0x68, 0x217F}, // 2168 - 216f
+ {0x14, 0x2160}, {0x14, 0x2161}, {0x14, 0x2162}, {0x14, 0x2163}, {0x14, 0x2164}, {0x14, 0x2165}, {0x14, 0x2166}, {0x14, 0x2167}, // 2170 - 2177
+ {0x14, 0x2168}, {0x14, 0x2169}, {0x14, 0x216A}, {0x14, 0x216B}, {0x14, 0x216C}, {0x14, 0x216D}, {0x14, 0x216E}, {0x14, 0x216F}, // 2178 - 217f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2180 - 2187
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2188 - 218f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2190 - 2197
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2198 - 219f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21a0 - 21a7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21a8 - 21af
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21b0 - 21b7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21b8 - 21bf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21c0 - 21c7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21c8 - 21cf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21d0 - 21d7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21d8 - 21df
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21e0 - 21e7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21e8 - 21ef
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21f0 - 21f7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 21f8 - 21ff
+
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2400 - 2407
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2408 - 240f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2410 - 2417
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2418 - 241f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2420 - 2427
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2428 - 242f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2430 - 2437
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2438 - 243f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2440 - 2447
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2448 - 244f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2450 - 2457
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2458 - 245f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2460 - 2467
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2468 - 246f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2470 - 2477
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2478 - 247f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2480 - 2487
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2488 - 248f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2490 - 2497
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 2498 - 249f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 24a0 - 24a7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 24a8 - 24af
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x68, 0x24D0}, {0x68, 0x24D1}, // 24b0 - 24b7
+ {0x68, 0x24D2}, {0x68, 0x24D3}, {0x68, 0x24D4}, {0x68, 0x24D5}, {0x68, 0x24D6}, {0x68, 0x24D7}, {0x68, 0x24D8}, {0x68, 0x24D9}, // 24b8 - 24bf
+ {0x68, 0x24DA}, {0x68, 0x24DB}, {0x68, 0x24DC}, {0x68, 0x24DD}, {0x68, 0x24DE}, {0x68, 0x24DF}, {0x68, 0x24E0}, {0x68, 0x24E1}, // 24c0 - 24c7
+ {0x68, 0x24E2}, {0x68, 0x24E3}, {0x68, 0x24E4}, {0x68, 0x24E5}, {0x68, 0x24E6}, {0x68, 0x24E7}, {0x68, 0x24E8}, {0x68, 0x24E9}, // 24c8 - 24cf
+ {0x14, 0x24B6}, {0x14, 0x24B7}, {0x14, 0x24B8}, {0x14, 0x24B9}, {0x14, 0x24BA}, {0x14, 0x24BB}, {0x14, 0x24BC}, {0x14, 0x24BD}, // 24d0 - 24d7
+ {0x14, 0x24BE}, {0x14, 0x24BF}, {0x14, 0x24C0}, {0x14, 0x24C1}, {0x14, 0x24C2}, {0x14, 0x24C3}, {0x14, 0x24C4}, {0x14, 0x24C5}, // 24d8 - 24df
+ {0x14, 0x24C6}, {0x14, 0x24C7}, {0x14, 0x24C8}, {0x14, 0x24C9}, {0x14, 0x24CA}, {0x14, 0x24CB}, {0x14, 0x24CC}, {0x14, 0x24CD}, // 24e0 - 24e7
+ {0x14, 0x24CE}, {0x14, 0x24CF}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 24e8 - 24ef
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 24f0 - 24f7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // 24f8 - 24ff
+
+ {0xd5, 0x013A}, {0xd5, 0x013D}, {0xd5, 0x0140}, {0xd5, 0x0143}, {0xd5, 0x0146}, {0xd5, 0x0149}, {0xd5, 0x014C}, {0x00, 0x0000}, // fb00 - fb07
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb08 - fb0f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0xd5, 0x014F}, {0xd5, 0x0152}, {0xd5, 0x0155}, {0xd5, 0x0158}, {0xd5, 0x015B}, // fb10 - fb17
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb18 - fb1f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb20 - fb27
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb28 - fb2f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb30 - fb37
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb38 - fb3f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb40 - fb47
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb48 - fb4f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb50 - fb57
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb58 - fb5f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb60 - fb67
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb68 - fb6f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb70 - fb77
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb78 - fb7f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb80 - fb87
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb88 - fb8f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb90 - fb97
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fb98 - fb9f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fba0 - fba7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fba8 - fbaf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbb0 - fbb7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbb8 - fbbf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbc0 - fbc7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbc8 - fbcf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbd0 - fbd7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbd8 - fbdf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbe0 - fbe7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbe8 - fbef
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbf0 - fbf7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fbf8 - fbff
+
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff00 - ff07
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff08 - ff0f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff10 - ff17
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff18 - ff1f
+ {0x00, 0x0000}, {0x6a, 0xFF41}, {0x6a, 0xFF42}, {0x6a, 0xFF43}, {0x6a, 0xFF44}, {0x6a, 0xFF45}, {0x6a, 0xFF46}, {0x6a, 0xFF47}, // ff20 - ff27
+ {0x6a, 0xFF48}, {0x6a, 0xFF49}, {0x6a, 0xFF4A}, {0x6a, 0xFF4B}, {0x6a, 0xFF4C}, {0x6a, 0xFF4D}, {0x6a, 0xFF4E}, {0x6a, 0xFF4F}, // ff28 - ff2f
+ {0x6a, 0xFF50}, {0x6a, 0xFF51}, {0x6a, 0xFF52}, {0x6a, 0xFF53}, {0x6a, 0xFF54}, {0x6a, 0xFF55}, {0x6a, 0xFF56}, {0x6a, 0xFF57}, // ff30 - ff37
+ {0x6a, 0xFF58}, {0x6a, 0xFF59}, {0x6a, 0xFF5A}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff38 - ff3f
+ {0x00, 0x0000}, {0x15, 0xFF21}, {0x15, 0xFF22}, {0x15, 0xFF23}, {0x15, 0xFF24}, {0x15, 0xFF25}, {0x15, 0xFF26}, {0x15, 0xFF27}, // ff40 - ff47
+ {0x15, 0xFF28}, {0x15, 0xFF29}, {0x15, 0xFF2A}, {0x15, 0xFF2B}, {0x15, 0xFF2C}, {0x15, 0xFF2D}, {0x15, 0xFF2E}, {0x15, 0xFF2F}, // ff48 - ff4f
+ {0x15, 0xFF30}, {0x15, 0xFF31}, {0x15, 0xFF32}, {0x15, 0xFF33}, {0x15, 0xFF34}, {0x15, 0xFF35}, {0x15, 0xFF36}, {0x15, 0xFF37}, // ff50 - ff57
+ {0x15, 0xFF38}, {0x15, 0xFF39}, {0x15, 0xFF3A}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff58 - ff5f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff60 - ff67
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff68 - ff6f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff70 - ff77
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff78 - ff7f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff80 - ff87
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff88 - ff8f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff90 - ff97
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ff98 - ff9f
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffa0 - ffa7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffa8 - ffaf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffb0 - ffb7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffb8 - ffbf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffc0 - ffc7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffc8 - ffcf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffd0 - ffd7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffd8 - ffdf
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffe0 - ffe7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // ffe8 - ffef
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fff0 - fff7
+ {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x0000}, // fff8 - ffff
+
+};
+
+
+#define MaxCaseMappingExtras 3
+
+static Mapping CaseMappingExtra[] = {
+ {0x80, 0, 0x0000, 0x0000, 0x0000}, // 0x0000 (0 0x0)
+ {0x60, 1, 0x0069, 0x0000, 0x0000}, // 0x0049 (1 0x1)
+ {0x8a, 0, 0x0000, 0x0000, 0x0000}, // 0x0049 (2 0x2)
+ {0x60, 1, 0x006A, 0x0000, 0x0000}, // 0x004a (3 0x3)
+ {0x8a, 0, 0x0000, 0x0000, 0x0000}, // 0x004a (4 0x4)
+ {0x15, 1, 0x039C, 0x0000, 0x0000}, // 0x00b5 (5 0x5)
+ {0x60, 1, 0x03BC, 0x0000, 0x0000}, // 0x00b5 (6 0x6)
+ {0x60, 1, 0x00EC, 0x0000, 0x0000}, // 0x00cc (7 0x7)
+ {0x8a, 0, 0x0000, 0x0000, 0x0000}, // 0x00cc (8 0x8)
+ {0x60, 1, 0x00ED, 0x0000, 0x0000}, // 0x00cd (9 0x9)
+ {0x8a, 0, 0x0000, 0x0000, 0x0000}, // 0x00cd (10 0xa)
+ {0x05, 2, 0x0053, 0x0053, 0x0000}, // 0x00df (11 0xb)
+ {0x10, 2, 0x0053, 0x0073, 0x0000}, // 0x00df (12 0xc)
+ {0x40, 2, 0x0073, 0x0073, 0x0000}, // 0x00df (13 0xd)
+ {0x60, 1, 0x0129, 0x0000, 0x0000}, // 0x0128 (14 0xe)
+ {0x8a, 0, 0x0000, 0x0000, 0x0000}, // 0x0128 (15 0xf)
+ {0x60, 1, 0x012F, 0x0000, 0x0000}, // 0x012e (16 0x10)
+ {0x8a, 0, 0x0000, 0x0000, 0x0000}, // 0x012e (17 0x11)
+ {0x15, 1, 0x0049, 0x0000, 0x0000}, // 0x0131 (18 0x12)
+ {0x60, 1, 0x0069, 0x0000, 0x0000}, // 0x0131 (19 0x13)
+ {0x15, 2, 0x02BC, 0x004E, 0x0000}, // 0x0149 (20 0x14)
+ {0x40, 2, 0x02BC, 0x006E, 0x0000}, // 0x0149 (21 0x15)
+ {0x15, 1, 0x0053, 0x0000, 0x0000}, // 0x017f (22 0x16)
+ {0x60, 1, 0x0073, 0x0000, 0x0000}, // 0x017f (23 0x17)
+ {0x6a, 1, 0x01C6, 0x0000, 0x0000}, // 0x01c4 (24 0x18)
+ {0x10, 1, 0x01C5, 0x0000, 0x0000}, // 0x01c4 (25 0x19)
+ {0x68, 1, 0x01C6, 0x0000, 0x0000}, // 0x01c5 (26 0x1a)
+ {0x04, 1, 0x01C4, 0x0000, 0x0000}, // 0x01c5 (27 0x1b)
+ {0x05, 1, 0x01C4, 0x0000, 0x0000}, // 0x01c6 (28 0x1c)
+ {0x10, 1, 0x01C5, 0x0000, 0x0000}, // 0x01c6 (29 0x1d)
+ {0x6a, 1, 0x01C9, 0x0000, 0x0000}, // 0x01c7 (30 0x1e)
+ {0x10, 1, 0x01C8, 0x0000, 0x0000}, // 0x01c7 (31 0x1f)
+ {0x68, 1, 0x01C9, 0x0000, 0x0000}, // 0x01c8 (32 0x20)
+ {0x04, 1, 0x01C7, 0x0000, 0x0000}, // 0x01c8 (33 0x21)
+ {0x05, 1, 0x01C7, 0x0000, 0x0000}, // 0x01c9 (34 0x22)
+ {0x10, 1, 0x01C8, 0x0000, 0x0000}, // 0x01c9 (35 0x23)
+ {0x6a, 1, 0x01CC, 0x0000, 0x0000}, // 0x01ca (36 0x24)
+ {0x10, 1, 0x01CB, 0x0000, 0x0000}, // 0x01ca (37 0x25)
+ {0x68, 1, 0x01CC, 0x0000, 0x0000}, // 0x01cb (38 0x26)
+ {0x04, 1, 0x01CA, 0x0000, 0x0000}, // 0x01cb (39 0x27)
+ {0x05, 1, 0x01CA, 0x0000, 0x0000}, // 0x01cc (40 0x28)
+ {0x10, 1, 0x01CB, 0x0000, 0x0000}, // 0x01cc (41 0x29)
+ {0x15, 2, 0x004A, 0x030C, 0x0000}, // 0x01f0 (42 0x2a)
+ {0x40, 2, 0x006A, 0x030C, 0x0000}, // 0x01f0 (43 0x2b)
+ {0x6a, 1, 0x01F3, 0x0000, 0x0000}, // 0x01f1 (44 0x2c)
+ {0x10, 1, 0x01F2, 0x0000, 0x0000}, // 0x01f1 (45 0x2d)
+ {0x68, 1, 0x01F3, 0x0000, 0x0000}, // 0x01f2 (46 0x2e)
+ {0x04, 1, 0x01F1, 0x0000, 0x0000}, // 0x01f2 (47 0x2f)
+ {0x05, 1, 0x01F1, 0x0000, 0x0000}, // 0x01f3 (48 0x30)
+ {0x10, 1, 0x01F2, 0x0000, 0x0000}, // 0x01f3 (49 0x31)
+ {0x14, 1, 0x0399, 0x0000, 0x0000}, // 0x0345 (50 0x32)
+ {0x60, 1, 0x03B9, 0x0000, 0x0000}, // 0x0345 (51 0x33)
+ {0x15, 3, 0x0399, 0x0308, 0x0301}, // 0x0390 (52 0x34)
+ {0x40, 3, 0x03B9, 0x0308, 0x0301}, // 0x0390 (53 0x35)
+ {0x60, 1, 0x03C3, 0x0000, 0x0000}, // 0x03a3 (54 0x36)
+ {0x8a, 0, 0x0000, 0x0000, 0x0000}, // 0x03a3 (55 0x37)
+ {0x15, 3, 0x03A5, 0x0308, 0x0301}, // 0x03b0 (56 0x38)
+ {0x40, 3, 0x03C5, 0x0308, 0x0301}, // 0x03b0 (57 0x39)
+ {0x15, 1, 0x03A3, 0x0000, 0x0000}, // 0x03c2 (58 0x3a)
+ {0x60, 1, 0x03C3, 0x0000, 0x0000}, // 0x03c2 (59 0x3b)
+ {0x15, 1, 0x0392, 0x0000, 0x0000}, // 0x03d0 (60 0x3c)
+ {0x60, 1, 0x03B2, 0x0000, 0x0000}, // 0x03d0 (61 0x3d)
+ {0x15, 1, 0x0398, 0x0000, 0x0000}, // 0x03d1 (62 0x3e)
+ {0x60, 1, 0x03B8, 0x0000, 0x0000}, // 0x03d1 (63 0x3f)
+ {0x15, 1, 0x03A6, 0x0000, 0x0000}, // 0x03d5 (64 0x40)
+ {0x60, 1, 0x03C6, 0x0000, 0x0000}, // 0x03d5 (65 0x41)
+ {0x15, 1, 0x03A0, 0x0000, 0x0000}, // 0x03d6 (66 0x42)
+ {0x60, 1, 0x03C0, 0x0000, 0x0000}, // 0x03d6 (67 0x43)
+ {0x15, 1, 0x039A, 0x0000, 0x0000}, // 0x03f0 (68 0x44)
+ {0x60, 1, 0x03BA, 0x0000, 0x0000}, // 0x03f0 (69 0x45)
+ {0x15, 1, 0x03A1, 0x0000, 0x0000}, // 0x03f1 (70 0x46)
+ {0x60, 1, 0x03C1, 0x0000, 0x0000}, // 0x03f1 (71 0x47)
+ {0x15, 1, 0x03A3, 0x0000, 0x0000}, // 0x03f2 (72 0x48)
+ {0x60, 1, 0x03C3, 0x0000, 0x0000}, // 0x03f2 (73 0x49)
+ {0x15, 1, 0x0395, 0x0000, 0x0000}, // 0x03f5 (74 0x4a)
+ {0x60, 1, 0x03B5, 0x0000, 0x0000}, // 0x03f5 (75 0x4b)
+ {0x05, 2, 0x0535, 0x0552, 0x0000}, // 0x0587 (76 0x4c)
+ {0x10, 2, 0x0535, 0x0582, 0x0000}, // 0x0587 (77 0x4d)
+ {0x40, 2, 0x0565, 0x0582, 0x0000}, // 0x0587 (78 0x4e)
+ {0x15, 2, 0x0048, 0x0331, 0x0000}, // 0x1e96 (79 0x4f)
+ {0x40, 2, 0x0068, 0x0331, 0x0000}, // 0x1e96 (80 0x50)
+ {0x15, 2, 0x0054, 0x0308, 0x0000}, // 0x1e97 (81 0x51)
+ {0x40, 2, 0x0074, 0x0308, 0x0000}, // 0x1e97 (82 0x52)
+ {0x15, 2, 0x0057, 0x030A, 0x0000}, // 0x1e98 (83 0x53)
+ {0x40, 2, 0x0077, 0x030A, 0x0000}, // 0x1e98 (84 0x54)
+ {0x15, 2, 0x0059, 0x030A, 0x0000}, // 0x1e99 (85 0x55)
+ {0x40, 2, 0x0079, 0x030A, 0x0000}, // 0x1e99 (86 0x56)
+ {0x15, 2, 0x0041, 0x02BE, 0x0000}, // 0x1e9a (87 0x57)
+ {0x40, 2, 0x0061, 0x02BE, 0x0000}, // 0x1e9a (88 0x58)
+ {0x15, 1, 0x1E60, 0x0000, 0x0000}, // 0x1e9b (89 0x59)
+ {0x60, 1, 0x1E61, 0x0000, 0x0000}, // 0x1e9b (90 0x5a)
+ {0x15, 2, 0x03A5, 0x0313, 0x0000}, // 0x1f50 (91 0x5b)
+ {0x40, 2, 0x03C5, 0x0313, 0x0000}, // 0x1f50 (92 0x5c)
+ {0x15, 3, 0x03A5, 0x0313, 0x0300}, // 0x1f52 (93 0x5d)
+ {0x40, 3, 0x03C5, 0x0313, 0x0300}, // 0x1f52 (94 0x5e)
+ {0x15, 3, 0x03A5, 0x0313, 0x0301}, // 0x1f54 (95 0x5f)
+ {0x40, 3, 0x03C5, 0x0313, 0x0301}, // 0x1f54 (96 0x60)
+ {0x15, 3, 0x03A5, 0x0313, 0x0342}, // 0x1f56 (97 0x61)
+ {0x40, 3, 0x03C5, 0x0313, 0x0342}, // 0x1f56 (98 0x62)
+ {0x05, 2, 0x1F08, 0x0399, 0x0000}, // 0x1f80 (99 0x63)
+ {0x10, 1, 0x1F88, 0x0000, 0x0000}, // 0x1f80 (100 0x64)
+ {0x40, 2, 0x1F00, 0x03B9, 0x0000}, // 0x1f80 (101 0x65)
+ {0x05, 2, 0x1F09, 0x0399, 0x0000}, // 0x1f81 (102 0x66)
+ {0x10, 1, 0x1F89, 0x0000, 0x0000}, // 0x1f81 (103 0x67)
+ {0x40, 2, 0x1F01, 0x03B9, 0x0000}, // 0x1f81 (104 0x68)
+ {0x05, 2, 0x1F0A, 0x0399, 0x0000}, // 0x1f82 (105 0x69)
+ {0x10, 1, 0x1F8A, 0x0000, 0x0000}, // 0x1f82 (106 0x6a)
+ {0x40, 2, 0x1F02, 0x03B9, 0x0000}, // 0x1f82 (107 0x6b)
+ {0x05, 2, 0x1F0B, 0x0399, 0x0000}, // 0x1f83 (108 0x6c)
+ {0x10, 1, 0x1F8B, 0x0000, 0x0000}, // 0x1f83 (109 0x6d)
+ {0x40, 2, 0x1F03, 0x03B9, 0x0000}, // 0x1f83 (110 0x6e)
+ {0x05, 2, 0x1F0C, 0x0399, 0x0000}, // 0x1f84 (111 0x6f)
+ {0x10, 1, 0x1F8C, 0x0000, 0x0000}, // 0x1f84 (112 0x70)
+ {0x40, 2, 0x1F04, 0x03B9, 0x0000}, // 0x1f84 (113 0x71)
+ {0x05, 2, 0x1F0D, 0x0399, 0x0000}, // 0x1f85 (114 0x72)
+ {0x10, 1, 0x1F8D, 0x0000, 0x0000}, // 0x1f85 (115 0x73)
+ {0x40, 2, 0x1F05, 0x03B9, 0x0000}, // 0x1f85 (116 0x74)
+ {0x05, 2, 0x1F0E, 0x0399, 0x0000}, // 0x1f86 (117 0x75)
+ {0x10, 1, 0x1F8E, 0x0000, 0x0000}, // 0x1f86 (118 0x76)
+ {0x40, 2, 0x1F06, 0x03B9, 0x0000}, // 0x1f86 (119 0x77)
+ {0x05, 2, 0x1F0F, 0x0399, 0x0000}, // 0x1f87 (120 0x78)
+ {0x10, 1, 0x1F8F, 0x0000, 0x0000}, // 0x1f87 (121 0x79)
+ {0x40, 2, 0x1F07, 0x03B9, 0x0000}, // 0x1f87 (122 0x7a)
+ {0x28, 1, 0x1F80, 0x0000, 0x0000}, // 0x1f88 (123 0x7b)
+ {0x04, 2, 0x1F08, 0x0399, 0x0000}, // 0x1f88 (124 0x7c)
+ {0x40, 2, 0x1F00, 0x03B9, 0x0000}, // 0x1f88 (125 0x7d)
+ {0x28, 1, 0x1F81, 0x0000, 0x0000}, // 0x1f89 (126 0x7e)
+ {0x04, 2, 0x1F09, 0x0399, 0x0000}, // 0x1f89 (127 0x7f)
+ {0x40, 2, 0x1F01, 0x03B9, 0x0000}, // 0x1f89 (128 0x80)
+ {0x28, 1, 0x1F82, 0x0000, 0x0000}, // 0x1f8a (129 0x81)
+ {0x04, 2, 0x1F0A, 0x0399, 0x0000}, // 0x1f8a (130 0x82)
+ {0x40, 2, 0x1F02, 0x03B9, 0x0000}, // 0x1f8a (131 0x83)
+ {0x28, 1, 0x1F83, 0x0000, 0x0000}, // 0x1f8b (132 0x84)
+ {0x04, 2, 0x1F0B, 0x0399, 0x0000}, // 0x1f8b (133 0x85)
+ {0x40, 2, 0x1F03, 0x03B9, 0x0000}, // 0x1f8b (134 0x86)
+ {0x28, 1, 0x1F84, 0x0000, 0x0000}, // 0x1f8c (135 0x87)
+ {0x04, 2, 0x1F0C, 0x0399, 0x0000}, // 0x1f8c (136 0x88)
+ {0x40, 2, 0x1F04, 0x03B9, 0x0000}, // 0x1f8c (137 0x89)
+ {0x28, 1, 0x1F85, 0x0000, 0x0000}, // 0x1f8d (138 0x8a)
+ {0x04, 2, 0x1F0D, 0x0399, 0x0000}, // 0x1f8d (139 0x8b)
+ {0x40, 2, 0x1F05, 0x03B9, 0x0000}, // 0x1f8d (140 0x8c)
+ {0x28, 1, 0x1F86, 0x0000, 0x0000}, // 0x1f8e (141 0x8d)
+ {0x04, 2, 0x1F0E, 0x0399, 0x0000}, // 0x1f8e (142 0x8e)
+ {0x40, 2, 0x1F06, 0x03B9, 0x0000}, // 0x1f8e (143 0x8f)
+ {0x28, 1, 0x1F87, 0x0000, 0x0000}, // 0x1f8f (144 0x90)
+ {0x04, 2, 0x1F0F, 0x0399, 0x0000}, // 0x1f8f (145 0x91)
+ {0x40, 2, 0x1F07, 0x03B9, 0x0000}, // 0x1f8f (146 0x92)
+ {0x05, 2, 0x1F28, 0x0399, 0x0000}, // 0x1f90 (147 0x93)
+ {0x10, 1, 0x1F98, 0x0000, 0x0000}, // 0x1f90 (148 0x94)
+ {0x40, 2, 0x1F20, 0x03B9, 0x0000}, // 0x1f90 (149 0x95)
+ {0x05, 2, 0x1F29, 0x0399, 0x0000}, // 0x1f91 (150 0x96)
+ {0x10, 1, 0x1F99, 0x0000, 0x0000}, // 0x1f91 (151 0x97)
+ {0x40, 2, 0x1F21, 0x03B9, 0x0000}, // 0x1f91 (152 0x98)
+ {0x05, 2, 0x1F2A, 0x0399, 0x0000}, // 0x1f92 (153 0x99)
+ {0x10, 1, 0x1F9A, 0x0000, 0x0000}, // 0x1f92 (154 0x9a)
+ {0x40, 2, 0x1F22, 0x03B9, 0x0000}, // 0x1f92 (155 0x9b)
+ {0x05, 2, 0x1F2B, 0x0399, 0x0000}, // 0x1f93 (156 0x9c)
+ {0x10, 1, 0x1F9B, 0x0000, 0x0000}, // 0x1f93 (157 0x9d)
+ {0x40, 2, 0x1F23, 0x03B9, 0x0000}, // 0x1f93 (158 0x9e)
+ {0x05, 2, 0x1F2C, 0x0399, 0x0000}, // 0x1f94 (159 0x9f)
+ {0x10, 1, 0x1F9C, 0x0000, 0x0000}, // 0x1f94 (160 0xa0)
+ {0x40, 2, 0x1F24, 0x03B9, 0x0000}, // 0x1f94 (161 0xa1)
+ {0x05, 2, 0x1F2D, 0x0399, 0x0000}, // 0x1f95 (162 0xa2)
+ {0x10, 1, 0x1F9D, 0x0000, 0x0000}, // 0x1f95 (163 0xa3)
+ {0x40, 2, 0x1F25, 0x03B9, 0x0000}, // 0x1f95 (164 0xa4)
+ {0x05, 2, 0x1F2E, 0x0399, 0x0000}, // 0x1f96 (165 0xa5)
+ {0x10, 1, 0x1F9E, 0x0000, 0x0000}, // 0x1f96 (166 0xa6)
+ {0x40, 2, 0x1F26, 0x03B9, 0x0000}, // 0x1f96 (167 0xa7)
+ {0x05, 2, 0x1F2F, 0x0399, 0x0000}, // 0x1f97 (168 0xa8)
+ {0x10, 1, 0x1F9F, 0x0000, 0x0000}, // 0x1f97 (169 0xa9)
+ {0x40, 2, 0x1F27, 0x03B9, 0x0000}, // 0x1f97 (170 0xaa)
+ {0x28, 1, 0x1F90, 0x0000, 0x0000}, // 0x1f98 (171 0xab)
+ {0x04, 2, 0x1F28, 0x0399, 0x0000}, // 0x1f98 (172 0xac)
+ {0x40, 2, 0x1F20, 0x03B9, 0x0000}, // 0x1f98 (173 0xad)
+ {0x28, 1, 0x1F91, 0x0000, 0x0000}, // 0x1f99 (174 0xae)
+ {0x04, 2, 0x1F29, 0x0399, 0x0000}, // 0x1f99 (175 0xaf)
+ {0x40, 2, 0x1F21, 0x03B9, 0x0000}, // 0x1f99 (176 0xb0)
+ {0x28, 1, 0x1F92, 0x0000, 0x0000}, // 0x1f9a (177 0xb1)
+ {0x04, 2, 0x1F2A, 0x0399, 0x0000}, // 0x1f9a (178 0xb2)
+ {0x40, 2, 0x1F22, 0x03B9, 0x0000}, // 0x1f9a (179 0xb3)
+ {0x28, 1, 0x1F93, 0x0000, 0x0000}, // 0x1f9b (180 0xb4)
+ {0x04, 2, 0x1F2B, 0x0399, 0x0000}, // 0x1f9b (181 0xb5)
+ {0x40, 2, 0x1F23, 0x03B9, 0x0000}, // 0x1f9b (182 0xb6)
+ {0x28, 1, 0x1F94, 0x0000, 0x0000}, // 0x1f9c (183 0xb7)
+ {0x04, 2, 0x1F2C, 0x0399, 0x0000}, // 0x1f9c (184 0xb8)
+ {0x40, 2, 0x1F24, 0x03B9, 0x0000}, // 0x1f9c (185 0xb9)
+ {0x28, 1, 0x1F95, 0x0000, 0x0000}, // 0x1f9d (186 0xba)
+ {0x04, 2, 0x1F2D, 0x0399, 0x0000}, // 0x1f9d (187 0xbb)
+ {0x40, 2, 0x1F25, 0x03B9, 0x0000}, // 0x1f9d (188 0xbc)
+ {0x28, 1, 0x1F96, 0x0000, 0x0000}, // 0x1f9e (189 0xbd)
+ {0x04, 2, 0x1F2E, 0x0399, 0x0000}, // 0x1f9e (190 0xbe)
+ {0x40, 2, 0x1F26, 0x03B9, 0x0000}, // 0x1f9e (191 0xbf)
+ {0x28, 1, 0x1F97, 0x0000, 0x0000}, // 0x1f9f (192 0xc0)
+ {0x04, 2, 0x1F2F, 0x0399, 0x0000}, // 0x1f9f (193 0xc1)
+ {0x40, 2, 0x1F27, 0x03B9, 0x0000}, // 0x1f9f (194 0xc2)
+ {0x05, 2, 0x1F68, 0x0399, 0x0000}, // 0x1fa0 (195 0xc3)
+ {0x10, 1, 0x1FA8, 0x0000, 0x0000}, // 0x1fa0 (196 0xc4)
+ {0x40, 2, 0x1F60, 0x03B9, 0x0000}, // 0x1fa0 (197 0xc5)
+ {0x05, 2, 0x1F69, 0x0399, 0x0000}, // 0x1fa1 (198 0xc6)
+ {0x10, 1, 0x1FA9, 0x0000, 0x0000}, // 0x1fa1 (199 0xc7)
+ {0x40, 2, 0x1F61, 0x03B9, 0x0000}, // 0x1fa1 (200 0xc8)
+ {0x05, 2, 0x1F6A, 0x0399, 0x0000}, // 0x1fa2 (201 0xc9)
+ {0x10, 1, 0x1FAA, 0x0000, 0x0000}, // 0x1fa2 (202 0xca)
+ {0x40, 2, 0x1F62, 0x03B9, 0x0000}, // 0x1fa2 (203 0xcb)
+ {0x05, 2, 0x1F6B, 0x0399, 0x0000}, // 0x1fa3 (204 0xcc)
+ {0x10, 1, 0x1FAB, 0x0000, 0x0000}, // 0x1fa3 (205 0xcd)
+ {0x40, 2, 0x1F63, 0x03B9, 0x0000}, // 0x1fa3 (206 0xce)
+ {0x05, 2, 0x1F6C, 0x0399, 0x0000}, // 0x1fa4 (207 0xcf)
+ {0x10, 1, 0x1FAC, 0x0000, 0x0000}, // 0x1fa4 (208 0xd0)
+ {0x40, 2, 0x1F64, 0x03B9, 0x0000}, // 0x1fa4 (209 0xd1)
+ {0x05, 2, 0x1F6D, 0x0399, 0x0000}, // 0x1fa5 (210 0xd2)
+ {0x10, 1, 0x1FAD, 0x0000, 0x0000}, // 0x1fa5 (211 0xd3)
+ {0x40, 2, 0x1F65, 0x03B9, 0x0000}, // 0x1fa5 (212 0xd4)
+ {0x05, 2, 0x1F6E, 0x0399, 0x0000}, // 0x1fa6 (213 0xd5)
+ {0x10, 1, 0x1FAE, 0x0000, 0x0000}, // 0x1fa6 (214 0xd6)
+ {0x40, 2, 0x1F66, 0x03B9, 0x0000}, // 0x1fa6 (215 0xd7)
+ {0x05, 2, 0x1F6F, 0x0399, 0x0000}, // 0x1fa7 (216 0xd8)
+ {0x10, 1, 0x1FAF, 0x0000, 0x0000}, // 0x1fa7 (217 0xd9)
+ {0x40, 2, 0x1F67, 0x03B9, 0x0000}, // 0x1fa7 (218 0xda)
+ {0x28, 1, 0x1FA0, 0x0000, 0x0000}, // 0x1fa8 (219 0xdb)
+ {0x04, 2, 0x1F68, 0x0399, 0x0000}, // 0x1fa8 (220 0xdc)
+ {0x40, 2, 0x1F60, 0x03B9, 0x0000}, // 0x1fa8 (221 0xdd)
+ {0x28, 1, 0x1FA1, 0x0000, 0x0000}, // 0x1fa9 (222 0xde)
+ {0x04, 2, 0x1F69, 0x0399, 0x0000}, // 0x1fa9 (223 0xdf)
+ {0x40, 2, 0x1F61, 0x03B9, 0x0000}, // 0x1fa9 (224 0xe0)
+ {0x28, 1, 0x1FA2, 0x0000, 0x0000}, // 0x1faa (225 0xe1)
+ {0x04, 2, 0x1F6A, 0x0399, 0x0000}, // 0x1faa (226 0xe2)
+ {0x40, 2, 0x1F62, 0x03B9, 0x0000}, // 0x1faa (227 0xe3)
+ {0x28, 1, 0x1FA3, 0x0000, 0x0000}, // 0x1fab (228 0xe4)
+ {0x04, 2, 0x1F6B, 0x0399, 0x0000}, // 0x1fab (229 0xe5)
+ {0x40, 2, 0x1F63, 0x03B9, 0x0000}, // 0x1fab (230 0xe6)
+ {0x28, 1, 0x1FA4, 0x0000, 0x0000}, // 0x1fac (231 0xe7)
+ {0x04, 2, 0x1F6C, 0x0399, 0x0000}, // 0x1fac (232 0xe8)
+ {0x40, 2, 0x1F64, 0x03B9, 0x0000}, // 0x1fac (233 0xe9)
+ {0x28, 1, 0x1FA5, 0x0000, 0x0000}, // 0x1fad (234 0xea)
+ {0x04, 2, 0x1F6D, 0x0399, 0x0000}, // 0x1fad (235 0xeb)
+ {0x40, 2, 0x1F65, 0x03B9, 0x0000}, // 0x1fad (236 0xec)
+ {0x28, 1, 0x1FA6, 0x0000, 0x0000}, // 0x1fae (237 0xed)
+ {0x04, 2, 0x1F6E, 0x0399, 0x0000}, // 0x1fae (238 0xee)
+ {0x40, 2, 0x1F66, 0x03B9, 0x0000}, // 0x1fae (239 0xef)
+ {0x28, 1, 0x1FA7, 0x0000, 0x0000}, // 0x1faf (240 0xf0)
+ {0x04, 2, 0x1F6F, 0x0399, 0x0000}, // 0x1faf (241 0xf1)
+ {0x40, 2, 0x1F67, 0x03B9, 0x0000}, // 0x1faf (242 0xf2)
+ {0x05, 2, 0x1FBA, 0x0399, 0x0000}, // 0x1fb2 (243 0xf3)
+ {0x10, 2, 0x1FBA, 0x0345, 0x0000}, // 0x1fb2 (244 0xf4)
+ {0x40, 2, 0x1F70, 0x03B9, 0x0000}, // 0x1fb2 (245 0xf5)
+ {0x05, 2, 0x0391, 0x0399, 0x0000}, // 0x1fb3 (246 0xf6)
+ {0x10, 1, 0x1FBC, 0x0000, 0x0000}, // 0x1fb3 (247 0xf7)
+ {0x40, 2, 0x03B1, 0x03B9, 0x0000}, // 0x1fb3 (248 0xf8)
+ {0x05, 2, 0x0386, 0x0399, 0x0000}, // 0x1fb4 (249 0xf9)
+ {0x10, 2, 0x0386, 0x0345, 0x0000}, // 0x1fb4 (250 0xfa)
+ {0x40, 2, 0x03AC, 0x03B9, 0x0000}, // 0x1fb4 (251 0xfb)
+ {0x15, 2, 0x0391, 0x0342, 0x0000}, // 0x1fb6 (252 0xfc)
+ {0x40, 2, 0x03B1, 0x0342, 0x0000}, // 0x1fb6 (253 0xfd)
+ {0x05, 3, 0x0391, 0x0342, 0x0399}, // 0x1fb7 (254 0xfe)
+ {0x10, 3, 0x0391, 0x0342, 0x0345}, // 0x1fb7 (255 0xff)
+ {0x40, 3, 0x03B1, 0x0342, 0x03B9}, // 0x1fb7 (256 0x100)
+ {0x28, 1, 0x1FB3, 0x0000, 0x0000}, // 0x1fbc (257 0x101)
+ {0x04, 2, 0x0391, 0x0399, 0x0000}, // 0x1fbc (258 0x102)
+ {0x40, 2, 0x03B1, 0x03B9, 0x0000}, // 0x1fbc (259 0x103)
+ {0x15, 1, 0x0399, 0x0000, 0x0000}, // 0x1fbe (260 0x104)
+ {0x60, 1, 0x03B9, 0x0000, 0x0000}, // 0x1fbe (261 0x105)
+ {0x05, 2, 0x1FCA, 0x0399, 0x0000}, // 0x1fc2 (262 0x106)
+ {0x10, 2, 0x1FCA, 0x0345, 0x0000}, // 0x1fc2 (263 0x107)
+ {0x40, 2, 0x1F74, 0x03B9, 0x0000}, // 0x1fc2 (264 0x108)
+ {0x05, 2, 0x0397, 0x0399, 0x0000}, // 0x1fc3 (265 0x109)
+ {0x10, 1, 0x1FCC, 0x0000, 0x0000}, // 0x1fc3 (266 0x10a)
+ {0x40, 2, 0x03B7, 0x03B9, 0x0000}, // 0x1fc3 (267 0x10b)
+ {0x05, 2, 0x0389, 0x0399, 0x0000}, // 0x1fc4 (268 0x10c)
+ {0x10, 2, 0x0389, 0x0345, 0x0000}, // 0x1fc4 (269 0x10d)
+ {0x40, 2, 0x03AE, 0x03B9, 0x0000}, // 0x1fc4 (270 0x10e)
+ {0x15, 2, 0x0397, 0x0342, 0x0000}, // 0x1fc6 (271 0x10f)
+ {0x40, 2, 0x03B7, 0x0342, 0x0000}, // 0x1fc6 (272 0x110)
+ {0x05, 3, 0x0397, 0x0342, 0x0399}, // 0x1fc7 (273 0x111)
+ {0x10, 3, 0x0397, 0x0342, 0x0345}, // 0x1fc7 (274 0x112)
+ {0x40, 3, 0x03B7, 0x0342, 0x03B9}, // 0x1fc7 (275 0x113)
+ {0x28, 1, 0x1FC3, 0x0000, 0x0000}, // 0x1fcc (276 0x114)
+ {0x04, 2, 0x0397, 0x0399, 0x0000}, // 0x1fcc (277 0x115)
+ {0x40, 2, 0x03B7, 0x03B9, 0x0000}, // 0x1fcc (278 0x116)
+ {0x15, 3, 0x0399, 0x0308, 0x0300}, // 0x1fd2 (279 0x117)
+ {0x40, 3, 0x03B9, 0x0308, 0x0300}, // 0x1fd2 (280 0x118)
+ {0x15, 3, 0x0399, 0x0308, 0x0301}, // 0x1fd3 (281 0x119)
+ {0x40, 3, 0x03B9, 0x0308, 0x0301}, // 0x1fd3 (282 0x11a)
+ {0x15, 2, 0x0399, 0x0342, 0x0000}, // 0x1fd6 (283 0x11b)
+ {0x40, 2, 0x03B9, 0x0342, 0x0000}, // 0x1fd6 (284 0x11c)
+ {0x15, 3, 0x0399, 0x0308, 0x0342}, // 0x1fd7 (285 0x11d)
+ {0x40, 3, 0x03B9, 0x0308, 0x0342}, // 0x1fd7 (286 0x11e)
+ {0x15, 3, 0x03A5, 0x0308, 0x0300}, // 0x1fe2 (287 0x11f)
+ {0x40, 3, 0x03C5, 0x0308, 0x0300}, // 0x1fe2 (288 0x120)
+ {0x15, 3, 0x03A5, 0x0308, 0x0301}, // 0x1fe3 (289 0x121)
+ {0x40, 3, 0x03C5, 0x0308, 0x0301}, // 0x1fe3 (290 0x122)
+ {0x15, 2, 0x03A1, 0x0313, 0x0000}, // 0x1fe4 (291 0x123)
+ {0x40, 2, 0x03C1, 0x0313, 0x0000}, // 0x1fe4 (292 0x124)
+ {0x15, 2, 0x03A5, 0x0342, 0x0000}, // 0x1fe6 (293 0x125)
+ {0x40, 2, 0x03C5, 0x0342, 0x0000}, // 0x1fe6 (294 0x126)
+ {0x15, 3, 0x03A5, 0x0308, 0x0342}, // 0x1fe7 (295 0x127)
+ {0x40, 3, 0x03C5, 0x0308, 0x0342}, // 0x1fe7 (296 0x128)
+ {0x05, 2, 0x1FFA, 0x0399, 0x0000}, // 0x1ff2 (297 0x129)
+ {0x10, 2, 0x1FFA, 0x0345, 0x0000}, // 0x1ff2 (298 0x12a)
+ {0x40, 2, 0x1F7C, 0x03B9, 0x0000}, // 0x1ff2 (299 0x12b)
+ {0x05, 2, 0x03A9, 0x0399, 0x0000}, // 0x1ff3 (300 0x12c)
+ {0x10, 1, 0x1FFC, 0x0000, 0x0000}, // 0x1ff3 (301 0x12d)
+ {0x40, 2, 0x03C9, 0x03B9, 0x0000}, // 0x1ff3 (302 0x12e)
+ {0x05, 2, 0x038F, 0x0399, 0x0000}, // 0x1ff4 (303 0x12f)
+ {0x10, 2, 0x038F, 0x0345, 0x0000}, // 0x1ff4 (304 0x130)
+ {0x40, 2, 0x03CE, 0x03B9, 0x0000}, // 0x1ff4 (305 0x131)
+ {0x15, 2, 0x03A9, 0x0342, 0x0000}, // 0x1ff6 (306 0x132)
+ {0x40, 2, 0x03C9, 0x0342, 0x0000}, // 0x1ff6 (307 0x133)
+ {0x05, 3, 0x03A9, 0x0342, 0x0399}, // 0x1ff7 (308 0x134)
+ {0x10, 3, 0x03A9, 0x0342, 0x0345}, // 0x1ff7 (309 0x135)
+ {0x40, 3, 0x03C9, 0x0342, 0x03B9}, // 0x1ff7 (310 0x136)
+ {0x28, 1, 0x1FF3, 0x0000, 0x0000}, // 0x1ffc (311 0x137)
+ {0x04, 2, 0x03A9, 0x0399, 0x0000}, // 0x1ffc (312 0x138)
+ {0x40, 2, 0x03C9, 0x03B9, 0x0000}, // 0x1ffc (313 0x139)
+ {0x05, 2, 0x0046, 0x0046, 0x0000}, // 0xfb00 (314 0x13a)
+ {0x10, 2, 0x0046, 0x0066, 0x0000}, // 0xfb00 (315 0x13b)
+ {0x40, 2, 0x0066, 0x0066, 0x0000}, // 0xfb00 (316 0x13c)
+ {0x05, 2, 0x0046, 0x0049, 0x0000}, // 0xfb01 (317 0x13d)
+ {0x10, 2, 0x0046, 0x0069, 0x0000}, // 0xfb01 (318 0x13e)
+ {0x40, 2, 0x0066, 0x0069, 0x0000}, // 0xfb01 (319 0x13f)
+ {0x05, 2, 0x0046, 0x004C, 0x0000}, // 0xfb02 (320 0x140)
+ {0x10, 2, 0x0046, 0x006C, 0x0000}, // 0xfb02 (321 0x141)
+ {0x40, 2, 0x0066, 0x006C, 0x0000}, // 0xfb02 (322 0x142)
+ {0x05, 3, 0x0046, 0x0046, 0x0049}, // 0xfb03 (323 0x143)
+ {0x10, 3, 0x0046, 0x0066, 0x0069}, // 0xfb03 (324 0x144)
+ {0x40, 3, 0x0066, 0x0066, 0x0069}, // 0xfb03 (325 0x145)
+ {0x05, 3, 0x0046, 0x0046, 0x004C}, // 0xfb04 (326 0x146)
+ {0x10, 3, 0x0046, 0x0066, 0x006C}, // 0xfb04 (327 0x147)
+ {0x40, 3, 0x0066, 0x0066, 0x006C}, // 0xfb04 (328 0x148)
+ {0x05, 2, 0x0053, 0x0054, 0x0000}, // 0xfb05 (329 0x149)
+ {0x10, 2, 0x0053, 0x0074, 0x0000}, // 0xfb05 (330 0x14a)
+ {0x40, 2, 0x0073, 0x0074, 0x0000}, // 0xfb05 (331 0x14b)
+ {0x05, 2, 0x0053, 0x0054, 0x0000}, // 0xfb06 (332 0x14c)
+ {0x10, 2, 0x0053, 0x0074, 0x0000}, // 0xfb06 (333 0x14d)
+ {0x40, 2, 0x0073, 0x0074, 0x0000}, // 0xfb06 (334 0x14e)
+ {0x05, 2, 0x0544, 0x0546, 0x0000}, // 0xfb13 (335 0x14f)
+ {0x10, 2, 0x0544, 0x0576, 0x0000}, // 0xfb13 (336 0x150)
+ {0x40, 2, 0x0574, 0x0576, 0x0000}, // 0xfb13 (337 0x151)
+ {0x05, 2, 0x0544, 0x0535, 0x0000}, // 0xfb14 (338 0x152)
+ {0x10, 2, 0x0544, 0x0565, 0x0000}, // 0xfb14 (339 0x153)
+ {0x40, 2, 0x0574, 0x0565, 0x0000}, // 0xfb14 (340 0x154)
+ {0x05, 2, 0x0544, 0x053B, 0x0000}, // 0xfb15 (341 0x155)
+ {0x10, 2, 0x0544, 0x056B, 0x0000}, // 0xfb15 (342 0x156)
+ {0x40, 2, 0x0574, 0x056B, 0x0000}, // 0xfb15 (343 0x157)
+ {0x05, 2, 0x054E, 0x0546, 0x0000}, // 0xfb16 (344 0x158)
+ {0x10, 2, 0x054E, 0x0576, 0x0000}, // 0xfb16 (345 0x159)
+ {0x40, 2, 0x057E, 0x0576, 0x0000}, // 0xfb16 (346 0x15a)
+ {0x05, 2, 0x0544, 0x053D, 0x0000}, // 0xfb17 (347 0x15b)
+ {0x10, 2, 0x0544, 0x056D, 0x0000}, // 0xfb17 (348 0x15c)
+ {0x40, 2, 0x0574, 0x056D, 0x0000}, // 0xfb17 (349 0x15d)
+};
+
+/* Following code need special handling
+ 0x0069, 0x00CC, 0x00CD, 0x0128, 0x012E, 0x0049, 0x004A, 0x0307, 0x03A3,
+*/
+
+} } } }
+
+#endif
+
diff --git a/i18nutil/source/utility/makefile.mk b/i18nutil/source/utility/makefile.mk
new file mode 100644
index 000000000000..7b240896cc49
--- /dev/null
+++ b/i18nutil/source/utility/makefile.mk
@@ -0,0 +1,87 @@
+#*************************************************************************
+#*
+#* $RCSfile: makefile.mk,v $
+#*
+#* $Revision: 1.2 $
+#*
+#* last change: $Author: vg $ $Date: 2003-04-24 12:26:02 $
+#*
+#* The Contents of this file are made available subject to the terms of
+#* either of the following licenses
+#*
+#* - Sun Industry Standards Source License Version 1.1
+#*
+#* Sun Microsystems Inc., October, 2000
+#*
+#* Sun Industry Standards Source License Version 1.1
+#* =================================================
+#* The contents of this file are subject to the Sun Industry Standards
+#* Source License Version 1.1 (the "License"); You may not use this file
+#* except in compliance with the License. You may obtain a copy of the
+#* License at http://www.openoffice.org/license.html.
+#*
+#* Software provided under this License is provided on an "AS IS" basis,
+#* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+#* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+#* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+#* See the License for the specific provisions governing your rights and
+#* obligations concerning the Software.
+#*
+#* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#*
+#* Copyright: 2000 by Sun Microsystems, Inc.
+#*
+#* All Rights Reserved.
+#*
+#* Contributor(s): _______________________________________
+#*
+#*
+#************************************************************************
+PRJ=..$/..
+
+PRJNAME=i18nutil
+TARGET=i18nutil
+LIBTARGET=NO
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+EXCEPTIONSFILES= \
+ $(SLO)$/casefolding.obj
+
+SLOFILES= \
+ $(EXCEPTIONSFILES) \
+ $(SLO)$/unicode.obj \
+ $(SLO)$/widthfolding.obj \
+ $(SLO)$/oneToOneMapping.obj
+
+# Unicode utilities
+SHL1TARGET= $(TARGET)$(COMID)
+SHL1IMPLIB= i$(TARGET)
+
+DEF1DEPN= $(MISC)$/$(SHL1TARGET).flt
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME= $(SHL1TARGET)
+DEFLIB1NAME= $(SHL1TARGET)
+
+SHL1OBJS= $(SLOFILES)
+
+LIB1TARGET= $(SLB)$/$(SHL1TARGET).lib
+LIB1OBJFILES=$(SHL1OBJS)
+
+SHL1STDLIBS= \
+ $(CPPULIB) \
+ $(SALLIB)
+
+# --- Targets ------------------------------------------------------
+.INCLUDE : target.mk
+
+$(MISC)$/$(SHL1TARGET).flt: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo CLEAR_THE_FILE > $@
+ @echo __CT >> $@
+
diff --git a/i18nutil/source/utility/oneToOneMapping.cxx b/i18nutil/source/utility/oneToOneMapping.cxx
new file mode 100644
index 000000000000..d3629faece8e
--- /dev/null
+++ b/i18nutil/source/utility/oneToOneMapping.cxx
@@ -0,0 +1,138 @@
+/*************************************************************************
+ *
+ * $RCSfile: oneToOneMapping.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:26:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <i18nutil/oneToOneMapping.hxx>
+
+namespace com { namespace sun { namespace star { namespace i18n {
+
+oneToOneMapping::oneToOneMapping(OneToOneMappingTable_t *_table, const size_t _bytes)
+{
+ table = _table;
+ max_size = _bytes / sizeof(std::pair< sal_Unicode, sal_Unicode >);
+ hasIndex = sal_False;
+}
+
+oneToOneMapping::~oneToOneMapping()
+{
+ if( hasIndex )
+ for (int i = 0; i < 256; i++)
+ if (index[i])
+ delete index[i];
+}
+
+sal_Unicode oneToOneMapping::find(const sal_Unicode key) const
+{
+ if (hasIndex) {
+ // index search
+ int high, low;
+ high = (key >> 8) & 0xFF;
+ low = key & 0xFF;
+ if (index[high] != (int*)0 && index[high][low] != 0) {
+ return table[index[high][low] - 1].second;
+ }
+ else {
+ return sal_Unicode(key);
+ }
+ } else {
+ int bottom = 0;
+ int top = max_size - 1;
+ int current;
+
+ for (;;) {
+ current = (top + bottom) / 2;
+ if (key < table[current].first) {
+ top = current - 1;
+ }
+ else if (key > table[current].first) {
+ bottom = current + 1;
+ } else {
+ return table[current].second;
+ }
+ if (bottom > top) {
+ return sal_Unicode(key);
+ }
+ }
+ }
+}
+
+void oneToOneMapping::makeIndex()
+{
+ if (!hasIndex) {
+ int i, j, high, low, current = -1;
+ hasIndex = sal_True;
+ for (i = 0; i < 256; i++)
+ index[i] = (int*)0;
+
+ for (size_t k = 0; k < max_size; k++) {
+ high = (table[k].first >> 8) & 0xFF;
+ low = (table[k].first) & 0xFF;
+ if (high != current) {
+ current = high;
+ index[high] = new int[256];
+ for (j = 0; j < 256; j++)
+ index[high][j] = 0;
+ }
+ index[high][low] = k + 1;
+ }
+ }
+}
+
+} } } }
diff --git a/i18nutil/source/utility/unicode.cxx b/i18nutil/source/utility/unicode.cxx
new file mode 100644
index 000000000000..9206c626382b
--- /dev/null
+++ b/i18nutil/source/utility/unicode.cxx
@@ -0,0 +1,342 @@
+/*************************************************************************
+ *
+ * $RCSfile: unicode.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:26:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <com/sun/star/i18n/UnicodeType.hpp>
+#include <com/sun/star/i18n/KCharacterType.hpp>
+#include <i18nutil/unicode.hxx>
+#include "unicode_data.h"
+
+using namespace ::com::sun::star::i18n;
+
+static ScriptTypeList defaultTypeList[] = {
+ { UnicodeScript_kBasicLatin, UnicodeScript_kBasicLatin }, // 0,
+ { UnicodeScript_kLatin1Supplement, UnicodeScript_kLatin1Supplement }, // 1,
+ { UnicodeScript_kLatinExtendedA, UnicodeScript_kLatinExtendedA }, // 2,
+ { UnicodeScript_kLatinExtendedB, UnicodeScript_kLatinExtendedB }, // 3,
+ { UnicodeScript_kIPAExtension, UnicodeScript_kIPAExtension }, // 4,
+ { UnicodeScript_kSpacingModifier, UnicodeScript_kSpacingModifier }, // 5,
+ { UnicodeScript_kCombiningDiacritical, UnicodeScript_kCombiningDiacritical }, // 6,
+ { UnicodeScript_kGreek, UnicodeScript_kGreek }, // 7,
+ { UnicodeScript_kCyrillic, UnicodeScript_kCyrillic }, // 8,
+ { UnicodeScript_kArmenian, UnicodeScript_kArmenian }, // 9,
+ { UnicodeScript_kHebrew, UnicodeScript_kHebrew }, // 10,
+ { UnicodeScript_kArabic, UnicodeScript_kArabic }, // 11,
+ { UnicodeScript_kSyriac, UnicodeScript_kSyriac }, // 12,
+ { UnicodeScript_kThaana, UnicodeScript_kThaana }, // 13,
+ { UnicodeScript_kDevanagari, UnicodeScript_kDevanagari }, // 14,
+ { UnicodeScript_kBengali, UnicodeScript_kBengali }, // 15,
+ { UnicodeScript_kGurmukhi, UnicodeScript_kGurmukhi }, // 16,
+ { UnicodeScript_kGujarati, UnicodeScript_kGujarati }, // 17,
+ { UnicodeScript_kOriya, UnicodeScript_kOriya }, // 18,
+ { UnicodeScript_kTamil, UnicodeScript_kTamil }, // 19,
+ { UnicodeScript_kTelugu, UnicodeScript_kTelugu }, // 20,
+ { UnicodeScript_kKannada, UnicodeScript_kKannada }, // 21,
+ { UnicodeScript_kMalayalam, UnicodeScript_kMalayalam }, // 22,
+ { UnicodeScript_kSinhala, UnicodeScript_kSinhala }, // 23,
+ { UnicodeScript_kThai, UnicodeScript_kThai }, // 24,
+ { UnicodeScript_kLao, UnicodeScript_kLao }, // 25,
+ { UnicodeScript_kTibetan, UnicodeScript_kTibetan }, // 26,
+ { UnicodeScript_kMyanmar, UnicodeScript_kMyanmar }, // 27,
+ { UnicodeScript_kGeorgian, UnicodeScript_kGeorgian }, // 28,
+ { UnicodeScript_kHangulJamo, UnicodeScript_kHangulJamo }, // 29,
+ { UnicodeScript_kEthiopic, UnicodeScript_kEthiopic }, // 30,
+ { UnicodeScript_kCherokee, UnicodeScript_kCherokee }, // 31,
+ { UnicodeScript_kUnifiedCanadianAboriginalSyllabics, UnicodeScript_kUnifiedCanadianAboriginalSyllabics }, // 32,
+ { UnicodeScript_kOgham, UnicodeScript_kOgham }, // 33,
+ { UnicodeScript_kRunic, UnicodeScript_kRunic }, // 34,
+ { UnicodeScript_kKhmer, UnicodeScript_kKhmer }, // 35,
+ { UnicodeScript_kMongolian, UnicodeScript_kMongolian }, // 36,
+ { UnicodeScript_kLatinExtendedAdditional, UnicodeScript_kLatinExtendedAdditional }, // 37,
+ { UnicodeScript_kGreekExtended, UnicodeScript_kGreekExtended }, // 38,
+ { UnicodeScript_kGeneralPunctuation, UnicodeScript_kGeneralPunctuation }, // 39,
+ { UnicodeScript_kSuperSubScript, UnicodeScript_kSuperSubScript }, // 40,
+ { UnicodeScript_kCurrencySymbolScript, UnicodeScript_kCurrencySymbolScript }, // 41,
+ { UnicodeScript_kSymbolCombiningMark, UnicodeScript_kSymbolCombiningMark }, // 42,
+ { UnicodeScript_kLetterlikeSymbol, UnicodeScript_kLetterlikeSymbol }, // 43,
+ { UnicodeScript_kNumberForm, UnicodeScript_kNumberForm }, // 44,
+ { UnicodeScript_kArrow, UnicodeScript_kArrow }, // 45,
+ { UnicodeScript_kMathOperator, UnicodeScript_kMathOperator }, // 46,
+ { UnicodeScript_kMiscTechnical, UnicodeScript_kMiscTechnical }, // 47,
+ { UnicodeScript_kControlPicture, UnicodeScript_kControlPicture }, // 48,
+ { UnicodeScript_kOpticalCharacter, UnicodeScript_kOpticalCharacter }, // 49,
+ { UnicodeScript_kEnclosedAlphanumeric, UnicodeScript_kEnclosedAlphanumeric }, // 50,
+ { UnicodeScript_kBoxDrawing, UnicodeScript_kBoxDrawing }, // 51,
+ { UnicodeScript_kBlockElement, UnicodeScript_kBlockElement }, // 52,
+ { UnicodeScript_kGeometricShape, UnicodeScript_kGeometricShape }, // 53,
+ { UnicodeScript_kMiscSymbol, UnicodeScript_kMiscSymbol }, // 54,
+ { UnicodeScript_kDingbat, UnicodeScript_kDingbat }, // 55,
+ { UnicodeScript_kBraillePatterns, UnicodeScript_kBraillePatterns }, // 56,
+ { UnicodeScript_kCJKRadicalsSupplement, UnicodeScript_kCJKRadicalsSupplement }, // 57,
+ { UnicodeScript_kKangxiRadicals, UnicodeScript_kKangxiRadicals }, // 58,
+ { UnicodeScript_kIdeographicDescriptionCharacters, UnicodeScript_kIdeographicDescriptionCharacters }, // 59,
+ { UnicodeScript_kCJKSymbolPunctuation, UnicodeScript_kCJKSymbolPunctuation }, // 60,
+ { UnicodeScript_kHiragana, UnicodeScript_kHiragana }, // 61,
+ { UnicodeScript_kKatakana, UnicodeScript_kKatakana }, // 62,
+ { UnicodeScript_kBopomofo, UnicodeScript_kBopomofo }, // 63,
+ { UnicodeScript_kHangulCompatibilityJamo, UnicodeScript_kHangulCompatibilityJamo }, // 64,
+ { UnicodeScript_kKanbun, UnicodeScript_kKanbun }, // 65,
+ { UnicodeScript_kBopomofoExtended, UnicodeScript_kBopomofoExtended }, // 66,
+ { UnicodeScript_kEnclosedCJKLetterMonth, UnicodeScript_kEnclosedCJKLetterMonth }, // 67,
+ { UnicodeScript_kCJKCompatibility, UnicodeScript_kCJKCompatibility }, // 68,
+ { UnicodeScript_k_CJKUnifiedIdeographsExtensionA, UnicodeScript_k_CJKUnifiedIdeographsExtensionA }, // 69,
+ { UnicodeScript_kCJKUnifiedIdeograph, UnicodeScript_kCJKUnifiedIdeograph }, // 70,
+ { UnicodeScript_kYiSyllables, UnicodeScript_kYiSyllables }, // 71,
+ { UnicodeScript_kYiRadicals, UnicodeScript_kYiRadicals }, // 72,
+ { UnicodeScript_kHangulSyllable, UnicodeScript_kHangulSyllable }, // 73,
+ { UnicodeScript_kHighSurrogate, UnicodeScript_kHighSurrogate }, // 74,
+ { UnicodeScript_kHighPrivateUseSurrogate, UnicodeScript_kHighPrivateUseSurrogate }, // 75,
+ { UnicodeScript_kLowSurrogate, UnicodeScript_kLowSurrogate }, // 76,
+ { UnicodeScript_kPrivateUse, UnicodeScript_kPrivateUse }, // 77,
+ { UnicodeScript_kCJKCompatibilityIdeograph, UnicodeScript_kCJKCompatibilityIdeograph }, // 78,
+ { UnicodeScript_kAlphabeticPresentation, UnicodeScript_kAlphabeticPresentation }, // 79,
+ { UnicodeScript_kArabicPresentationA, UnicodeScript_kArabicPresentationA }, // 80,
+ { UnicodeScript_kCombiningHalfMark, UnicodeScript_kCombiningHalfMark }, // 81,
+ { UnicodeScript_kCJKCompatibilityForm, UnicodeScript_kCJKCompatibilityForm }, // 82,
+ { UnicodeScript_kSmallFormVariant, UnicodeScript_kSmallFormVariant }, // 83,
+ { UnicodeScript_kArabicPresentationB, UnicodeScript_kArabicPresentationB }, // 84,
+ { UnicodeScript_kNoScript, UnicodeScript_kNoScript }, // 85,
+ { UnicodeScript_kHalfwidthFullwidthForm, UnicodeScript_kHalfwidthFullwidthForm }, // 86,
+ { UnicodeScript_kScriptCount, UnicodeScript_kNoScript } // 87,
+};
+
+sal_Int16 SAL_CALL
+unicode::getUnicodeScriptType( const sal_Unicode ch, ScriptTypeList* typeList, sal_Int16 unknownType ) {
+
+ if (!typeList) {
+ typeList = defaultTypeList;
+ unknownType = UnicodeScript_kNoScript;
+ }
+
+ sal_Int16 i = 0, type = typeList[0].from;
+ while (type < UnicodeScript_kScriptCount && ch > UnicodeScriptType[type][UnicodeScriptTypeTo]) {
+ type = typeList[++i].from;
+ }
+
+ return (type < UnicodeScript_kScriptCount &&
+ ch >= UnicodeScriptType[type][UnicodeScriptTypeFrom]) ?
+ typeList[i].to : unknownType;
+}
+
+sal_Bool SAL_CALL
+unicode::isUnicodeScriptType( const sal_Unicode ch, sal_Int16 type) {
+ return ch >= UnicodeScriptType[type][UnicodeScriptTypeFrom] &&
+ ch <= UnicodeScriptType[type][UnicodeScriptTypeTo];
+}
+
+sal_Int16 SAL_CALL
+unicode::getUnicodeType( const sal_Unicode ch ) {
+ static sal_Unicode c = 0x00;
+ static sal_Int16 r = 0x00;
+
+ if (ch == c) return r;
+ else c = ch;
+
+ sal_Int16 address = UnicodeTypeIndex[ch >> 8];
+ return r = (sal_Int16)((address < UnicodeTypeNumberBlock) ? UnicodeTypeBlockValue[address] :
+ UnicodeTypeValue[((address - UnicodeTypeNumberBlock) << 8) + (ch & 0xff)]);
+}
+
+sal_uInt8 SAL_CALL
+unicode::getUnicodeDirection( const sal_Unicode ch ) {
+ static sal_Unicode c = 0x00;
+ static sal_uInt8 r = 0x00;
+
+ if (ch == c) return r;
+ else c = ch;
+
+ sal_Int16 address = UnicodeDirectionIndex[ch >> 8];
+ return r = ((address < UnicodeDirectionNumberBlock) ? UnicodeDirectionBlockValue[address] :
+ UnicodeDirectionValue[((address - UnicodeDirectionNumberBlock) << 8) + (ch & 0xff)]);
+
+}
+
+#define bit(name) (1 << name)
+
+#define UPPERMASK bit(UnicodeType::UPPERCASE_LETTER)
+
+#define LOWERMASK bit(UnicodeType::LOWERCASE_LETTER)
+
+#define TITLEMASK bit(UnicodeType::TITLECASE_LETTER)
+
+#define DIGITMASK bit(UnicodeType::DECIMAL_DIGIT_NUMBER)|\
+ bit(UnicodeType::LETTER_NUMBER)|\
+ bit(UnicodeType::OTHER_NUMBER)
+
+#define ALPHAMASK UPPERMASK|LOWERMASK|TITLEMASK|\
+ bit(UnicodeType::MODIFIER_LETTER)|\
+ bit(UnicodeType::OTHER_LETTER)
+
+#define BASEMASK DIGITMASK|ALPHAMASK|\
+ bit(UnicodeType::NON_SPACING_MARK)|\
+ bit(UnicodeType::ENCLOSING_MARK)|\
+ bit(UnicodeType::COMBINING_SPACING_MARK)
+
+#define SPACEMASK bit(UnicodeType::SPACE_SEPARATOR)|\
+ bit(UnicodeType::LINE_SEPARATOR)|\
+ bit(UnicodeType::PARAGRAPH_SEPARATOR)
+
+#define PUNCTUATIONMASK bit(UnicodeType::DASH_PUNCTUATION)|\
+ bit(UnicodeType::INITIAL_PUNCTUATION)|\
+ bit(UnicodeType::FINAL_PUNCTUATION)|\
+ bit(UnicodeType::CONNECTOR_PUNCTUATION)|\
+ bit(UnicodeType::OTHER_PUNCTUATION)
+
+#define SYMBOLMASK bit(UnicodeType::MATH_SYMBOL)|\
+ bit(UnicodeType::CURRENCY_SYMBOL)|\
+ bit(UnicodeType::MODIFIER_SYMBOL)|\
+ bit(UnicodeType::OTHER_SYMBOL)
+
+#define PRINTMASK BASEMASK|SPACEMASK|PUNCTUATIONMASK|SYMBOLMASK
+
+#define CONTROLMASK bit(UnicodeType::CONTROL)|\
+ bit(UnicodeType::FORMAT)|\
+ bit(UnicodeType::LINE_SEPARATOR)|\
+ bit(UnicodeType::PARAGRAPH_SEPARATOR)
+
+#define IsType(func, mask) \
+sal_Bool SAL_CALL func( const sal_Unicode ch) {\
+ return (bit(getUnicodeType(ch)) & (mask)) != 0;\
+}
+
+IsType(unicode::isUpper, UPPERMASK)
+IsType(unicode::isLower, LOWERMASK)
+IsType(unicode::isTitle, DIGITMASK)
+IsType(unicode::isControl, CONTROLMASK)
+IsType(unicode::isPrint, PRINTMASK)
+IsType(unicode::isAlpha, ALPHAMASK)
+IsType(unicode::isDigit, DIGITMASK)
+IsType(unicode::isAlphaDigit, ALPHAMASK|DIGITMASK)
+IsType(unicode::isSpace, SPACEMASK)
+IsType(unicode::isBase, BASEMASK)
+IsType(unicode::isPunctuation, PUNCTUATIONMASK)
+
+#define CONTROLSPACE bit(0x09)|bit(0x0a)|bit(0x0b)|bit(0x0c)|bit(0x0d)|\
+ bit(0x1c)|bit(0x1d)|bit(0x1e)|bit(0x1f)
+
+sal_Bool SAL_CALL unicode::isWhiteSpace( const sal_Unicode ch) {
+ return (ch != 0xa0 && isSpace(ch)) || (ch <= 0x1F && (bit(ch) & (CONTROLSPACE)));
+}
+
+sal_Int32 SAL_CALL unicode::getCharType( const sal_Unicode ch )
+{
+ using namespace ::com::sun::star::i18n::KCharacterType;
+
+ switch ( getUnicodeType( ch ) ) {
+ // Upper
+ case UnicodeType::UPPERCASE_LETTER :
+ return UPPER|LETTER|PRINTABLE|BASE_FORM;
+
+ // Lower
+ case UnicodeType::LOWERCASE_LETTER :
+ return LOWER|LETTER|PRINTABLE|BASE_FORM;
+
+ // Title
+ case UnicodeType::TITLECASE_LETTER :
+ return TITLE_CASE|LETTER|PRINTABLE|BASE_FORM;
+
+ // Letter
+ case UnicodeType::MODIFIER_LETTER :
+ case UnicodeType::OTHER_LETTER :
+ return LETTER|PRINTABLE|BASE_FORM;
+
+ // Digit
+ case UnicodeType::DECIMAL_DIGIT_NUMBER:
+ case UnicodeType::LETTER_NUMBER:
+ case UnicodeType::OTHER_NUMBER:
+ return DIGIT|PRINTABLE|BASE_FORM;
+
+ // Base
+ case UnicodeType::NON_SPACING_MARK:
+ case UnicodeType::ENCLOSING_MARK:
+ case UnicodeType::COMBINING_SPACING_MARK:
+ return BASE_FORM|PRINTABLE;
+
+ // Print
+ case UnicodeType::SPACE_SEPARATOR:
+
+ case UnicodeType::DASH_PUNCTUATION:
+ case UnicodeType::INITIAL_PUNCTUATION:
+ case UnicodeType::FINAL_PUNCTUATION:
+ case UnicodeType::CONNECTOR_PUNCTUATION:
+ case UnicodeType::OTHER_PUNCTUATION:
+
+ case UnicodeType::MATH_SYMBOL:
+ case UnicodeType::CURRENCY_SYMBOL:
+ case UnicodeType::MODIFIER_SYMBOL:
+ case UnicodeType::OTHER_SYMBOL:
+ return PRINTABLE;
+
+ // Control
+ case UnicodeType::CONTROL:
+ case UnicodeType::FORMAT:
+ return CONTROL;
+
+ case UnicodeType::LINE_SEPARATOR:
+ case UnicodeType::PARAGRAPH_SEPARATOR:
+ return CONTROL|PRINTABLE;
+
+ // for all others
+ default:
+ return 0;
+ }
+}
+
+
diff --git a/i18nutil/source/utility/unicode_data.h b/i18nutil/source/utility/unicode_data.h
new file mode 100644
index 000000000000..d1bd9cd50e4c
--- /dev/null
+++ b/i18nutil/source/utility/unicode_data.h
@@ -0,0 +1,1667 @@
+/*************************************************************************
+ *
+ * $RCSfile: unicode_data.h,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:26:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef CCLASS_CHARTYPE_H
+#define CCLASS_CHARTYPE_H
+
+#include <sal/types.h>
+
+
+#define UnicodeTypeNumberBlock 5
+
+static sal_Int8 UnicodeTypeIndex[] = {
+ 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, // 0000 - 07ff
+ 0x00, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, // 0800 - 0fff
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x01, 0x19, 0x1a, // 1000 - 17ff
+ 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, // 1800 - 1fff
+ 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, // 2000 - 27ff
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x27, // 2800 - 2fff
+ 0x28, 0x29, 0x2a, 0x2b, 0x01, 0x01, 0x01, 0x01, // 3000 - 37ff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 3800 - 3fff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 4000 - 47ff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x2c, 0x01, 0x01, // 4800 - 4fff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 5000 - 57ff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 5800 - 5fff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 6000 - 67ff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 6800 - 6fff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 7000 - 77ff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 7800 - 7fff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 8000 - 87ff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 8800 - 8fff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 9000 - 97ff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2d, // 9800 - 9fff
+ 0x01, 0x01, 0x01, 0x01, 0x2e, 0x00, 0x00, 0x00, // a000 - a7ff
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, // a800 - afff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // b000 - b7ff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // b800 - bfff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // c000 - c7ff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // c800 - cfff
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2f, // d000 - d7ff
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // d800 - dfff
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // e000 - e7ff
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // e800 - efff
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // f000 - f7ff
+ 0x02, 0x01, 0x30, 0x31, 0x01, 0x32, 0x33, 0x34, // f800 - ffff
+};
+
+
+static sal_Int8 UnicodeTypeBlockValue[] = {
+ 0, 5, 17, 18, 27,
+};
+
+
+static sal_Int8 UnicodeTypeValue[] = {
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,// 0000 - 000f
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,// 0010 - 001f
+ 12,23,23,23,25,23,23,23,20,21,23,24,23,19,23,23,// 0020 - 002f
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,23,23,24,24,24,23,// 0030 - 003f
+ 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 0040 - 004f
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,20,23,21,26,22,// 0050 - 005f
+ 26, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0060 - 006f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,20,24,21,24,15,// 0070 - 007f
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,// 0080 - 008f
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,// 0090 - 009f
+ 12,23,25,25,25,25,27,27,26,27, 2,28,24,19,27,26,// 00a0 - 00af
+ 27,24,11,11,26, 2,27,23,26,11, 2,29,11,11,11,23,// 00b0 - 00bf
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 00c0 - 00cf
+ 1, 1, 1, 1, 1, 1, 1,24, 1, 1, 1, 1, 1, 1, 1, 2,// 00d0 - 00df
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 00e0 - 00ef
+ 2, 2, 2, 2, 2, 2, 2,24, 2, 2, 2, 2, 2, 2, 2, 2,// 00f0 - 00ff
+
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0100 - 010f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0110 - 011f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0120 - 012f
+ 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1,// 0130 - 013f
+ 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2,// 0140 - 014f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0150 - 015f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0160 - 016f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2,// 0170 - 017f
+ 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1,// 0180 - 018f
+ 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1,// 0190 - 019f
+ 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1,// 01a0 - 01af
+ 2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 5, 1, 2, 2, 2,// 01b0 - 01bf
+ 5, 5, 5, 5, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 2, 1,// 01c0 - 01cf
+ 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2,// 01d0 - 01df
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 01e0 - 01ef
+ 2, 1, 3, 2, 1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2,// 01f0 - 01ff
+
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0200 - 020f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0210 - 021f
+ 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0220 - 022f
+ 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0230 - 023f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0240 - 024f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0250 - 025f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0260 - 026f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0270 - 027f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0280 - 028f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0290 - 029f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0,// 02a0 - 02af
+ 4, 4, 4, 4, 4, 4, 4, 4, 4,26,26, 4, 4, 4, 4, 4,// 02b0 - 02bf
+ 4, 4,26,26,26,26,26,26,26,26,26,26,26,26,26,26,// 02c0 - 02cf
+ 4, 4,26,26,26,26,26,26,26,26,26,26,26,26,26,26,// 02d0 - 02df
+ 4, 4, 4, 4, 4,26,26,26,26,26,26,26,26,26, 4, 0,// 02e0 - 02ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 02f0 - 02ff
+
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,// 0300 - 030f
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,// 0310 - 031f
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,// 0320 - 032f
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,// 0330 - 033f
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0,// 0340 - 034f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0350 - 035f
+ 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0360 - 036f
+ 0, 0, 0, 0,26,26, 0, 0, 0, 0, 4, 0, 0, 0,23, 0,// 0370 - 037f
+ 0, 0, 0, 0,26,26, 1,23, 1, 1, 1, 0, 1, 0, 1, 1,// 0380 - 038f
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 0390 - 039f
+ 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,// 03a0 - 03af
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 03b0 - 03bf
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,// 03c0 - 03cf
+ 2, 2, 1, 1, 1, 2, 2, 2, 0, 0, 1, 2, 1, 2, 1, 2,// 03d0 - 03df
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 03e0 - 03ef
+ 2, 2, 2, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 03f0 - 03ff
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 0400 - 040f
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 0410 - 041f
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 0420 - 042f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0430 - 043f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0440 - 044f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0450 - 045f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0460 - 046f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0470 - 047f
+ 1, 2,27, 6, 6, 6, 6, 0, 7, 7, 0, 0, 1, 2, 1, 2,// 0480 - 048f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 0490 - 049f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 04a0 - 04af
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 04b0 - 04bf
+ 1, 1, 2, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 0,// 04c0 - 04cf
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 04d0 - 04df
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 04e0 - 04ef
+ 1, 2, 1, 2, 1, 2, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0,// 04f0 - 04ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0500 - 050f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0510 - 051f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0520 - 052f
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 0530 - 053f
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 0540 - 054f
+ 1, 1, 1, 1, 1, 1, 1, 0, 0, 4,23,23,23,23,23,23,// 0550 - 055f
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0560 - 056f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 0570 - 057f
+ 2, 2, 2, 2, 2, 2, 2, 2, 0,23,19, 0, 0, 0, 0, 0,// 0580 - 058f
+ 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,// 0590 - 059f
+ 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,// 05a0 - 05af
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6,23, 6,// 05b0 - 05bf
+ 23, 6, 6,23, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 05c0 - 05cf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 05d0 - 05df
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0,// 05e0 - 05ef
+ 5, 5, 5,23,23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 05f0 - 05ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,23, 0, 0, 0,// 0600 - 060f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,23, 0, 0, 0,23,// 0610 - 061f
+ 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0620 - 062f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0,// 0630 - 063f
+ 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6,// 0640 - 064f
+ 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0650 - 065f
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,23,23,23,23, 0, 0,// 0660 - 066f
+ 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0670 - 067f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0680 - 068f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0690 - 069f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 06a0 - 06af
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 06b0 - 06bf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 06c0 - 06cf
+ 5, 5, 5, 5,23, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 6,// 06d0 - 06df
+ 6, 6, 6, 6, 6, 4, 4, 6, 6,27, 6, 6, 6, 6, 0, 0,// 06e0 - 06ef
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 5, 5,27,27, 0,// 06f0 - 06ff
+
+ 23,23,23,23,23,23,23,23,23,23,23,23,23,23, 0,16,// 0700 - 070f
+ 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0710 - 071f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0,// 0720 - 072f
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,// 0730 - 073f
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0,// 0740 - 074f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0750 - 075f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0760 - 076f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0770 - 077f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0780 - 078f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0790 - 079f
+ 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,// 07a0 - 07af
+ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07b0 - 07bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07c0 - 07cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07d0 - 07df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07e0 - 07ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07f0 - 07ff
+
+ 0, 6, 6, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0900 - 090f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0910 - 091f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0920 - 092f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 6, 5, 8, 8,// 0930 - 093f
+ 8, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 6, 0, 0,// 0940 - 094f
+ 5, 6, 6, 6, 6, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5,// 0950 - 095f
+ 5, 5, 6, 6,23,23, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,// 0960 - 096f
+ 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0970 - 097f
+ 0, 6, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5,// 0980 - 098f
+ 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0990 - 099f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5,// 09a0 - 09af
+ 5, 0, 5, 0, 0, 0, 5, 5, 5, 5, 0, 0, 6, 0, 8, 8,// 09b0 - 09bf
+ 8, 6, 6, 6, 6, 0, 0, 8, 8, 0, 0, 8, 8, 6, 0, 0,// 09c0 - 09cf
+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 5, 5, 0, 5,// 09d0 - 09df
+ 5, 5, 6, 6, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,// 09e0 - 09ef
+ 5, 5,25,25,11,11,11,11,11,11,27, 0, 0, 0, 0, 0,// 09f0 - 09ff
+
+ 0, 0, 6, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5,// 0a00 - 0a0f
+ 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0a10 - 0a1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5,// 0a20 - 0a2f
+ 5, 0, 5, 5, 0, 5, 5, 0, 5, 5, 0, 0, 6, 0, 8, 8,// 0a30 - 0a3f
+ 8, 6, 6, 0, 0, 0, 0, 6, 6, 0, 0, 6, 6, 6, 0, 0,// 0a40 - 0a4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 5, 0,// 0a50 - 0a5f
+ 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,// 0a60 - 0a6f
+ 6, 6, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0a70 - 0a7f
+ 0, 6, 6, 8, 0, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 5,// 0a80 - 0a8f
+ 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0a90 - 0a9f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5,// 0aa0 - 0aaf
+ 5, 0, 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 6, 5, 8, 8,// 0ab0 - 0abf
+ 8, 6, 6, 6, 6, 6, 0, 6, 6, 8, 0, 8, 8, 6, 0, 0,// 0ac0 - 0acf
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ad0 - 0adf
+ 5, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,// 0ae0 - 0aef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0af0 - 0aff
+
+ 0, 6, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5,// 0b00 - 0b0f
+ 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0b10 - 0b1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5,// 0b20 - 0b2f
+ 5, 0, 5, 5, 0, 0, 5, 5, 5, 5, 0, 0, 6, 5, 8, 6,// 0b30 - 0b3f
+ 8, 6, 6, 6, 0, 0, 0, 8, 8, 0, 0, 8, 8, 6, 0, 0,// 0b40 - 0b4f
+ 0, 0, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 5, 5, 0, 5,// 0b50 - 0b5f
+ 5, 5, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,// 0b60 - 0b6f
+ 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0b70 - 0b7f
+ 0, 0, 6, 8, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 5,// 0b80 - 0b8f
+ 5, 0, 5, 5, 5, 5, 0, 0, 0, 5, 5, 0, 5, 0, 5, 5,// 0b90 - 0b9f
+ 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 5, 0, 0, 0, 5, 5,// 0ba0 - 0baf
+ 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 8, 8,// 0bb0 - 0bbf
+ 6, 8, 8, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 6, 0, 0,// 0bc0 - 0bcf
+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,// 0bd0 - 0bdf
+ 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9,// 0be0 - 0bef
+ 11,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0bf0 - 0bff
+
+ 0, 8, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5,// 0c00 - 0c0f
+ 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0c10 - 0c1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5,// 0c20 - 0c2f
+ 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 6, 6,// 0c30 - 0c3f
+ 6, 8, 8, 8, 8, 0, 6, 6, 6, 0, 6, 6, 6, 6, 0, 0,// 0c40 - 0c4f
+ 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c50 - 0c5f
+ 5, 5, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,// 0c60 - 0c6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c70 - 0c7f
+ 0, 0, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5,// 0c80 - 0c8f
+ 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0c90 - 0c9f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5,// 0ca0 - 0caf
+ 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 8, 6,// 0cb0 - 0cbf
+ 8, 8, 8, 8, 8, 0, 6, 8, 8, 0, 8, 8, 6, 6, 0, 0,// 0cc0 - 0ccf
+ 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 5, 0,// 0cd0 - 0cdf
+ 5, 5, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,// 0ce0 - 0cef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0cf0 - 0cff
+
+ 0, 0, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5,// 0d00 - 0d0f
+ 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0d10 - 0d1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5,// 0d20 - 0d2f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 8, 8,// 0d30 - 0d3f
+ 8, 6, 6, 6, 0, 0, 8, 8, 8, 0, 8, 8, 8, 6, 0, 0,// 0d40 - 0d4f
+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,// 0d50 - 0d5f
+ 5, 5, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,// 0d60 - 0d6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d70 - 0d7f
+ 0, 0, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0d80 - 0d8f
+ 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5,// 0d90 - 0d9f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0da0 - 0daf
+ 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0,// 0db0 - 0dbf
+ 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 6, 0, 0, 0, 0, 8,// 0dc0 - 0dcf
+ 8, 8, 6, 6, 6, 0, 6, 0, 8, 8, 8, 8, 8, 8, 8, 8,// 0dd0 - 0ddf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0de0 - 0def
+ 0, 0, 8, 8,23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0df0 - 0dff
+
+ 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0e00 - 0e0f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0e10 - 0e1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0e20 - 0e2f
+ 5, 6, 5, 5, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0,25,// 0e30 - 0e3f
+ 5, 5, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6, 6,23,// 0e40 - 0e4f
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,23,23, 0, 0, 0, 0,// 0e50 - 0e5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e60 - 0e6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e70 - 0e7f
+ 0, 5, 5, 0, 5, 0, 0, 5, 5, 0, 5, 0, 0, 5, 0, 0,// 0e80 - 0e8f
+ 0, 0, 0, 0, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5,// 0e90 - 0e9f
+ 0, 5, 5, 5, 0, 5, 0, 5, 0, 0, 5, 5, 0, 5, 5, 5,// 0ea0 - 0eaf
+ 5, 6, 5, 5, 6, 6, 6, 6, 6, 6, 0, 6, 6, 5, 0, 0,// 0eb0 - 0ebf
+ 5, 5, 5, 5, 5, 0, 4, 0, 6, 6, 6, 6, 6, 6, 0, 0,// 0ec0 - 0ecf
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 5, 5, 0, 0,// 0ed0 - 0edf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ee0 - 0eef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ef0 - 0eff
+
+ 5,27,27,27,23,23,23,23,23,23,23,23,23,23,23,23,// 0f00 - 0f0f
+ 23,23,23,27,27,27,27,27, 6, 6,27,27,27,27,27,27,// 0f10 - 0f1f
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11,11,11,11,// 0f20 - 0f2f
+ 11,11,11,11,27, 6,27, 6,27, 6,20,21,20,21, 8, 8,// 0f30 - 0f3f
+ 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5,// 0f40 - 0f4f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 0f50 - 0f5f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0,// 0f60 - 0f6f
+ 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8,// 0f70 - 0f7f
+ 6, 6, 6, 6, 6,23, 6, 6, 5, 5, 5, 5, 0, 0, 0, 0,// 0f80 - 0f8f
+ 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6,// 0f90 - 0f9f
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,// 0fa0 - 0faf
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0,27,27,// 0fb0 - 0fbf
+ 27,27,27,27,27,27, 6,27,27,27,27,27,27, 0, 0,27,// 0fc0 - 0fcf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0fd0 - 0fdf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0fe0 - 0fef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ff0 - 0fff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1000 - 100f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1010 - 101f
+ 5, 5, 0, 5, 5, 5, 5, 5, 0, 5, 5, 0, 8, 6, 6, 6,// 1020 - 102f
+ 6, 8, 6, 0, 0, 0, 6, 6, 8, 6, 0, 0, 0, 0, 0, 0,// 1030 - 103f
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,23,23,23,23,23,23,// 1040 - 104f
+ 5, 5, 5, 5, 5, 5, 8, 8, 6, 6, 0, 0, 0, 0, 0, 0,// 1050 - 105f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1060 - 106f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1070 - 107f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1080 - 108f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1090 - 109f
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 10a0 - 10af
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 10b0 - 10bf
+ 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 10c0 - 10cf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 10d0 - 10df
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 10e0 - 10ef
+ 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0,23, 0, 0, 0, 0,// 10f0 - 10ff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1100 - 110f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1110 - 111f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1120 - 112f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1130 - 113f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1140 - 114f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 5,// 1150 - 115f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1160 - 116f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1170 - 117f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1180 - 118f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1190 - 119f
+ 5, 5, 5, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5,// 11a0 - 11af
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 11b0 - 11bf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 11c0 - 11cf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 11d0 - 11df
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 11e0 - 11ef
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0,// 11f0 - 11ff
+
+ 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5,// 1200 - 120f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1210 - 121f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1220 - 122f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1230 - 123f
+ 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 5, 5, 5, 5, 0, 0,// 1240 - 124f
+ 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 5, 5, 5, 5, 0, 0,// 1250 - 125f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1260 - 126f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1270 - 127f
+ 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 5, 5, 5, 5, 0, 0,// 1280 - 128f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1290 - 129f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0,// 12a0 - 12af
+ 5, 0, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0,// 12b0 - 12bf
+ 5, 0, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0,// 12c0 - 12cf
+ 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5,// 12d0 - 12df
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0,// 12e0 - 12ef
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 12f0 - 12ff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0,// 1300 - 130f
+ 5, 0, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0,// 1310 - 131f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1320 - 132f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1330 - 133f
+ 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5,// 1340 - 134f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0,// 1350 - 135f
+ 0,23,23,23,23,23,23,23,23, 9, 9, 9, 9, 9, 9, 9,// 1360 - 136f
+ 9, 9,11,11,11,11,11,11,11,11,11,11,11, 0, 0, 0,// 1370 - 137f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1380 - 138f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1390 - 139f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 13a0 - 13af
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 13b0 - 13bf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 13c0 - 13cf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 13d0 - 13df
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 13e0 - 13ef
+ 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 13f0 - 13ff
+
+ 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1400 - 140f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1410 - 141f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1420 - 142f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1430 - 143f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1440 - 144f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1450 - 145f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1460 - 146f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1470 - 147f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1480 - 148f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1490 - 149f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 14a0 - 14af
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 14b0 - 14bf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 14c0 - 14cf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 14d0 - 14df
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 14e0 - 14ef
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 14f0 - 14ff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1600 - 160f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1610 - 161f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1620 - 162f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1630 - 163f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1640 - 164f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1650 - 165f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,23,23, 5,// 1660 - 166f
+ 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1670 - 167f
+ 12, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1680 - 168f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,20,21, 0, 0, 0,// 1690 - 169f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 16a0 - 16af
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 16b0 - 16bf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 16c0 - 16cf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 16d0 - 16df
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,23,23,23,10,10,// 16e0 - 16ef
+ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 16f0 - 16ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1700 - 170f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1710 - 171f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1720 - 172f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1730 - 173f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1740 - 174f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1750 - 175f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1760 - 176f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1770 - 177f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1780 - 178f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1790 - 179f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 17a0 - 17af
+ 5, 5, 5, 5, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 8, 8,// 17b0 - 17bf
+ 8, 8, 8, 8, 8, 8, 6, 8, 8, 6, 6, 6, 6, 6, 6, 6,// 17c0 - 17cf
+ 6, 6, 6, 6,23,23,23,23,23,23,23,25,23, 0, 0, 0,// 17d0 - 17df
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0,// 17e0 - 17ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 17f0 - 17ff
+
+ 23,23,23,23,23,23,19,23,23,23,23,16,16,16,16, 0,// 1800 - 180f
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0,// 1810 - 181f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1820 - 182f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1830 - 183f
+ 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1840 - 184f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1850 - 185f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1860 - 186f
+ 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0,// 1870 - 187f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1880 - 188f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 1890 - 189f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 0, 0, 0, 0, 0, 0,// 18a0 - 18af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18b0 - 18bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18c0 - 18cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18d0 - 18df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18e0 - 18ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18f0 - 18ff
+
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1e00 - 1e0f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1e10 - 1e1f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1e20 - 1e2f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1e30 - 1e3f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1e40 - 1e4f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1e50 - 1e5f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1e60 - 1e6f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1e70 - 1e7f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1e80 - 1e8f
+ 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0,// 1e90 - 1e9f
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1ea0 - 1eaf
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1eb0 - 1ebf
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1ec0 - 1ecf
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1ed0 - 1edf
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,// 1ee0 - 1eef
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0,// 1ef0 - 1eff
+
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,// 1f00 - 1f0f
+ 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0,// 1f10 - 1f1f
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,// 1f20 - 1f2f
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,// 1f30 - 1f3f
+ 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0,// 1f40 - 1f4f
+ 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1, 0, 1, 0, 1,// 1f50 - 1f5f
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,// 1f60 - 1f6f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0,// 1f70 - 1f7f
+ 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,// 1f80 - 1f8f
+ 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,// 1f90 - 1f9f
+ 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,// 1fa0 - 1faf
+ 2, 2, 2, 2, 2, 0, 2, 2, 1, 1, 1, 1, 3,26, 2,26,// 1fb0 - 1fbf
+ 26,26, 2, 2, 2, 0, 2, 2, 1, 1, 1, 1, 3,26,26,26,// 1fc0 - 1fcf
+ 2, 2, 2, 2, 0, 0, 2, 2, 1, 1, 1, 1, 0,26,26,26,// 1fd0 - 1fdf
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,26,26,26,// 1fe0 - 1fef
+ 0, 0, 2, 2, 2, 0, 2, 2, 1, 1, 1, 1, 3,26,26, 0,// 1ff0 - 1fff
+
+ 12,12,12,12,12,12,12,12,12,12,12,12,16,16,16,16,// 2000 - 200f
+ 19,19,19,19,19,19,23,23,28,29,20,28,28,29,20,28,// 2010 - 201f
+ 23,23,23,23,23,23,23,23,13,14,16,16,16,16,16,12,// 2020 - 202f
+ 23,23,23,23,23,23,23,23,23,28,29,23,23,23,23,22,// 2030 - 203f
+ 22,23,23,23,24,20,21, 0,23,23,23,23,23,23, 0, 0,// 2040 - 204f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2050 - 205f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,16,16,16,16,16,16,// 2060 - 206f
+ 11, 0, 0, 0,11,11,11,11,11,11,24,24,24,20,21, 2,// 2070 - 207f
+ 11,11,11,11,11,11,11,11,11,11,24,24,24,20,21, 0,// 2080 - 208f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2090 - 209f
+ 25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,// 20a0 - 20af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 20b0 - 20bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 20c0 - 20cf
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7,// 20d0 - 20df
+ 7, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 20e0 - 20ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 20f0 - 20ff
+
+ 27,27, 1,27,27,27,27, 1,27,27, 2, 1, 1, 1, 2, 2,// 2100 - 210f
+ 1, 1, 1, 2,27, 1,27,27,27, 1, 1, 1, 1, 1,27,27,// 2110 - 211f
+ 27,27,27,27, 1,27, 1,27, 1,27, 1, 1, 1, 1,27, 2,// 2120 - 212f
+ 1, 1,27, 1, 2, 5, 5, 5, 5, 2,27, 0, 0, 0, 0, 0,// 2130 - 213f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2140 - 214f
+ 0, 0, 0,11,11,11,11,11,11,11,11,11,11,11,11,11,// 2150 - 215f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2160 - 216f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2170 - 217f
+ 10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2180 - 218f
+ 24,24,24,24,24,27,27,27,27,27,24,24,27,27,27,27,// 2190 - 219f
+ 24,27,27,24,27,27,24,27,27,27,27,27,27,27,24,27,// 21a0 - 21af
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 21b0 - 21bf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,24,24,// 21c0 - 21cf
+ 27,27,24,27,24,27,27,27,27,27,27,27,27,27,27,27,// 21d0 - 21df
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 21e0 - 21ef
+ 27,27,27,27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 21f0 - 21ff
+
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2200 - 220f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2210 - 221f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2220 - 222f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2230 - 223f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2240 - 224f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2250 - 225f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2260 - 226f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2270 - 227f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2280 - 228f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 2290 - 229f
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 22a0 - 22af
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 22b0 - 22bf
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 22c0 - 22cf
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 22d0 - 22df
+ 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,// 22e0 - 22ef
+ 24,24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 22f0 - 22ff
+
+ 27,27,27,27,27,27,27,27,24,24,24,24,27,27,27,27,// 2300 - 230f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2310 - 231f
+ 24,24,27,27,27,27,27,27,27,20,21,27,27,27,27,27,// 2320 - 232f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2330 - 233f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2340 - 234f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2350 - 235f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2360 - 236f
+ 27,27,27,27,27,27,27,27,27,27,27,27, 0,27,27,27,// 2370 - 237f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2380 - 238f
+ 27,27,27,27,27,27,27,27,27,27,27, 0, 0, 0, 0, 0,// 2390 - 239f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23a0 - 23af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23b0 - 23bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23c0 - 23cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23d0 - 23df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23e0 - 23ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23f0 - 23ff
+
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2400 - 240f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2410 - 241f
+ 27,27,27,27,27,27,27, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2420 - 242f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2430 - 243f
+ 27,27,27,27,27,27,27,27,27,27,27, 0, 0, 0, 0, 0,// 2440 - 244f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2450 - 245f
+ 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,// 2460 - 246f
+ 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,// 2470 - 247f
+ 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,// 2480 - 248f
+ 11,11,11,11,11,11,11,11,11,11,11,11,27,27,27,27,// 2490 - 249f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 24a0 - 24af
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 24b0 - 24bf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 24c0 - 24cf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 24d0 - 24df
+ 27,27,27,27,27,27,27,27,27,27,11, 0, 0, 0, 0, 0,// 24e0 - 24ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 24f0 - 24ff
+
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2500 - 250f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2510 - 251f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2520 - 252f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2530 - 253f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2540 - 254f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2550 - 255f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2560 - 256f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2570 - 257f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2580 - 258f
+ 27,27,27,27,27,27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2590 - 259f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 25a0 - 25af
+ 27,27,27,27,27,27,27,24,27,27,27,27,27,27,27,27,// 25b0 - 25bf
+ 27,24,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 25c0 - 25cf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 25d0 - 25df
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 25e0 - 25ef
+ 27,27,27,27,27,27,27,27, 0, 0, 0, 0, 0, 0, 0, 0,// 25f0 - 25ff
+
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2600 - 260f
+ 27,27,27,27, 0, 0, 0, 0, 0,27,27,27,27,27,27,27,// 2610 - 261f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2620 - 262f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2630 - 263f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2640 - 264f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2650 - 265f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,24,// 2660 - 266f
+ 27,27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2670 - 267f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2680 - 268f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2690 - 269f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26a0 - 26af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26b0 - 26bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26c0 - 26cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26d0 - 26df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26e0 - 26ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26f0 - 26ff
+
+ 0,27,27,27,27, 0,27,27,27,27, 0, 0,27,27,27,27,// 2700 - 270f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2710 - 271f
+ 27,27,27,27,27,27,27,27, 0,27,27,27,27,27,27,27,// 2720 - 272f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2730 - 273f
+ 27,27,27,27,27,27,27,27,27,27,27,27, 0,27, 0,27,// 2740 - 274f
+ 27,27,27, 0, 0, 0,27, 0,27,27,27,27,27,27,27, 0,// 2750 - 275f
+ 0,27,27,27,27,27,27,27, 0, 0, 0, 0, 0, 0, 0, 0,// 2760 - 276f
+ 0, 0, 0, 0, 0, 0,11,11,11,11,11,11,11,11,11,11,// 2770 - 277f
+ 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,// 2780 - 278f
+ 11,11,11,11,27, 0, 0, 0,27,27,27,27,27,27,27,27,// 2790 - 279f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 27a0 - 27af
+ 0,27,27,27,27,27,27,27,27,27,27,27,27,27,27, 0,// 27b0 - 27bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 27c0 - 27cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 27d0 - 27df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 27e0 - 27ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 27f0 - 27ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e00 - 2e0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e10 - 2e1f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e20 - 2e2f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e30 - 2e3f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e40 - 2e4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e50 - 2e5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e60 - 2e6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e70 - 2e7f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2e80 - 2e8f
+ 27,27,27,27,27,27,27,27,27,27, 0,27,27,27,27,27,// 2e90 - 2e9f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2ea0 - 2eaf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2eb0 - 2ebf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2ec0 - 2ecf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2ed0 - 2edf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2ee0 - 2eef
+ 27,27,27,27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2ef0 - 2eff
+
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f00 - 2f0f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f10 - 2f1f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f20 - 2f2f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f30 - 2f3f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f40 - 2f4f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f50 - 2f5f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f60 - 2f6f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f70 - 2f7f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f80 - 2f8f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2f90 - 2f9f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2fa0 - 2faf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2fb0 - 2fbf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 2fc0 - 2fcf
+ 27,27,27,27,27,27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2fd0 - 2fdf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2fe0 - 2fef
+ 27,27,27,27,27,27,27,27,27,27,27,27, 0, 0, 0, 0,// 2ff0 - 2fff
+
+ 12,23,23,23,27, 4, 5,10,20,21,20,21,20,21,20,21,// 3000 - 300f
+ 20,21,27,27,20,21,20,21,20,21,20,21,19,20,21,21,// 3010 - 301f
+ 27,10,10,10,10,10,10,10,10,10, 6, 6, 6, 6, 6, 6,// 3020 - 302f
+ 19, 4, 4, 4, 4, 4,27,27,10,10,10, 0, 0, 0,27,27,// 3030 - 303f
+ 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3040 - 304f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3050 - 305f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3060 - 306f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3070 - 307f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3080 - 308f
+ 5, 5, 5, 5, 5, 0, 0, 0, 0, 6, 6,26,26, 4, 4, 0,// 3090 - 309f
+ 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 30a0 - 30af
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 30b0 - 30bf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 30c0 - 30cf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 30d0 - 30df
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 30e0 - 30ef
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,22, 4, 4, 4, 0,// 30f0 - 30ff
+
+ 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3100 - 310f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3110 - 311f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0,// 3120 - 312f
+ 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3130 - 313f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3140 - 314f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3150 - 315f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3160 - 316f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 3170 - 317f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0,// 3180 - 318f
+ 27,27,11,11,11,11,27,27,27,27,27,27,27,27,27,27,// 3190 - 319f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 31a0 - 31af
+ 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0,// 31b0 - 31bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 31c0 - 31cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 31d0 - 31df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 31e0 - 31ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 31f0 - 31ff
+
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3200 - 320f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27, 0, 0, 0,// 3210 - 321f
+ 11,11,11,11,11,11,11,11,11,11,27,27,27,27,27,27,// 3220 - 322f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3230 - 323f
+ 27,27,27,27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 3240 - 324f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 3250 - 325f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3260 - 326f
+ 27,27,27,27,27,27,27,27,27,27,27,27, 0, 0, 0,27,// 3270 - 327f
+ 11,11,11,11,11,11,11,11,11,11,27,27,27,27,27,27,// 3280 - 328f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3290 - 329f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 32a0 - 32af
+ 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 32b0 - 32bf
+ 27,27,27,27,27,27,27,27,27,27,27,27, 0, 0, 0, 0,// 32c0 - 32cf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 32d0 - 32df
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 32e0 - 32ef
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27, 0,// 32f0 - 32ff
+
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3300 - 330f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3310 - 331f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3320 - 332f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3330 - 333f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3340 - 334f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3350 - 335f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3360 - 336f
+ 27,27,27,27,27,27,27, 0, 0, 0, 0,27,27,27,27,27,// 3370 - 337f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3380 - 338f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 3390 - 339f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 33a0 - 33af
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 33b0 - 33bf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 33c0 - 33cf
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27, 0, 0,// 33d0 - 33df
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// 33e0 - 33ef
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27, 0,// 33f0 - 33ff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d00 - 4d0f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d10 - 4d1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d20 - 4d2f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d30 - 4d3f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d40 - 4d4f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d50 - 4d5f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d60 - 4d6f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d70 - 4d7f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d80 - 4d8f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4d90 - 4d9f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 4da0 - 4daf
+ 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 4db0 - 4dbf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 4dc0 - 4dcf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 4dd0 - 4ddf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 4de0 - 4def
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 4df0 - 4dff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f00 - 9f0f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f10 - 9f1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f20 - 9f2f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f30 - 9f3f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f40 - 9f4f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f50 - 9f5f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f60 - 9f6f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f70 - 9f7f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f80 - 9f8f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// 9f90 - 9f9f
+ 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 9fa0 - 9faf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 9fb0 - 9fbf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 9fc0 - 9fcf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 9fd0 - 9fdf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 9fe0 - 9fef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 9ff0 - 9fff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// a400 - a40f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// a410 - a41f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// a420 - a42f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// a430 - a43f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// a440 - a44f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// a450 - a45f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// a460 - a46f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// a470 - a47f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0,// a480 - a48f
+ 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,// a490 - a49f
+ 27,27, 0, 0,27,27,27,27,27,27,27,27,27,27,27,27,// a4a0 - a4af
+ 27,27,27,27, 0,27,27,27,27,27,27,27,27,27,27,27,// a4b0 - a4bf
+ 27, 0,27,27,27, 0,27, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a4c0 - a4cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a4d0 - a4df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a4e0 - a4ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a4f0 - a4ff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d700 - d70f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d710 - d71f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d720 - d72f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d730 - d73f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d740 - d74f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d750 - d75f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d760 - d76f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d770 - d77f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d780 - d78f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// d790 - d79f
+ 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// d7a0 - d7af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// d7b0 - d7bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// d7c0 - d7cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// d7d0 - d7df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// d7e0 - d7ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// d7f0 - d7ff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fa00 - fa0f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fa10 - fa1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0,// fa20 - fa2f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fa30 - fa3f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fa40 - fa4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fa50 - fa5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fa60 - fa6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fa70 - fa7f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fa80 - fa8f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fa90 - fa9f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// faa0 - faaf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fab0 - fabf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fac0 - facf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fad0 - fadf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fae0 - faef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// faf0 - faff
+
+ 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fb00 - fb0f
+ 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 5, 6, 5,// fb10 - fb1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5,24, 5, 5, 5, 5, 5, 5,// fb20 - fb2f
+ 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0, 5, 0,// fb30 - fb3f
+ 5, 5, 0, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fb40 - fb4f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fb50 - fb5f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fb60 - fb6f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fb70 - fb7f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fb80 - fb8f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fb90 - fb9f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fba0 - fbaf
+ 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fbb0 - fbbf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fbc0 - fbcf
+ 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fbd0 - fbdf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fbe0 - fbef
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fbf0 - fbff
+
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fd00 - fd0f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fd10 - fd1f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fd20 - fd2f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,20,21,// fd30 - fd3f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fd40 - fd4f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fd50 - fd5f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fd60 - fd6f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fd70 - fd7f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fd80 - fd8f
+ 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fd90 - fd9f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fda0 - fdaf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fdb0 - fdbf
+ 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0,// fdc0 - fdcf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fdd0 - fddf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fde0 - fdef
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0,// fdf0 - fdff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fe00 - fe0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fe10 - fe1f
+ 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fe20 - fe2f
+ 23,19,19,22,22,20,21,20,21,20,21,20,21,20,21,20,// fe30 - fe3f
+ 21,20,21,20,21, 0, 0, 0, 0,23,23,23,23,22,22,22,// fe40 - fe4f
+ 23,23,23, 0,23,23,23,23,19,20,21,20,21,20,21,23,// fe50 - fe5f
+ 23,23,24,19,24,24,24, 0,23,25,23,23, 0, 0, 0, 0,// fe60 - fe6f
+ 5, 5, 5, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fe70 - fe7f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fe80 - fe8f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fe90 - fe9f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fea0 - feaf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// feb0 - febf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fec0 - fecf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fed0 - fedf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// fee0 - feef
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0,16,// fef0 - feff
+
+ 0,23,23,23,25,23,23,23,20,21,23,24,23,19,23,23,// ff00 - ff0f
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,23,23,24,24,24,23,// ff10 - ff1f
+ 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// ff20 - ff2f
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,20,23,21,26,22,// ff30 - ff3f
+ 26, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// ff40 - ff4f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,20,24,21,24, 0,// ff50 - ff5f
+ 0,23,20,21,23,22, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// ff60 - ff6f
+ 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// ff70 - ff7f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// ff80 - ff8f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4,// ff90 - ff9f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,// ffa0 - ffaf
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0,// ffb0 - ffbf
+ 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5,// ffc0 - ffcf
+ 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 0, 0, 0,// ffd0 - ffdf
+ 25,25,24,26,27,25,25, 0,27,24,24,24,24,27,27, 0,// ffe0 - ffef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,16,16,16,27,27, 0, 0,// fff0 - ffff
+
+};
+
+
+#define UnicodeDirectionNumberBlock 3
+
+static sal_Int8 UnicodeDirectionIndex[] = {
+ 0x03, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, // 0000 - 07ff
+ 0x00, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, // 0800 - 0fff
+ 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, // 1000 - 17ff
+ 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, // 1800 - 1fff
+ 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, // 2000 - 27ff
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1f, // 2800 - 2fff
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 3000 - 37ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 3800 - 3fff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 4000 - 47ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 4800 - 4fff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 5000 - 57ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 5800 - 5fff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6000 - 67ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6800 - 6fff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 7000 - 77ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 7800 - 7fff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8000 - 87ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8800 - 8fff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9000 - 97ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9800 - 9fff
+ 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, // a000 - a7ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // a800 - afff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // b000 - b7ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // b800 - bfff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // c000 - c7ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // c800 - cfff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // d000 - d7ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // d800 - dfff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // e000 - e7ff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // e800 - efff
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // f000 - f7ff
+ 0x00, 0x00, 0x00, 0x22, 0x02, 0x23, 0x24, 0x25, // f800 - ffff
+};
+
+
+static sal_Int8 UnicodeDirectionBlockValue[] = {
+ 0, 10, 13,
+};
+
+
+static sal_Int8 UnicodeDirectionValue[] = {
+ 18,18,18,18,18,18,18,18,18, 8, 7, 8, 9, 7,18,18,// 0000 - 000f
+ 18,18,18,18,18,18,18,18,18,18,18,18, 7, 7, 7, 8,// 0010 - 001f
+ 9,10,10, 4, 4, 4,10,10,10,10,10, 4, 6, 4, 6, 3,// 0020 - 002f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,10,10,10,10,10,// 0030 - 003f
+ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0040 - 004f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,10,10,// 0050 - 005f
+ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0060 - 006f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,10,18,// 0070 - 007f
+ 18,18,18,18,18, 7,18,18,18,18,18,18,18,18,18,18,// 0080 - 008f
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,// 0090 - 009f
+ 6,10, 4, 4, 4, 4,10,10,10,10, 0,10,10,10,10,10,// 00a0 - 00af
+ 4, 4, 2, 2,10, 0,10,10,10, 2, 0,10,10,10,10,10,// 00b0 - 00bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 00c0 - 00cf
+ 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, 0, 0, 0,// 00d0 - 00df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 00e0 - 00ef
+ 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, 0, 0, 0,// 00f0 - 00ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0200 - 020f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0210 - 021f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0220 - 022f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0230 - 023f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0240 - 024f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0250 - 025f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0260 - 026f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0270 - 027f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0280 - 028f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0290 - 029f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 02a0 - 02af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0,// 02b0 - 02bf
+ 0, 0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 02c0 - 02cf
+ 0, 0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 02d0 - 02df
+ 0, 0, 0, 0, 0,10,10,10,10,10,10,10,10,10, 0, 0,// 02e0 - 02ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 02f0 - 02ff
+
+ 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,// 0300 - 030f
+ 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,// 0310 - 031f
+ 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,// 0320 - 032f
+ 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,// 0330 - 033f
+ 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 0,// 0340 - 034f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0350 - 035f
+ 17,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0360 - 036f
+ 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,10, 0,// 0370 - 037f
+ 0, 0, 0, 0,10,10, 0,10, 0, 0, 0, 0, 0, 0, 0, 0,// 0380 - 038f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0390 - 039f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 03a0 - 03af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 03b0 - 03bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 03c0 - 03cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 03d0 - 03df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 03e0 - 03ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 03f0 - 03ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0400 - 040f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0410 - 041f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0420 - 042f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0430 - 043f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0440 - 044f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0450 - 045f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0460 - 046f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0470 - 047f
+ 0, 0, 0,17,17,17,17, 0,17,17, 0, 0, 0, 0, 0, 0,// 0480 - 048f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0490 - 049f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 04a0 - 04af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 04b0 - 04bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 04c0 - 04cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 04d0 - 04df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 04e0 - 04ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 04f0 - 04ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0500 - 050f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0510 - 051f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0520 - 052f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0530 - 053f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0540 - 054f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0550 - 055f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0560 - 056f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0570 - 057f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0,// 0580 - 058f
+ 0,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,// 0590 - 059f
+ 17,17, 0,17,17,17,17,17,17,17,17,17,17,17,17,17,// 05a0 - 05af
+ 17,17,17,17,17,17,17,17,17,17, 0,17,17,17, 1,17,// 05b0 - 05bf
+ 1,17,17, 1,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 05c0 - 05cf
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// 05d0 - 05df
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,// 05e0 - 05ef
+ 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 05f0 - 05ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,// 0600 - 060f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13, 0, 0, 0,13,// 0610 - 061f
+ 0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 0620 - 062f
+ 13,13,13,13,13,13,13,13,13,13,13, 0, 0, 0, 0, 0,// 0630 - 063f
+ 13,13,13,13,13,13,13,13,13,13,13,17,17,17,17,17,// 0640 - 064f
+ 17,17,17,17,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0650 - 065f
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5,13, 0, 0,// 0660 - 066f
+ 17,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 0670 - 067f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 0680 - 068f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 0690 - 069f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 06a0 - 06af
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 06b0 - 06bf
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 06c0 - 06cf
+ 13,13,13,13,13,13,17,17,17,17,17,17,17,17,17,17,// 06d0 - 06df
+ 17,17,17,17,17,13,13,17,17,10,17,17,17,17, 0, 0,// 06e0 - 06ef
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,13,13,13,13,13, 0,// 06f0 - 06ff
+
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13, 0,18,// 0700 - 070f
+ 13,17,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 0710 - 071f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13, 0, 0, 0,// 0720 - 072f
+ 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,// 0730 - 073f
+ 17,17,17,17,17,17,17,17,17,17,17, 0, 0, 0, 0, 0,// 0740 - 074f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0750 - 075f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0760 - 076f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0770 - 077f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 0780 - 078f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// 0790 - 079f
+ 13,13,13,13,13,13,17,17,17,17,17,17,17,17,17,17,// 07a0 - 07af
+ 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07b0 - 07bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07c0 - 07cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07d0 - 07df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07e0 - 07ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 07f0 - 07ff
+
+ 0,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0900 - 090f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0910 - 091f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0920 - 092f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0,// 0930 - 093f
+ 0,17,17,17,17,17,17,17,17, 0, 0, 0, 0,17, 0, 0,// 0940 - 094f
+ 0,17,17,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0950 - 095f
+ 0, 0,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0960 - 096f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0970 - 097f
+ 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0980 - 098f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0990 - 099f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 09a0 - 09af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0,// 09b0 - 09bf
+ 0,17,17,17,17, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0,// 09c0 - 09cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 09d0 - 09df
+ 0, 0,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 09e0 - 09ef
+ 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 09f0 - 09ff
+
+ 0, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0a00 - 0a0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0a10 - 0a1f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0a20 - 0a2f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0,// 0a30 - 0a3f
+ 0,17,17, 0, 0, 0, 0,17,17, 0, 0,17,17,17, 0, 0,// 0a40 - 0a4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0a50 - 0a5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0a60 - 0a6f
+ 17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0a70 - 0a7f
+ 0,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0a80 - 0a8f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0a90 - 0a9f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0aa0 - 0aaf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0,// 0ab0 - 0abf
+ 0,17,17,17,17,17, 0,17,17, 0, 0, 0, 0,17, 0, 0,// 0ac0 - 0acf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ad0 - 0adf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ae0 - 0aef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0af0 - 0aff
+
+ 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0b00 - 0b0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0b10 - 0b1f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0b20 - 0b2f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0,17,// 0b30 - 0b3f
+ 0,17,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0,// 0b40 - 0b4f
+ 0, 0, 0, 0, 0, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0b50 - 0b5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0b60 - 0b6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0b70 - 0b7f
+ 0, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0b80 - 0b8f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0b90 - 0b9f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ba0 - 0baf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0bb0 - 0bbf
+ 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0,// 0bc0 - 0bcf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0bd0 - 0bdf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0be0 - 0bef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0bf0 - 0bff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c00 - 0c0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c10 - 0c1f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c20 - 0c2f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,// 0c30 - 0c3f
+ 17, 0, 0, 0, 0, 0,17,17,17, 0,17,17,17,17, 0, 0,// 0c40 - 0c4f
+ 0, 0, 0, 0, 0,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c50 - 0c5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c60 - 0c6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c70 - 0c7f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c80 - 0c8f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0c90 - 0c9f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ca0 - 0caf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,// 0cb0 - 0cbf
+ 0, 0, 0, 0, 0, 0,17, 0, 0, 0, 0, 0,17,17, 0, 0,// 0cc0 - 0ccf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0cd0 - 0cdf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ce0 - 0cef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0cf0 - 0cff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d00 - 0d0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d10 - 0d1f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d20 - 0d2f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d30 - 0d3f
+ 0,17,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0,// 0d40 - 0d4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d50 - 0d5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d60 - 0d6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d70 - 0d7f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d80 - 0d8f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0d90 - 0d9f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0da0 - 0daf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0db0 - 0dbf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0, 0, 0,// 0dc0 - 0dcf
+ 0, 0,17,17,17, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0dd0 - 0ddf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0de0 - 0def
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0df0 - 0dff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e00 - 0e0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e10 - 0e1f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e20 - 0e2f
+ 0,17, 0, 0,17,17,17,17,17,17,17, 0, 0, 0, 0, 4,// 0e30 - 0e3f
+ 0, 0, 0, 0, 0, 0, 0,17,17,17,17,17,17,17,17, 0,// 0e40 - 0e4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e50 - 0e5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e60 - 0e6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e70 - 0e7f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e80 - 0e8f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0e90 - 0e9f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ea0 - 0eaf
+ 0,17, 0, 0,17,17,17,17,17,17, 0,17,17, 0, 0, 0,// 0eb0 - 0ebf
+ 0, 0, 0, 0, 0, 0, 0, 0,17,17,17,17,17,17, 0, 0,// 0ec0 - 0ecf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ed0 - 0edf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ee0 - 0eef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ef0 - 0eff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0f00 - 0f0f
+ 0, 0, 0, 0, 0, 0, 0, 0,17,17, 0, 0, 0, 0, 0, 0,// 0f10 - 0f1f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0f20 - 0f2f
+ 0, 0, 0, 0, 0,17, 0,17, 0,17,10,10,10,10, 0, 0,// 0f30 - 0f3f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0f40 - 0f4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0f50 - 0f5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0f60 - 0f6f
+ 0,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 0,// 0f70 - 0f7f
+ 17,17,17,17,17, 0,17,17, 0, 0, 0, 0, 0, 0, 0, 0,// 0f80 - 0f8f
+ 17,17,17,17,17,17,17,17, 0,17,17,17,17,17,17,17,// 0f90 - 0f9f
+ 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,// 0fa0 - 0faf
+ 17,17,17,17,17,17,17,17,17,17,17,17,17, 0, 0, 0,// 0fb0 - 0fbf
+ 0, 0, 0, 0, 0, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0fc0 - 0fcf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0fd0 - 0fdf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0fe0 - 0fef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0ff0 - 0fff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1000 - 100f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1010 - 101f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,17,// 1020 - 102f
+ 17, 0,17, 0, 0, 0,17,17, 0,17, 0, 0, 0, 0, 0, 0,// 1030 - 103f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1040 - 104f
+ 0, 0, 0, 0, 0, 0, 0, 0,17,17, 0, 0, 0, 0, 0, 0,// 1050 - 105f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1060 - 106f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1070 - 107f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1080 - 108f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1090 - 109f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 10a0 - 10af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 10b0 - 10bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 10c0 - 10cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 10d0 - 10df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 10e0 - 10ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 10f0 - 10ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1600 - 160f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1610 - 161f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1620 - 162f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1630 - 163f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1640 - 164f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1650 - 165f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1660 - 166f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1670 - 167f
+ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1680 - 168f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0,// 1690 - 169f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 16a0 - 16af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 16b0 - 16bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 16c0 - 16cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 16d0 - 16df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 16e0 - 16ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 16f0 - 16ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1700 - 170f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1710 - 171f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1720 - 172f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1730 - 173f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1740 - 174f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1750 - 175f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1760 - 176f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1770 - 177f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1780 - 178f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1790 - 179f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 17a0 - 17af
+ 0, 0, 0, 0, 0, 0, 0,17,17,17,17,17,17,17, 0, 0,// 17b0 - 17bf
+ 0, 0, 0, 0, 0, 0,17, 0, 0,17,17,17,17,17,17,17,// 17c0 - 17cf
+ 17,17,17,17, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,// 17d0 - 17df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 17e0 - 17ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 17f0 - 17ff
+
+ 10,10,10,10,10,10,10,10,10,10,10,18,18,18,18, 0,// 1800 - 180f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1810 - 181f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1820 - 182f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1830 - 183f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1840 - 184f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1850 - 185f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1860 - 186f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1870 - 187f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1880 - 188f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1890 - 189f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0, 0, 0, 0,// 18a0 - 18af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18b0 - 18bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18c0 - 18cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18d0 - 18df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18e0 - 18ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 18f0 - 18ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f00 - 1f0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f10 - 1f1f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f20 - 1f2f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f30 - 1f3f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f40 - 1f4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f50 - 1f5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f60 - 1f6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f70 - 1f7f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f80 - 1f8f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1f90 - 1f9f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 1fa0 - 1faf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0,10,// 1fb0 - 1fbf
+ 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,// 1fc0 - 1fcf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,// 1fd0 - 1fdf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,// 1fe0 - 1fef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,// 1ff0 - 1fff
+
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,18,18,18, 0, 1,// 2000 - 200f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2010 - 201f
+ 10,10,10,10,10,10,10,10, 9, 7,11,14,16,12,15, 9,// 2020 - 202f
+ 4, 4, 4, 4, 4,10,10,10,10,10,10,10,10,10,10,10,// 2030 - 203f
+ 10,10,10,10,10,10,10, 0,10,10,10,10,10,10, 0, 0,// 2040 - 204f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2050 - 205f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18,18,18,18,18,18,// 2060 - 206f
+ 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 4, 4,10,10,10, 0,// 2070 - 207f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4,10,10,10, 0,// 2080 - 208f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2090 - 209f
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,// 20a0 - 20af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 20b0 - 20bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 20c0 - 20cf
+ 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,// 20d0 - 20df
+ 17,17,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 20e0 - 20ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 20f0 - 20ff
+
+ 10,10, 0,10,10,10,10, 0,10,10, 0, 0, 0, 0, 0, 0,// 2100 - 210f
+ 0, 0, 0, 0,10, 0,10,10,10, 0, 0, 0, 0, 0,10,10,// 2110 - 211f
+ 10,10,10,10, 0,10, 0,10, 0,10, 0, 0, 0, 0, 4, 0,// 2120 - 212f
+ 0, 0,10, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0,// 2130 - 213f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2140 - 214f
+ 0, 0, 0,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2150 - 215f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2160 - 216f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2170 - 217f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2180 - 218f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2190 - 219f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 21a0 - 21af
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 21b0 - 21bf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 21c0 - 21cf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 21d0 - 21df
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 21e0 - 21ef
+ 10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 21f0 - 21ff
+
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2200 - 220f
+ 10,10, 4, 4,10,10,10,10,10,10,10,10,10,10,10,10,// 2210 - 221f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2220 - 222f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2230 - 223f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2240 - 224f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2250 - 225f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2260 - 226f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2270 - 227f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2280 - 228f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2290 - 229f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 22a0 - 22af
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 22b0 - 22bf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 22c0 - 22cf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 22d0 - 22df
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 22e0 - 22ef
+ 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 22f0 - 22ff
+
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2300 - 230f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2310 - 231f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2320 - 232f
+ 10,10,10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2330 - 233f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2340 - 234f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2350 - 235f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2360 - 236f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0,10,10,10,// 2370 - 237f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2380 - 238f
+ 10,10,10,10,10, 0,10,10,10,10,10, 0, 0, 0, 0, 0,// 2390 - 239f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23a0 - 23af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23b0 - 23bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23c0 - 23cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23d0 - 23df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23e0 - 23ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 23f0 - 23ff
+
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2400 - 240f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2410 - 241f
+ 10,10,10,10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2420 - 242f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2430 - 243f
+ 10,10,10,10,10,10,10,10,10,10,10, 0, 0, 0, 0, 0,// 2440 - 244f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2450 - 245f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 2460 - 246f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 2470 - 247f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,// 2480 - 248f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0,// 2490 - 249f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 24a0 - 24af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 24b0 - 24bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 24c0 - 24cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 24d0 - 24df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,// 24e0 - 24ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 24f0 - 24ff
+
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2500 - 250f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2510 - 251f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2520 - 252f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2530 - 253f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2540 - 254f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2550 - 255f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2560 - 256f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2570 - 257f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2580 - 258f
+ 10,10,10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2590 - 259f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 25a0 - 25af
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 25b0 - 25bf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 25c0 - 25cf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 25d0 - 25df
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 25e0 - 25ef
+ 10,10,10,10,10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0,// 25f0 - 25ff
+
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2600 - 260f
+ 10,10,10,10, 0, 0, 0, 0, 0,10,10,10,10,10,10,10,// 2610 - 261f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2620 - 262f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2630 - 263f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2640 - 264f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2650 - 265f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2660 - 266f
+ 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2670 - 267f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2680 - 268f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2690 - 269f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26a0 - 26af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26b0 - 26bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26c0 - 26cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26d0 - 26df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26e0 - 26ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 26f0 - 26ff
+
+ 0,10,10,10,10, 0,10,10,10,10, 0, 0,10,10,10,10,// 2700 - 270f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2710 - 271f
+ 10,10,10,10,10,10,10,10, 0,10,10,10,10,10,10,10,// 2720 - 272f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2730 - 273f
+ 10,10,10,10,10,10,10,10,10,10,10,10, 0,10, 0,10,// 2740 - 274f
+ 10,10,10, 0, 0, 0,10, 0,10,10,10,10,10,10,10, 0,// 2750 - 275f
+ 0,10,10,10,10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0,// 2760 - 276f
+ 0, 0, 0, 0, 0, 0,10,10,10,10,10,10,10,10,10,10,// 2770 - 277f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2780 - 278f
+ 10,10,10,10,10, 0, 0, 0,10,10,10,10,10,10,10,10,// 2790 - 279f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 27a0 - 27af
+ 0,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 0,// 27b0 - 27bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 27c0 - 27cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 27d0 - 27df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 27e0 - 27ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 27f0 - 27ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e00 - 2e0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e10 - 2e1f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e20 - 2e2f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e30 - 2e3f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e40 - 2e4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e50 - 2e5f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e60 - 2e6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2e70 - 2e7f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2e80 - 2e8f
+ 10,10,10,10,10,10,10,10,10,10, 0,10,10,10,10,10,// 2e90 - 2e9f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2ea0 - 2eaf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2eb0 - 2ebf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2ec0 - 2ecf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2ed0 - 2edf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2ee0 - 2eef
+ 10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2ef0 - 2eff
+
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f00 - 2f0f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f10 - 2f1f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f20 - 2f2f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f30 - 2f3f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f40 - 2f4f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f50 - 2f5f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f60 - 2f6f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f70 - 2f7f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f80 - 2f8f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2f90 - 2f9f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2fa0 - 2faf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2fb0 - 2fbf
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 2fc0 - 2fcf
+ 10,10,10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2fd0 - 2fdf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 2fe0 - 2fef
+ 10,10,10,10,10,10,10,10,10,10,10,10, 0, 0, 0, 0,// 2ff0 - 2fff
+
+ 9,10,10,10,10, 0, 0, 0,10,10,10,10,10,10,10,10,// 3000 - 300f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// 3010 - 301f
+ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,17,17,17,17,// 3020 - 302f
+ 10, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0,10,10,// 3030 - 303f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 3040 - 304f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 3050 - 305f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 3060 - 306f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 3070 - 307f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 3080 - 308f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,10,10, 0, 0, 0,// 3090 - 309f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 30a0 - 30af
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 30b0 - 30bf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 30c0 - 30cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 30d0 - 30df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 30e0 - 30ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0,// 30f0 - 30ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a400 - a40f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a410 - a41f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a420 - a42f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a430 - a43f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a440 - a44f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a450 - a45f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a460 - a46f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a470 - a47f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a480 - a48f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// a490 - a49f
+ 10,10, 0, 0,10,10,10,10,10,10,10,10,10,10,10,10,// a4a0 - a4af
+ 10,10,10,10, 0,10,10,10,10,10,10,10,10,10,10,10,// a4b0 - a4bf
+ 10, 0,10,10,10, 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a4c0 - a4cf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a4d0 - a4df
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a4e0 - a4ef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// a4f0 - a4ff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fb00 - fb0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,17, 1,// fb10 - fb1f
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,// fb20 - fb2f
+ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0,// fb30 - fb3f
+ 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,// fb40 - fb4f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fb50 - fb5f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fb60 - fb6f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fb70 - fb7f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fb80 - fb8f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fb90 - fb9f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fba0 - fbaf
+ 13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fbb0 - fbbf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fbc0 - fbcf
+ 0, 0, 0,13,13,13,13,13,13,13,13,13,13,13,13,13,// fbd0 - fbdf
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fbe0 - fbef
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fbf0 - fbff
+
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fd00 - fd0f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fd10 - fd1f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fd20 - fd2f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,10,// fd30 - fd3f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fd40 - fd4f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fd50 - fd5f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fd60 - fd6f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fd70 - fd7f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fd80 - fd8f
+ 0, 0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fd90 - fd9f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fda0 - fdaf
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fdb0 - fdbf
+ 13,13,13,13,13,13,13,13, 0, 0, 0, 0, 0, 0, 0, 0,// fdc0 - fdcf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fdd0 - fddf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fde0 - fdef
+ 13,13,13,13,13,13,13,13,13,13,13,13, 0, 0, 0, 0,// fdf0 - fdff
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fe00 - fe0f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fe10 - fe1f
+ 17,17,17,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// fe20 - fe2f
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,// fe30 - fe3f
+ 10,10,10,10,10, 0, 0, 0, 0,10,10,10,10,10,10,10,// fe40 - fe4f
+ 6,10, 6, 0,10, 6,10,10,10,10,10,10,10,10,10, 4,// fe50 - fe5f
+ 10,10, 4, 4,10,10,10, 0,10, 4, 4,10, 0, 0, 0, 0,// fe60 - fe6f
+ 13,13,13, 0,13, 0,13,13,13,13,13,13,13,13,13,13,// fe70 - fe7f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fe80 - fe8f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fe90 - fe9f
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fea0 - feaf
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// feb0 - febf
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fec0 - fecf
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fed0 - fedf
+ 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,// fee0 - feef
+ 13,13,13,13,13,13,13,13,13,13,13,13,13, 0, 0,18,// fef0 - feff
+
+ 0,10,10, 4, 4, 4,10,10,10,10,10, 4, 6, 4, 6, 3,// ff00 - ff0f
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,10,10,10,10,10,// ff10 - ff1f
+ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ff20 - ff2f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,10,10,// ff30 - ff3f
+ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ff40 - ff4f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,10, 0,// ff50 - ff5f
+ 0,10,10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ff60 - ff6f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ff70 - ff7f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ff80 - ff8f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ff90 - ff9f
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ffa0 - ffaf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ffb0 - ffbf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ffc0 - ffcf
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// ffd0 - ffdf
+ 4, 4,10,10,10, 4, 4, 0,10,10,10,10,10,10,10, 0,// ffe0 - ffef
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,18,18,18,10,10, 0, 0,// fff0 - ffff
+
+};
+
+
+#define UnicodeScriptTypeFrom 0
+#define UnicodeScriptTypeTo 1
+
+static sal_Unicode UnicodeScriptType[][2] = {
+ {0x0000, 0x007f}, // 0. Basic Latin
+ {0x0080, 0x00ff}, // 1. Latin-1 Supplement
+ {0x0100, 0x017f}, // 2. Latin Extended-A
+ {0x0180, 0x024f}, // 3. Latin Extended-B
+ {0x0250, 0x02af}, // 4. IPA Extensions
+ {0x02b0, 0x02ff}, // 5. Spacing Modifier Letters
+ {0x0300, 0x036f}, // 6. Combining Diacritical Marks
+ {0x0370, 0x03ff}, // 7. Greek
+ {0x0400, 0x04ff}, // 8. Cyrillic
+ {0x0530, 0x058f}, // 9. Armenian
+ {0x0590, 0x05ff}, // 10. Hebrew
+ {0x0600, 0x06ff}, // 11. Arabic
+ {0x0700, 0x074f}, // 12. Syriac
+ {0x0780, 0x07bf}, // 13. Thaana
+ {0x0900, 0x097f}, // 14. Devanagari
+ {0x0980, 0x09ff}, // 15. Bengali
+ {0x0a00, 0x0a7f}, // 16. Gurmukhi
+ {0x0a80, 0x0aff}, // 17. Gujarati
+ {0x0b00, 0x0b7f}, // 18. Oriya
+ {0x0b80, 0x0bff}, // 19. Tamil
+ {0x0c00, 0x0c7f}, // 20. Telugu
+ {0x0c80, 0x0cff}, // 21. Kannada
+ {0x0d00, 0x0d7f}, // 22. Malayalam
+ {0x0d80, 0x0dff}, // 23. Sinhala
+ {0x0e00, 0x0e7f}, // 24. Thai
+ {0x0e80, 0x0eff}, // 25. Lao
+ {0x0f00, 0x0fff}, // 26. Tibetan
+ {0x1000, 0x109f}, // 27. Myanmar
+ {0x10a0, 0x10ff}, // 28. Georgian
+ {0x1100, 0x11ff}, // 29. Hangul Jamo
+ {0x1200, 0x137f}, // 30. Ethiopic
+ {0x13a0, 0x13ff}, // 31. Cherokee
+ {0x1400, 0x167f}, // 32. Unified Canadian Aboriginal Syllabics
+ {0x1680, 0x169f}, // 33. Ogham
+ {0x16a0, 0x16ff}, // 34. Runic
+ {0x1780, 0x17ff}, // 35. Khmer
+ {0x1800, 0x18af}, // 36. Mongolian
+ {0x1e00, 0x1eff}, // 37. Latin Extended Additional
+ {0x1f00, 0x1fff}, // 38. Greek Extended
+ {0x2000, 0x206f}, // 39. General Punctuation
+ {0x2070, 0x209f}, // 40. Superscripts and Subscripts
+ {0x20a0, 0x20cf}, // 41. Currency Symbols
+ {0x20d0, 0x20ff}, // 42. Combining Marks for Symbols
+ {0x2100, 0x214f}, // 43. Letterlike Symbols
+ {0x2150, 0x218f}, // 44. Number Forms
+ {0x2190, 0x21ff}, // 45. Arrows
+ {0x2200, 0x22ff}, // 46. Mathematical Operators
+ {0x2300, 0x23ff}, // 47. Miscellaneous Technical
+ {0x2400, 0x243f}, // 48. Control Pictures
+ {0x2440, 0x245f}, // 49. Optical Character Recognition
+ {0x2460, 0x24ff}, // 50. Enclosed Alphanumerics
+ {0x2500, 0x257f}, // 51. Box Drawing
+ {0x2580, 0x259f}, // 52. Block Elements
+ {0x25a0, 0x25ff}, // 53. Geometric Shapes
+ {0x2600, 0x26ff}, // 54. Miscellaneous Symbols
+ {0x2700, 0x27bf}, // 55. Dingbats
+ {0x2800, 0x28ff}, // 56. Braille Patterns
+ {0x2e80, 0x2eff}, // 57. CJK Radicals Supplement
+ {0x2f00, 0x2fdf}, // 58. Kangxi Radicals
+ {0x2ff0, 0x2fff}, // 59. Ideographic Description Characters
+ {0x3000, 0x303f}, // 60. CJK Symbols and Punctuation
+ {0x3040, 0x309f}, // 61. Hiragana
+ {0x30a0, 0x30ff}, // 62. Katakana
+ {0x3100, 0x312f}, // 63. Bopomofo
+ {0x3130, 0x318f}, // 64. Hangul Compatibility Jamo
+ {0x3190, 0x319f}, // 65. Kanbun
+ {0x31a0, 0x31bf}, // 66. Bopomofo Extended
+ {0x3200, 0x32ff}, // 67. Enclosed CJK Letters and Months
+ {0x3300, 0x33ff}, // 68. CJK Compatibility
+ {0x3400, 0x4db5}, // 69. CJK Unified Ideographs Extension A
+ {0x4e00, 0x9fff}, // 70. CJK Unified Ideographs
+ {0xa000, 0xa48f}, // 71. Yi Syllables
+ {0xa490, 0xa4cf}, // 72. Yi Radicals
+ {0xac00, 0xd7a3}, // 73. Hangul Syllables
+ {0xd800, 0xdb7f}, // 74. High Surrogates
+ {0xdb80, 0xdbff}, // 75. High Private Use Surrogates
+ {0xdc00, 0xdfff}, // 76. Low Surrogates
+ {0xe000, 0xf8ff}, // 77. Private Use
+ {0xf900, 0xfaff}, // 78. CJK Compatibility Ideographs
+ {0xfb00, 0xfb4f}, // 79. Alphabetic Presentation Forms
+ {0xfb50, 0xfdff}, // 80. Arabic Presentation Forms-A
+ {0xfe20, 0xfe2f}, // 81. Combining Half Marks
+ {0xfe30, 0xfe4f}, // 82. CJK Compatibility Forms
+ {0xfe50, 0xfe6f}, // 83. Small Form Variants
+ {0xfe70, 0xfefe}, // 84. Arabic Presentation Forms-B
+ {0xfeff, 0xfeff}, // 85. kNoScript
+ {0xff00, 0xffef}, // 85. Halfwidth and Fullwidth Forms
+};
+
+#endif
+
diff --git a/i18nutil/source/utility/widthfolding.cxx b/i18nutil/source/utility/widthfolding.cxx
new file mode 100644
index 000000000000..35119e0ee58d
--- /dev/null
+++ b/i18nutil/source/utility/widthfolding.cxx
@@ -0,0 +1,236 @@
+/*************************************************************************
+ *
+ * $RCSfile: widthfolding.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:26:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// prevent internal compiler error with MSVC6SP3
+#include <stl/utility>
+#include <i18nutil/widthfolding.hxx>
+#include <i18nutil/x_rtl_ustring.h>
+#include "widthfolding_data.h"
+
+using namespace com::sun::star::uno;
+using namespace rtl;
+
+namespace com { namespace sun { namespace star { namespace i18n {
+
+sal_Unicode widthfolding::decompose_ja_voiced_sound_marksChar2Char (sal_Unicode inChar)
+{
+ if (0x30a0 <= inChar && inChar <= 0x30ff) {
+ sal_Int16 i = inChar - 0x3040;
+ if (decomposition_table[i].decomposited_character_1)
+ return 0xFFFF;
+ }
+ return inChar;
+}
+
+/**
+ * Decompose Japanese specific voiced and semi-voiced sound marks.
+ */
+OUString widthfolding::decompose_ja_voiced_sound_marks (const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, sal_Bool useOffset )
+{
+ // Create a string buffer which can hold nCount * 2 + 1 characters.
+ // Its size may become double of nCount.
+ rtl_uString * newStr;
+ x_rtl_uString_new_WithLength( &newStr, nCount * 2 ); // defined in x_rtl_ustring.h The reference count is 0 now.
+
+ sal_Int32 *p, position;
+ if (useOffset) {
+ // Allocate double of nCount length to offset argument.
+ offset.realloc( nCount * 2 );
+ p = offset.getArray();
+ position = startPos;
+ }
+
+ // Prepare pointers of unicode character arrays.
+ const sal_Unicode* src = inStr.getStr() + startPos;
+ sal_Unicode* dst = newStr->buffer;
+
+ // Decomposition: GA --> KA + voice-mark
+ while (nCount -- > 0) {
+ sal_Unicode c = *src++;
+ // see http://charts.unicode.org/Web/U3040.html Hiragana (U+3040..U+309F)
+ // see http://charts.unicode.org/Web/U30A0.html Katakana (U+30A0..U+30FF)
+ // Hiragana is not applied to decomposition.
+ // Only Katakana is applied to decomposition
+ if (0x30a0 <= c && c <= 0x30ff) {
+ int i = int(c - 0x3040);
+ sal_Unicode first = decomposition_table[i].decomposited_character_1;
+ if (first != 0x0000) {
+ *dst ++ = first;
+ *dst ++ = decomposition_table[i].decomposited_character_2; // second
+ if (useOffset) {
+ *p ++ = position;
+ *p ++ = position ++;
+ }
+ continue;
+ }
+ }
+ *dst ++ = c;
+ if (useOffset)
+ *p ++ = position ++;
+ }
+ *dst = (sal_Unicode) 0;
+
+ newStr->length = sal_Int32(dst - newStr->buffer);
+ if (useOffset)
+ offset.realloc(newStr->length);
+ return OUString( newStr ); // defined in rtl/usrting. The reference count is increased from 0 to 1.
+}
+
+oneToOneMapping& widthfolding::getfull2halfTable(void)
+{
+ static oneToOneMapping table(full2half, sizeof(full2half));
+ table.makeIndex();
+ return table;
+}
+
+/**
+ * Compose Japanese specific voiced and semi-voiced sound marks.
+ */
+OUString widthfolding::compose_ja_voiced_sound_marks (const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, sal_Bool useOffset )
+{
+ // Create a string buffer which can hold nCount + 1 characters.
+ // Its size may become equal to nCount or smaller.
+ // The reference count is 0 now.
+ rtl_uString * newStr = x_rtl_uString_new_WithLength( nCount ); // defined in x_rtl_ustring.h
+
+ // Prepare pointers of unicode character arrays.
+ const sal_Unicode* src = inStr.getStr() + startPos;
+ sal_Unicode* dst = newStr->buffer;
+
+ // This conversion algorithm requires at least one character.
+ if (nCount > 0) {
+
+ // .. .. KA VOICE .. ..
+ // ^ ^
+ // previousChar currentChar
+ // ^
+ // position
+ //
+ // will be converted to
+ // .. .. GA .. ..
+
+ sal_Int32 *p, position;
+ if (useOffset) {
+ // Allocate nCount length to offset argument.
+ offset.realloc( nCount );
+ p = offset.getArray();
+ position = startPos;
+ }
+
+ //
+ sal_Unicode previousChar = *src ++;
+ sal_Unicode currentChar;
+
+ // Composition: KA + voice-mark --> GA
+ while (-- nCount > 0) {
+ currentChar = *src ++;
+ // see http://charts.unicode.org/Web/U3040.html Hiragana (U+3040..U+309F)
+ // see http://charts.unicode.org/Web/U30A0.html Katakana (U+30A0..U+30FF)
+ // 0x3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ // 0x309a COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ int j = currentChar - 0x3099; // 0x3099 or 0x309a ?
+ if (0 <= j && j <= 1) { // 0 addresses a code point regarding 0x3099, 1 is 0x309a
+ int i = int(previousChar - 0x3040); // i acts as an index of array
+ if (0 <= i && i <= (0x30ff - 0x3040) && composition_table[i][j]) {
+ if (useOffset) {
+ position ++;
+ *p ++ = position ++;
+ }
+ *dst ++ = composition_table[i][j];
+ previousChar = *src ++;
+ nCount --;
+ continue;
+ }
+ }
+ if (useOffset)
+ *p ++ = position ++;
+ *dst ++ = previousChar;
+ previousChar = currentChar;
+ }
+
+ if (nCount == 0) {
+ if (useOffset)
+ *p = position;
+ *dst ++ = previousChar;
+ }
+
+ *dst = (sal_Unicode) 0;
+
+ newStr->length = sal_Int32(dst - newStr->buffer);
+ }
+ if (useOffset)
+ offset.realloc(newStr->length);
+ return OUString( newStr ); // defined in rtl/usrting. The reference count is increased from 0 to 1.
+}
+
+oneToOneMapping& widthfolding::gethalf2fullTable(void)
+{
+ static oneToOneMapping table(half2full, sizeof(half2full));
+ table.makeIndex();
+ return table;
+}
+
+sal_Unicode widthfolding::getCompositionChar(sal_Unicode c1, sal_Unicode c2)
+{
+ return composition_table[c1 - 0x3040][c2 - 0x3099];
+}
+
+} } } }
diff --git a/i18nutil/source/utility/widthfolding_data.h b/i18nutil/source/utility/widthfolding_data.h
new file mode 100644
index 000000000000..bfc8f498c484
--- /dev/null
+++ b/i18nutil/source/utility/widthfolding_data.h
@@ -0,0 +1,955 @@
+/*************************************************************************
+ *
+ * $RCSfile: widthfolding_data.h,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2003-04-24 12:26:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef INCLUDED_I18NUTIL_CASEFOLDING_DATA_H
+#define INCLUDED_I18NUTIL_CASEFOLDING_DATA_H
+
+#include <i18nutil/oneToOneMapping.hxx>
+
+namespace com { namespace sun { namespace star { namespace i18n {
+
+/*
+ Unicode Normalization Forms
+ http://www.unicode.org/unicode/reports/tr15/index.html
+ http://www.w3.org/International/charlint/
+*/
+
+typedef struct {
+ sal_Unicode decomposited_character_1;
+ sal_Unicode decomposited_character_2;
+} decomposition_table_entry_t;
+
+const decomposition_table_entry_t decomposition_table[] = {
+ { 0x0000, 0x0000 }, // 0x3040
+ { 0x0000, 0x0000 }, // 0x3041 HIRAGANA LETTER SMALL A
+ { 0x0000, 0x0000 }, // 0x3042 HIRAGANA LETTER A
+ { 0x0000, 0x0000 }, // 0x3043 HIRAGANA LETTER SMALL I
+ { 0x0000, 0x0000 }, // 0x3044 HIRAGANA LETTER I
+ { 0x0000, 0x0000 }, // 0x3045 HIRAGANA LETTER SMALL U
+ { 0x0000, 0x0000 }, // 0x3046 HIRAGANA LETTER U
+ { 0x0000, 0x0000 }, // 0x3047 HIRAGANA LETTER SMALL E
+ { 0x0000, 0x0000 }, // 0x3048 HIRAGANA LETTER E
+ { 0x0000, 0x0000 }, // 0x3049 HIRAGANA LETTER SMALL O
+ { 0x0000, 0x0000 }, // 0x304a HIRAGANA LETTER O
+ { 0x0000, 0x0000 }, // 0x304b HIRAGANA LETTER KA
+ { 0x304b, 0x3099 }, // 0x304c HIRAGANA LETTER GA --> HIRAGANA LETTER KA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x304d HIRAGANA LETTER KI
+ { 0x304d, 0x3099 }, // 0x304e HIRAGANA LETTER GI --> HIRAGANA LETTER KI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x304f HIRAGANA LETTER KU
+ { 0x304f, 0x3099 }, // 0x3050 HIRAGANA LETTER GU --> HIRAGANA LETTER KU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3051 HIRAGANA LETTER KE
+ { 0x3051, 0x3099 }, // 0x3052 HIRAGANA LETTER GE --> HIRAGANA LETTER KE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3053 HIRAGANA LETTER KO
+ { 0x3053, 0x3099 }, // 0x3054 HIRAGANA LETTER GO --> HIRAGANA LETTER KO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3055 HIRAGANA LETTER SA
+ { 0x3055, 0x3099 }, // 0x3056 HIRAGANA LETTER ZA --> HIRAGANA LETTER SA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3057 HIRAGANA LETTER SI
+ { 0x3057, 0x3099 }, // 0x3058 HIRAGANA LETTER ZI --> HIRAGANA LETTER SI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3059 HIRAGANA LETTER SU
+ { 0x3059, 0x3099 }, // 0x305a HIRAGANA LETTER ZU --> HIRAGANA LETTER SU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x305b HIRAGANA LETTER SE
+ { 0x305b, 0x3099 }, // 0x305c HIRAGANA LETTER ZE --> HIRAGANA LETTER SE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x305d HIRAGANA LETTER SO
+ { 0x305d, 0x3099 }, // 0x305e HIRAGANA LETTER ZO --> HIRAGANA LETTER SO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x305f HIRAGANA LETTER TA
+ { 0x305f, 0x3099 }, // 0x3060 HIRAGANA LETTER DA --> HIRAGANA LETTER TA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3061 HIRAGANA LETTER TI
+ { 0x3061, 0x3099 }, // 0x3062 HIRAGANA LETTER DI --> HIRAGANA LETTER TI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3063 HIRAGANA LETTER SMALL TU
+ { 0x0000, 0x0000 }, // 0x3064 HIRAGANA LETTER TU
+ { 0x3064, 0x3099 }, // 0x3065 HIRAGANA LETTER DU --> HIRAGANA LETTER TU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3066 HIRAGANA LETTER TE
+ { 0x3066, 0x3099 }, // 0x3067 HIRAGANA LETTER DE --> HIRAGANA LETTER TE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3068 HIRAGANA LETTER TO
+ { 0x3068, 0x3099 }, // 0x3069 HIRAGANA LETTER DO --> HIRAGANA LETTER TO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x306a HIRAGANA LETTER NA
+ { 0x0000, 0x0000 }, // 0x306b HIRAGANA LETTER NI
+ { 0x0000, 0x0000 }, // 0x306c HIRAGANA LETTER NU
+ { 0x0000, 0x0000 }, // 0x306d HIRAGANA LETTER NE
+ { 0x0000, 0x0000 }, // 0x306e HIRAGANA LETTER NO
+ { 0x0000, 0x0000 }, // 0x306f HIRAGANA LETTER HA
+ { 0x306f, 0x3099 }, // 0x3070 HIRAGANA LETTER BA --> HIRAGANA LETTER HA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x306f, 0x309a }, // 0x3071 HIRAGANA LETTER PA --> HIRAGANA LETTER HA + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3072 HIRAGANA LETTER HI
+ { 0x3072, 0x3099 }, // 0x3073 HIRAGANA LETTER BI --> HIRAGANA LETTER HI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x3072, 0x309a }, // 0x3074 HIRAGANA LETTER PI --> HIRAGANA LETTER HI + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3075 HIRAGANA LETTER HU
+ { 0x3075, 0x3099 }, // 0x3076 HIRAGANA LETTER BU --> HIRAGANA LETTER HU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x3075, 0x309a }, // 0x3077 HIRAGANA LETTER PU --> HIRAGANA LETTER HU + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3078 HIRAGANA LETTER HE
+ { 0x3078, 0x3099 }, // 0x3079 HIRAGANA LETTER BE --> HIRAGANA LETTER HE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x3078, 0x309a }, // 0x307a HIRAGANA LETTER PE --> HIRAGANA LETTER HE + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x307b HIRAGANA LETTER HO
+ { 0x307b, 0x3099 }, // 0x307c HIRAGANA LETTER BO --> HIRAGANA LETTER HO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x307b, 0x309a }, // 0x307d HIRAGANA LETTER PO --> HIRAGANA LETTER HO + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x307e HIRAGANA LETTER MA
+ { 0x0000, 0x0000 }, // 0x307f HIRAGANA LETTER MI
+ { 0x0000, 0x0000 }, // 0x3080 HIRAGANA LETTER MU
+ { 0x0000, 0x0000 }, // 0x3081 HIRAGANA LETTER ME
+ { 0x0000, 0x0000 }, // 0x3082 HIRAGANA LETTER MO
+ { 0x0000, 0x0000 }, // 0x3083 HIRAGANA LETTER SMALL YA
+ { 0x0000, 0x0000 }, // 0x3084 HIRAGANA LETTER YA
+ { 0x0000, 0x0000 }, // 0x3085 HIRAGANA LETTER SMALL YU
+ { 0x0000, 0x0000 }, // 0x3086 HIRAGANA LETTER YU
+ { 0x0000, 0x0000 }, // 0x3087 HIRAGANA LETTER SMALL YO
+ { 0x0000, 0x0000 }, // 0x3088 HIRAGANA LETTER YO
+ { 0x0000, 0x0000 }, // 0x3089 HIRAGANA LETTER RA
+ { 0x0000, 0x0000 }, // 0x308a HIRAGANA LETTER RI
+ { 0x0000, 0x0000 }, // 0x308b HIRAGANA LETTER RU
+ { 0x0000, 0x0000 }, // 0x308c HIRAGANA LETTER RE
+ { 0x0000, 0x0000 }, // 0x308d HIRAGANA LETTER RO
+ { 0x0000, 0x0000 }, // 0x308e HIRAGANA LETTER SMALL WA
+ { 0x0000, 0x0000 }, // 0x308f HIRAGANA LETTER WA
+ { 0x0000, 0x0000 }, // 0x3090 HIRAGANA LETTER WI
+ { 0x0000, 0x0000 }, // 0x3091 HIRAGANA LETTER WE
+ { 0x0000, 0x0000 }, // 0x3092 HIRAGANA LETTER WO
+ { 0x0000, 0x0000 }, // 0x3093 HIRAGANA LETTER N
+ { 0x3046, 0x3099 }, // 0x3094 HIRAGANA LETTER VU --> HIRAGANA LETTER U + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x3095
+ { 0x0000, 0x0000 }, // 0x3096
+ { 0x0000, 0x0000 }, // 0x3097
+ { 0x0000, 0x0000 }, // 0x3098
+ { 0x0000, 0x0000 }, // 0x3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x309a COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x309b KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x309c KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x309d HIRAGANA ITERATION MARK
+ { 0x0000, 0x0000 }, // 0x309e HIRAGANA VOICED ITERATION MARK
+ { 0x0000, 0x0000 }, // 0x309f
+ { 0x0000, 0x0000 }, // 0x30a0
+ { 0x0000, 0x0000 }, // 0x30a1 KATAKANA LETTER SMALL A
+ { 0x0000, 0x0000 }, // 0x30a2 KATAKANA LETTER A
+ { 0x0000, 0x0000 }, // 0x30a3 KATAKANA LETTER SMALL I
+ { 0x0000, 0x0000 }, // 0x30a4 KATAKANA LETTER I
+ { 0x0000, 0x0000 }, // 0x30a5 KATAKANA LETTER SMALL U
+ { 0x0000, 0x0000 }, // 0x30a6 KATAKANA LETTER U
+ { 0x0000, 0x0000 }, // 0x30a7 KATAKANA LETTER SMALL E
+ { 0x0000, 0x0000 }, // 0x30a8 KATAKANA LETTER E
+ { 0x0000, 0x0000 }, // 0x30a9 KATAKANA LETTER SMALL O
+ { 0x0000, 0x0000 }, // 0x30aa KATAKANA LETTER O
+ { 0x0000, 0x0000 }, // 0x30ab KATAKANA LETTER KA
+ { 0x30ab, 0x3099 }, // 0x30ac KATAKANA LETTER GA --> KATAKANA LETTER KA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30ad KATAKANA LETTER KI
+ { 0x30ad, 0x3099 }, // 0x30ae KATAKANA LETTER GI --> KATAKANA LETTER KI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30af KATAKANA LETTER KU
+ { 0x30af, 0x3099 }, // 0x30b0 KATAKANA LETTER GU --> KATAKANA LETTER KU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30b1 KATAKANA LETTER KE
+ { 0x30b1, 0x3099 }, // 0x30b2 KATAKANA LETTER GE --> KATAKANA LETTER KE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30b3 KATAKANA LETTER KO
+ { 0x30b3, 0x3099 }, // 0x30b4 KATAKANA LETTER GO --> KATAKANA LETTER KO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30b5 KATAKANA LETTER SA
+ { 0x30b5, 0x3099 }, // 0x30b6 KATAKANA LETTER ZA --> KATAKANA LETTER SA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30b7 KATAKANA LETTER SI
+ { 0x30b7, 0x3099 }, // 0x30b8 KATAKANA LETTER ZI --> KATAKANA LETTER SI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30b9 KATAKANA LETTER SU
+ { 0x30b9, 0x3099 }, // 0x30ba KATAKANA LETTER ZU --> KATAKANA LETTER SU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30bb KATAKANA LETTER SE
+ { 0x30bb, 0x3099 }, // 0x30bc KATAKANA LETTER ZE --> KATAKANA LETTER SE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30bd KATAKANA LETTER SO
+ { 0x30bd, 0x3099 }, // 0x30be KATAKANA LETTER ZO --> KATAKANA LETTER SO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30bf KATAKANA LETTER TA
+ { 0x30bf, 0x3099 }, // 0x30c0 KATAKANA LETTER DA --> KATAKANA LETTER TA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30c1 KATAKANA LETTER TI
+ { 0x30c1, 0x3099 }, // 0x30c2 KATAKANA LETTER DI --> KATAKANA LETTER TI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30c3 KATAKANA LETTER SMALL TU
+ { 0x0000, 0x0000 }, // 0x30c4 KATAKANA LETTER TU
+ { 0x30c4, 0x3099 }, // 0x30c5 KATAKANA LETTER DU --> KATAKANA LETTER TU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30c6 KATAKANA LETTER TE
+ { 0x30c6, 0x3099 }, // 0x30c7 KATAKANA LETTER DE --> KATAKANA LETTER TE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30c8 KATAKANA LETTER TO
+ { 0x30c8, 0x3099 }, // 0x30c9 KATAKANA LETTER DO --> KATAKANA LETTER TO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30ca KATAKANA LETTER NA
+ { 0x0000, 0x0000 }, // 0x30cb KATAKANA LETTER NI
+ { 0x0000, 0x0000 }, // 0x30cc KATAKANA LETTER NU
+ { 0x0000, 0x0000 }, // 0x30cd KATAKANA LETTER NE
+ { 0x0000, 0x0000 }, // 0x30ce KATAKANA LETTER NO
+ { 0x0000, 0x0000 }, // 0x30cf KATAKANA LETTER HA
+ { 0x30cf, 0x3099 }, // 0x30d0 KATAKANA LETTER BA --> KATAKANA LETTER HA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x30cf, 0x309a }, // 0x30d1 KATAKANA LETTER PA --> KATAKANA LETTER HA + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30d2 KATAKANA LETTER HI
+ { 0x30d2, 0x3099 }, // 0x30d3 KATAKANA LETTER BI --> KATAKANA LETTER HI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x30d2, 0x309a }, // 0x30d4 KATAKANA LETTER PI --> KATAKANA LETTER HI + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30d5 KATAKANA LETTER HU
+ { 0x30d5, 0x3099 }, // 0x30d6 KATAKANA LETTER BU --> KATAKANA LETTER HU + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x30d5, 0x309a }, // 0x30d7 KATAKANA LETTER PU --> KATAKANA LETTER HU + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30d8 KATAKANA LETTER HE
+ { 0x30d8, 0x3099 }, // 0x30d9 KATAKANA LETTER BE --> KATAKANA LETTER HE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x30d8, 0x309a }, // 0x30da KATAKANA LETTER PE --> KATAKANA LETTER HE + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30db KATAKANA LETTER HO
+ { 0x30db, 0x3099 }, // 0x30dc KATAKANA LETTER BO --> KATAKANA LETTER HO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x30db, 0x309a }, // 0x30dd KATAKANA LETTER PO --> KATAKANA LETTER HO + COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30de KATAKANA LETTER MA
+ { 0x0000, 0x0000 }, // 0x30df KATAKANA LETTER MI
+ { 0x0000, 0x0000 }, // 0x30e0 KATAKANA LETTER MU
+ { 0x0000, 0x0000 }, // 0x30e1 KATAKANA LETTER ME
+ { 0x0000, 0x0000 }, // 0x30e2 KATAKANA LETTER MO
+ { 0x0000, 0x0000 }, // 0x30e3 KATAKANA LETTER SMALL YA
+ { 0x0000, 0x0000 }, // 0x30e4 KATAKANA LETTER YA
+ { 0x0000, 0x0000 }, // 0x30e5 KATAKANA LETTER SMALL YU
+ { 0x0000, 0x0000 }, // 0x30e6 KATAKANA LETTER YU
+ { 0x0000, 0x0000 }, // 0x30e7 KATAKANA LETTER SMALL YO
+ { 0x0000, 0x0000 }, // 0x30e8 KATAKANA LETTER YO
+ { 0x0000, 0x0000 }, // 0x30e9 KATAKANA LETTER RA
+ { 0x0000, 0x0000 }, // 0x30ea KATAKANA LETTER RI
+ { 0x0000, 0x0000 }, // 0x30eb KATAKANA LETTER RU
+ { 0x0000, 0x0000 }, // 0x30ec KATAKANA LETTER RE
+ { 0x0000, 0x0000 }, // 0x30ed KATAKANA LETTER RO
+ { 0x0000, 0x0000 }, // 0x30ee KATAKANA LETTER SMALL WA
+ { 0x0000, 0x0000 }, // 0x30ef KATAKANA LETTER WA
+ { 0x0000, 0x0000 }, // 0x30f0 KATAKANA LETTER WI
+ { 0x0000, 0x0000 }, // 0x30f1 KATAKANA LETTER WE
+ { 0x0000, 0x0000 }, // 0x30f2 KATAKANA LETTER WO
+ { 0x0000, 0x0000 }, // 0x30f3 KATAKANA LETTER N
+ { 0x30a6, 0x3099 }, // 0x30f4 KATAKANA LETTER VU --> KATAKANA LETTER U + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30f5 KATAKANA LETTER SMALL KA
+ { 0x0000, 0x0000 }, // 0x30f6 KATAKANA LETTER SMALL KE
+ { 0x30ef, 0x3099 }, // 0x30f7 KATAKANA LETTER VA --> KATAKANA LETTER WA + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x30f0, 0x3099 }, // 0x30f8 KATAKANA LETTER VI --> KATAKANA LETTER WI + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x30f1, 0x3099 }, // 0x30f9 KATAKANA LETTER VE --> KATAKANA LETTER WE + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x30f2, 0x3099 }, // 0x30fa KATAKANA LETTER VO --> KATAKANA LETTER WO + COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30fb KATAKANA MIDDLE DOT
+ { 0x0000, 0x0000 }, // 0x30fc KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30fd KATAKANA ITERATION MARK
+ { 0x0000, 0x0000 }, // 0x30fe KATAKANA VOICED ITERATION MARK
+ { 0x0000, 0x0000 } // 0x30ff
+};
+
+
+/*
+ Halfwidth and Fullwidth Forms (U+FF00..U+FFEF)
+ ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt
+ ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html
+ http://charts.unicode.org/Web/UFF00.html
+*/
+
+OneToOneMappingTable_t full2half[] = {
+ MAKE_PAIR( 0x2190, 0xFFE9 ), // LEFTWARDS ARROW --> HALFWIDTH LEFTWARDS ARROW
+ MAKE_PAIR( 0x2191, 0xFFEA ), // UPWARDS ARROW --> HALFWIDTH UPWARDS ARROW
+ MAKE_PAIR( 0x2192, 0xFFEB ), // RIGHTWARDS ARROW --> HALFWIDTH RIGHTWARDS ARROW
+ MAKE_PAIR( 0x2193, 0xFFEC ), // DOWNWARDS ARROW --> HALFWIDTH DOWNWARDS ARROW
+
+ MAKE_PAIR( 0x2212, 0x002D ), // MINUS SIGN --> HYPHEN-MINUS
+
+ MAKE_PAIR( 0x2502, 0xFFE8 ), // BOX DRAWINGS LIGHT VERTICAL --> HALFWIDTH FORMS LIGHT VERTICAL
+ MAKE_PAIR( 0x25A0, 0xFFED ), // BLACK SQUARE --> HALFWIDTH BLACK SQUARE
+ MAKE_PAIR( 0x25CB, 0xFFEE ), // WHITE CIRCLE --> HALFWIDTH WHITE CIRCLE
+ MAKE_PAIR( 0x3000, 0x0020 ), // IDEOGRAPHIC SPACE --> SPACE
+ MAKE_PAIR( 0x3001, 0xFF64 ), // IDEOGRAPHIC COMMA --> HALFWIDTH IDEOGRAPHIC COMMA
+ MAKE_PAIR( 0x3002, 0xFF61 ), // IDEOGRAPHIC FULL STOP --> HALFWIDTH IDEOGRAPHIC FULL STOP
+ MAKE_PAIR( 0x300C, 0xFF62 ), // LEFT CORNER BRACKET --> HALFWIDTH LEFT CORNER BRACKET
+ MAKE_PAIR( 0x300D, 0xFF63 ), // RIGHT CORNER BRACKET --> HALFWIDTH RIGHT CORNER BRACKET
+ MAKE_PAIR( 0x3099, 0xFF9E ), // COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK --> HALFWIDTH KATAKANA VOICED SOUND MARK
+ MAKE_PAIR( 0x309A, 0xFF9F ), // COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK --> HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ MAKE_PAIR( 0x30A1, 0xFF67 ), // KATAKANA LETTER SMALL A --> HALFWIDTH KATAKANA LETTER SMALL A
+ MAKE_PAIR( 0x30A2, 0xFF71 ), // KATAKANA LETTER A --> HALFWIDTH KATAKANA LETTER A
+ MAKE_PAIR( 0x30A3, 0xFF68 ), // KATAKANA LETTER SMALL I --> HALFWIDTH KATAKANA LETTER SMALL I
+ MAKE_PAIR( 0x30A4, 0xFF72 ), // KATAKANA LETTER I --> HALFWIDTH KATAKANA LETTER I
+ MAKE_PAIR( 0x30A5, 0xFF69 ), // KATAKANA LETTER SMALL U --> HALFWIDTH KATAKANA LETTER SMALL U
+ MAKE_PAIR( 0x30A6, 0xFF73 ), // KATAKANA LETTER U --> HALFWIDTH KATAKANA LETTER U
+ MAKE_PAIR( 0x30A7, 0xFF6A ), // KATAKANA LETTER SMALL E --> HALFWIDTH KATAKANA LETTER SMALL E
+ MAKE_PAIR( 0x30A8, 0xFF74 ), // KATAKANA LETTER E --> HALFWIDTH KATAKANA LETTER E
+ MAKE_PAIR( 0x30A9, 0xFF6B ), // KATAKANA LETTER SMALL O --> HALFWIDTH KATAKANA LETTER SMALL O
+ MAKE_PAIR( 0x30AA, 0xFF75 ), // KATAKANA LETTER O --> HALFWIDTH KATAKANA LETTER O
+ MAKE_PAIR( 0x30AB, 0xFF76 ), // KATAKANA LETTER KA --> HALFWIDTH KATAKANA LETTER KA
+ MAKE_PAIR( 0x30AD, 0xFF77 ), // KATAKANA LETTER KI --> HALFWIDTH KATAKANA LETTER KI
+ MAKE_PAIR( 0x30AF, 0xFF78 ), // KATAKANA LETTER KU --> HALFWIDTH KATAKANA LETTER KU
+ MAKE_PAIR( 0x30B1, 0xFF79 ), // KATAKANA LETTER KE --> HALFWIDTH KATAKANA LETTER KE
+ MAKE_PAIR( 0x30B3, 0xFF7A ), // KATAKANA LETTER KO --> HALFWIDTH KATAKANA LETTER KO
+ MAKE_PAIR( 0x30B5, 0xFF7B ), // KATAKANA LETTER SA --> HALFWIDTH KATAKANA LETTER SA
+ MAKE_PAIR( 0x30B7, 0xFF7C ), // KATAKANA LETTER SI --> HALFWIDTH KATAKANA LETTER SI
+ MAKE_PAIR( 0x30B9, 0xFF7D ), // KATAKANA LETTER SU --> HALFWIDTH KATAKANA LETTER SU
+ MAKE_PAIR( 0x30BB, 0xFF7E ), // KATAKANA LETTER SE --> HALFWIDTH KATAKANA LETTER SE
+ MAKE_PAIR( 0x30BD, 0xFF7F ), // KATAKANA LETTER SO --> HALFWIDTH KATAKANA LETTER SO
+ MAKE_PAIR( 0x30BF, 0xFF80 ), // KATAKANA LETTER TA --> HALFWIDTH KATAKANA LETTER TA
+ MAKE_PAIR( 0x30C1, 0xFF81 ), // KATAKANA LETTER TI --> HALFWIDTH KATAKANA LETTER TI
+ MAKE_PAIR( 0x30C3, 0xFF6F ), // KATAKANA LETTER SMALL TU --> HALFWIDTH KATAKANA LETTER SMALL TU
+ MAKE_PAIR( 0x30C4, 0xFF82 ), // KATAKANA LETTER TU --> HALFWIDTH KATAKANA LETTER TU
+ MAKE_PAIR( 0x30C6, 0xFF83 ), // KATAKANA LETTER TE --> HALFWIDTH KATAKANA LETTER TE
+ MAKE_PAIR( 0x30C8, 0xFF84 ), // KATAKANA LETTER TO --> HALFWIDTH KATAKANA LETTER TO
+ MAKE_PAIR( 0x30CA, 0xFF85 ), // KATAKANA LETTER NA --> HALFWIDTH KATAKANA LETTER NA
+ MAKE_PAIR( 0x30CB, 0xFF86 ), // KATAKANA LETTER NI --> HALFWIDTH KATAKANA LETTER NI
+ MAKE_PAIR( 0x30CC, 0xFF87 ), // KATAKANA LETTER NU --> HALFWIDTH KATAKANA LETTER NU
+ MAKE_PAIR( 0x30CD, 0xFF88 ), // KATAKANA LETTER NE --> HALFWIDTH KATAKANA LETTER NE
+ MAKE_PAIR( 0x30CE, 0xFF89 ), // KATAKANA LETTER NO --> HALFWIDTH KATAKANA LETTER NO
+ MAKE_PAIR( 0x30CF, 0xFF8A ), // KATAKANA LETTER HA --> HALFWIDTH KATAKANA LETTER HA
+ MAKE_PAIR( 0x30D2, 0xFF8B ), // KATAKANA LETTER HI --> HALFWIDTH KATAKANA LETTER HI
+ MAKE_PAIR( 0x30D5, 0xFF8C ), // KATAKANA LETTER HU --> HALFWIDTH KATAKANA LETTER HU
+ MAKE_PAIR( 0x30D8, 0xFF8D ), // KATAKANA LETTER HE --> HALFWIDTH KATAKANA LETTER HE
+ MAKE_PAIR( 0x30DB, 0xFF8E ), // KATAKANA LETTER HO --> HALFWIDTH KATAKANA LETTER HO
+ MAKE_PAIR( 0x30DE, 0xFF8F ), // KATAKANA LETTER MA --> HALFWIDTH KATAKANA LETTER MA
+ MAKE_PAIR( 0x30DF, 0xFF90 ), // KATAKANA LETTER MI --> HALFWIDTH KATAKANA LETTER MI
+ MAKE_PAIR( 0x30E0, 0xFF91 ), // KATAKANA LETTER MU --> HALFWIDTH KATAKANA LETTER MU
+ MAKE_PAIR( 0x30E1, 0xFF92 ), // KATAKANA LETTER ME --> HALFWIDTH KATAKANA LETTER ME
+ MAKE_PAIR( 0x30E2, 0xFF93 ), // KATAKANA LETTER MO --> HALFWIDTH KATAKANA LETTER MO
+ MAKE_PAIR( 0x30E3, 0xFF6C ), // KATAKANA LETTER SMALL YA --> HALFWIDTH KATAKANA LETTER SMALL YA
+ MAKE_PAIR( 0x30E4, 0xFF94 ), // KATAKANA LETTER YA --> HALFWIDTH KATAKANA LETTER YA
+ MAKE_PAIR( 0x30E5, 0xFF6D ), // KATAKANA LETTER SMALL YU --> HALFWIDTH KATAKANA LETTER SMALL YU
+ MAKE_PAIR( 0x30E6, 0xFF95 ), // KATAKANA LETTER YU --> HALFWIDTH KATAKANA LETTER YU
+ MAKE_PAIR( 0x30E7, 0xFF6E ), // KATAKANA LETTER SMALL YO --> HALFWIDTH KATAKANA LETTER SMALL YO
+ MAKE_PAIR( 0x30E8, 0xFF96 ), // KATAKANA LETTER YO --> HALFWIDTH KATAKANA LETTER YO
+ MAKE_PAIR( 0x30E9, 0xFF97 ), // KATAKANA LETTER RA --> HALFWIDTH KATAKANA LETTER RA
+ MAKE_PAIR( 0x30EA, 0xFF98 ), // KATAKANA LETTER RI --> HALFWIDTH KATAKANA LETTER RI
+ MAKE_PAIR( 0x30EB, 0xFF99 ), // KATAKANA LETTER RU --> HALFWIDTH KATAKANA LETTER RU
+ MAKE_PAIR( 0x30EC, 0xFF9A ), // KATAKANA LETTER RE --> HALFWIDTH KATAKANA LETTER RE
+ MAKE_PAIR( 0x30ED, 0xFF9B ), // KATAKANA LETTER RO --> HALFWIDTH KATAKANA LETTER RO
+ MAKE_PAIR( 0x30EF, 0xFF9C ), // KATAKANA LETTER WA --> HALFWIDTH KATAKANA LETTER WA
+ MAKE_PAIR( 0x30F2, 0xFF66 ), // KATAKANA LETTER WO --> HALFWIDTH KATAKANA LETTER WO
+ MAKE_PAIR( 0x30F3, 0xFF9D ), // KATAKANA LETTER N --> HALFWIDTH KATAKANA LETTER N
+ MAKE_PAIR( 0x30FB, 0xFF65 ), // KATAKANA MIDDLE DOT --> HALFWIDTH KATAKANA MIDDLE DOT
+ MAKE_PAIR( 0x30FC, 0xFF70 ), // KATAKANA-HIRAGANA PROLONGED SOUND MARK --> HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ MAKE_PAIR( 0x3131, 0xFFA1 ), // HANGUL LETTER KIYEOK --> HALFWIDTH HANGUL LETTER KIYEOK
+ MAKE_PAIR( 0x3132, 0xFFA2 ), // HANGUL LETTER SSANGKIYEOK --> HALFWIDTH HANGUL LETTER SSANGKIYEOK
+ MAKE_PAIR( 0x3133, 0xFFA3 ), // HANGUL LETTER KIYEOK-SIOS --> HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+ MAKE_PAIR( 0x3134, 0xFFA4 ), // HANGUL LETTER NIEUN --> HALFWIDTH HANGUL LETTER NIEUN
+ MAKE_PAIR( 0x3135, 0xFFA5 ), // HANGUL LETTER NIEUN-CIEUC --> HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+ MAKE_PAIR( 0x3136, 0xFFA6 ), // HANGUL LETTER NIEUN-HIEUH --> HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+ MAKE_PAIR( 0x3137, 0xFFA7 ), // HANGUL LETTER TIKEUT --> HALFWIDTH HANGUL LETTER TIKEUT
+ MAKE_PAIR( 0x3138, 0xFFA8 ), // HANGUL LETTER SSANGTIKEUT --> HALFWIDTH HANGUL LETTER SSANGTIKEUT
+ MAKE_PAIR( 0x3139, 0xFFA9 ), // HANGUL LETTER RIEUL --> HALFWIDTH HANGUL LETTER RIEUL
+ MAKE_PAIR( 0x313A, 0xFFAA ), // HANGUL LETTER RIEUL-KIYEOK --> HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+ MAKE_PAIR( 0x313B, 0xFFAB ), // HANGUL LETTER RIEUL-MIEUM --> HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+ MAKE_PAIR( 0x313C, 0xFFAC ), // HANGUL LETTER RIEUL-PIEUP --> HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+ MAKE_PAIR( 0x313D, 0xFFAD ), // HANGUL LETTER RIEUL-SIOS --> HALFWIDTH HANGUL LETTER RIEUL-SIOS
+ MAKE_PAIR( 0x313E, 0xFFAE ), // HANGUL LETTER RIEUL-THIEUTH --> HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+ MAKE_PAIR( 0x313F, 0xFFAF ), // HANGUL LETTER RIEUL-PHIEUPH --> HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+ MAKE_PAIR( 0x3140, 0xFFB0 ), // HANGUL LETTER RIEUL-HIEUH --> HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+ MAKE_PAIR( 0x3141, 0xFFB1 ), // HANGUL LETTER MIEUM --> HALFWIDTH HANGUL LETTER MIEUM
+ MAKE_PAIR( 0x3142, 0xFFB2 ), // HANGUL LETTER PIEUP --> HALFWIDTH HANGUL LETTER PIEUP
+ MAKE_PAIR( 0x3143, 0xFFB3 ), // HANGUL LETTER SSANGPIEUP --> HALFWIDTH HANGUL LETTER SSANGPIEUP
+ MAKE_PAIR( 0x3144, 0xFFB4 ), // HANGUL LETTER PIEUP-SIOS --> HALFWIDTH HANGUL LETTER PIEUP-SIOS
+ MAKE_PAIR( 0x3145, 0xFFB5 ), // HANGUL LETTER SIOS --> HALFWIDTH HANGUL LETTER SIOS
+ MAKE_PAIR( 0x3146, 0xFFB6 ), // HANGUL LETTER SSANGSIOS --> HALFWIDTH HANGUL LETTER SSANGSIOS
+ MAKE_PAIR( 0x3147, 0xFFB7 ), // HANGUL LETTER IEUNG --> HALFWIDTH HANGUL LETTER IEUNG
+ MAKE_PAIR( 0x3148, 0xFFB8 ), // HANGUL LETTER CIEUC --> HALFWIDTH HANGUL LETTER CIEUC
+ MAKE_PAIR( 0x3149, 0xFFB9 ), // HANGUL LETTER SSANGCIEUC --> HALFWIDTH HANGUL LETTER SSANGCIEUC
+ MAKE_PAIR( 0x314A, 0xFFBA ), // HANGUL LETTER CHIEUCH --> HALFWIDTH HANGUL LETTER CHIEUCH
+ MAKE_PAIR( 0x314B, 0xFFBB ), // HANGUL LETTER KHIEUKH --> HALFWIDTH HANGUL LETTER KHIEUKH
+ MAKE_PAIR( 0x314C, 0xFFBC ), // HANGUL LETTER THIEUTH --> HALFWIDTH HANGUL LETTER THIEUTH
+ MAKE_PAIR( 0x314D, 0xFFBD ), // HANGUL LETTER PHIEUPH --> HALFWIDTH HANGUL LETTER PHIEUPH
+ MAKE_PAIR( 0x314E, 0xFFBE ), // HANGUL LETTER HIEUH --> HALFWIDTH HANGUL LETTER HIEUH
+ MAKE_PAIR( 0x314F, 0xFFC2 ), // HANGUL LETTER A --> HALFWIDTH HANGUL LETTER A
+ MAKE_PAIR( 0x3150, 0xFFC3 ), // HANGUL LETTER AE --> HALFWIDTH HANGUL LETTER AE
+ MAKE_PAIR( 0x3151, 0xFFC4 ), // HANGUL LETTER YA --> HALFWIDTH HANGUL LETTER YA
+ MAKE_PAIR( 0x3152, 0xFFC5 ), // HANGUL LETTER YAE --> HALFWIDTH HANGUL LETTER YAE
+ MAKE_PAIR( 0x3153, 0xFFC6 ), // HANGUL LETTER EO --> HALFWIDTH HANGUL LETTER EO
+ MAKE_PAIR( 0x3154, 0xFFC7 ), // HANGUL LETTER E --> HALFWIDTH HANGUL LETTER E
+ MAKE_PAIR( 0x3155, 0xFFCA ), // HANGUL LETTER YEO --> HALFWIDTH HANGUL LETTER YEO
+ MAKE_PAIR( 0x3156, 0xFFCB ), // HANGUL LETTER YE --> HALFWIDTH HANGUL LETTER YE
+ MAKE_PAIR( 0x3157, 0xFFCC ), // HANGUL LETTER O --> HALFWIDTH HANGUL LETTER O
+ MAKE_PAIR( 0x3158, 0xFFCD ), // HANGUL LETTER WA --> HALFWIDTH HANGUL LETTER WA
+ MAKE_PAIR( 0x3159, 0xFFCE ), // HANGUL LETTER WAE --> HALFWIDTH HANGUL LETTER WAE
+ MAKE_PAIR( 0x315A, 0xFFCF ), // HANGUL LETTER OE --> HALFWIDTH HANGUL LETTER OE
+ MAKE_PAIR( 0x315B, 0xFFD2 ), // HANGUL LETTER YO --> HALFWIDTH HANGUL LETTER YO
+ MAKE_PAIR( 0x315C, 0xFFD3 ), // HANGUL LETTER U --> HALFWIDTH HANGUL LETTER U
+ MAKE_PAIR( 0x315D, 0xFFD4 ), // HANGUL LETTER WEO --> HALFWIDTH HANGUL LETTER WEO
+ MAKE_PAIR( 0x315E, 0xFFD5 ), // HANGUL LETTER WE --> HALFWIDTH HANGUL LETTER WE
+ MAKE_PAIR( 0x315F, 0xFFD6 ), // HANGUL LETTER WI --> HALFWIDTH HANGUL LETTER WI
+ MAKE_PAIR( 0x3160, 0xFFD7 ), // HANGUL LETTER YU --> HALFWIDTH HANGUL LETTER YU
+ MAKE_PAIR( 0x3161, 0xFFDA ), // HANGUL LETTER EU --> HALFWIDTH HANGUL LETTER EU
+ MAKE_PAIR( 0x3162, 0xFFDB ), // HANGUL LETTER YI --> HALFWIDTH HANGUL LETTER YI
+ MAKE_PAIR( 0x3163, 0xFFDC ), // HANGUL LETTER I --> HALFWIDTH HANGUL LETTER I
+ MAKE_PAIR( 0x3164, 0xFFA0 ), // HANGUL FILLER --> HALFWIDTH HANGUL FILLER
+ MAKE_PAIR( 0xFF01, 0x0021 ), // FULLWIDTH EXCLAMATION MARK --> EXCLAMATION MARK
+ MAKE_PAIR( 0xFF02, 0x0022 ), // FULLWIDTH QUOTATION MARK --> QUOTATION MARK
+ MAKE_PAIR( 0xFF03, 0x0023 ), // FULLWIDTH NUMBER SIGN --> NUMBER SIGN
+ MAKE_PAIR( 0xFF04, 0x0024 ), // FULLWIDTH DOLLAR SIGN --> DOLLAR SIGN
+ MAKE_PAIR( 0xFF05, 0x0025 ), // FULLWIDTH PERCENT SIGN --> PERCENT SIGN
+ MAKE_PAIR( 0xFF06, 0x0026 ), // FULLWIDTH AMPERSAND --> AMPERSAND
+ MAKE_PAIR( 0xFF07, 0x0027 ), // FULLWIDTH APOSTROPHE --> APOSTROPHE
+ MAKE_PAIR( 0xFF08, 0x0028 ), // FULLWIDTH LEFT PARENTHESIS --> LEFT PARENTHESIS
+ MAKE_PAIR( 0xFF09, 0x0029 ), // FULLWIDTH RIGHT PARENTHESIS --> RIGHT PARENTHESIS
+ MAKE_PAIR( 0xFF0A, 0x002A ), // FULLWIDTH ASTERISK --> ASTERISK
+ MAKE_PAIR( 0xFF0B, 0x002B ), // FULLWIDTH PLUS SIGN --> PLUS SIGN
+ MAKE_PAIR( 0xFF0C, 0x002C ), // FULLWIDTH COMMA --> COMMA
+
+//MAKE_PAIR( 0xFF0D, 0x002D ), // FULLWIDTH HYPHEN-MINUS --> HYPHEN-MINUS
+
+ MAKE_PAIR( 0xFF0E, 0x002E ), // FULLWIDTH FULL STOP --> FULL STOP
+ MAKE_PAIR( 0xFF0F, 0x002F ), // FULLWIDTH SOLIDUS --> SOLIDUS
+ MAKE_PAIR( 0xFF10, 0x0030 ), // FULLWIDTH DIGIT ZERO --> DIGIT ZERO
+ MAKE_PAIR( 0xFF11, 0x0031 ), // FULLWIDTH DIGIT ONE --> DIGIT ONE
+ MAKE_PAIR( 0xFF12, 0x0032 ), // FULLWIDTH DIGIT TWO --> DIGIT TWO
+ MAKE_PAIR( 0xFF13, 0x0033 ), // FULLWIDTH DIGIT THREE --> DIGIT THREE
+ MAKE_PAIR( 0xFF14, 0x0034 ), // FULLWIDTH DIGIT FOUR --> DIGIT FOUR
+ MAKE_PAIR( 0xFF15, 0x0035 ), // FULLWIDTH DIGIT FIVE --> DIGIT FIVE
+ MAKE_PAIR( 0xFF16, 0x0036 ), // FULLWIDTH DIGIT SIX --> DIGIT SIX
+ MAKE_PAIR( 0xFF17, 0x0037 ), // FULLWIDTH DIGIT SEVEN --> DIGIT SEVEN
+ MAKE_PAIR( 0xFF18, 0x0038 ), // FULLWIDTH DIGIT EIGHT --> DIGIT EIGHT
+ MAKE_PAIR( 0xFF19, 0x0039 ), // FULLWIDTH DIGIT NINE --> DIGIT NINE
+ MAKE_PAIR( 0xFF1A, 0x003A ), // FULLWIDTH COLON --> COLON
+ MAKE_PAIR( 0xFF1B, 0x003B ), // FULLWIDTH SEMICOLON --> SEMICOLON
+ MAKE_PAIR( 0xFF1C, 0x003C ), // FULLWIDTH LESS-THAN SIGN --> LESS-THAN SIGN
+ MAKE_PAIR( 0xFF1D, 0x003D ), // FULLWIDTH EQUALS SIGN --> EQUALS SIGN
+ MAKE_PAIR( 0xFF1E, 0x003E ), // FULLWIDTH GREATER-THAN SIGN --> GREATER-THAN SIGN
+ MAKE_PAIR( 0xFF1F, 0x003F ), // FULLWIDTH QUESTION MARK --> QUESTION MARK
+ MAKE_PAIR( 0xFF20, 0x0040 ), // FULLWIDTH COMMERCIAL AT --> COMMERCIAL AT
+ MAKE_PAIR( 0xFF21, 0x0041 ), // FULLWIDTH LATIN CAPITAL LETTER A --> LATIN CAPITAL LETTER A
+ MAKE_PAIR( 0xFF22, 0x0042 ), // FULLWIDTH LATIN CAPITAL LETTER B --> LATIN CAPITAL LETTER B
+ MAKE_PAIR( 0xFF23, 0x0043 ), // FULLWIDTH LATIN CAPITAL LETTER C --> LATIN CAPITAL LETTER C
+ MAKE_PAIR( 0xFF24, 0x0044 ), // FULLWIDTH LATIN CAPITAL LETTER D --> LATIN CAPITAL LETTER D
+ MAKE_PAIR( 0xFF25, 0x0045 ), // FULLWIDTH LATIN CAPITAL LETTER E --> LATIN CAPITAL LETTER E
+ MAKE_PAIR( 0xFF26, 0x0046 ), // FULLWIDTH LATIN CAPITAL LETTER F --> LATIN CAPITAL LETTER F
+ MAKE_PAIR( 0xFF27, 0x0047 ), // FULLWIDTH LATIN CAPITAL LETTER G --> LATIN CAPITAL LETTER G
+ MAKE_PAIR( 0xFF28, 0x0048 ), // FULLWIDTH LATIN CAPITAL LETTER H --> LATIN CAPITAL LETTER H
+ MAKE_PAIR( 0xFF29, 0x0049 ), // FULLWIDTH LATIN CAPITAL LETTER I --> LATIN CAPITAL LETTER I
+ MAKE_PAIR( 0xFF2A, 0x004A ), // FULLWIDTH LATIN CAPITAL LETTER J --> LATIN CAPITAL LETTER J
+ MAKE_PAIR( 0xFF2B, 0x004B ), // FULLWIDTH LATIN CAPITAL LETTER K --> LATIN CAPITAL LETTER K
+ MAKE_PAIR( 0xFF2C, 0x004C ), // FULLWIDTH LATIN CAPITAL LETTER L --> LATIN CAPITAL LETTER L
+ MAKE_PAIR( 0xFF2D, 0x004D ), // FULLWIDTH LATIN CAPITAL LETTER M --> LATIN CAPITAL LETTER M
+ MAKE_PAIR( 0xFF2E, 0x004E ), // FULLWIDTH LATIN CAPITAL LETTER N --> LATIN CAPITAL LETTER N
+ MAKE_PAIR( 0xFF2F, 0x004F ), // FULLWIDTH LATIN CAPITAL LETTER O --> LATIN CAPITAL LETTER O
+ MAKE_PAIR( 0xFF30, 0x0050 ), // FULLWIDTH LATIN CAPITAL LETTER P --> LATIN CAPITAL LETTER P
+ MAKE_PAIR( 0xFF31, 0x0051 ), // FULLWIDTH LATIN CAPITAL LETTER Q --> LATIN CAPITAL LETTER Q
+ MAKE_PAIR( 0xFF32, 0x0052 ), // FULLWIDTH LATIN CAPITAL LETTER R --> LATIN CAPITAL LETTER R
+ MAKE_PAIR( 0xFF33, 0x0053 ), // FULLWIDTH LATIN CAPITAL LETTER S --> LATIN CAPITAL LETTER S
+ MAKE_PAIR( 0xFF34, 0x0054 ), // FULLWIDTH LATIN CAPITAL LETTER T --> LATIN CAPITAL LETTER T
+ MAKE_PAIR( 0xFF35, 0x0055 ), // FULLWIDTH LATIN CAPITAL LETTER U --> LATIN CAPITAL LETTER U
+ MAKE_PAIR( 0xFF36, 0x0056 ), // FULLWIDTH LATIN CAPITAL LETTER V --> LATIN CAPITAL LETTER V
+ MAKE_PAIR( 0xFF37, 0x0057 ), // FULLWIDTH LATIN CAPITAL LETTER W --> LATIN CAPITAL LETTER W
+ MAKE_PAIR( 0xFF38, 0x0058 ), // FULLWIDTH LATIN CAPITAL LETTER X --> LATIN CAPITAL LETTER X
+ MAKE_PAIR( 0xFF39, 0x0059 ), // FULLWIDTH LATIN CAPITAL LETTER Y --> LATIN CAPITAL LETTER Y
+ MAKE_PAIR( 0xFF3A, 0x005A ), // FULLWIDTH LATIN CAPITAL LETTER Z --> LATIN CAPITAL LETTER Z
+ MAKE_PAIR( 0xFF3B, 0x005B ), // FULLWIDTH LEFT SQUARE BRACKET --> LEFT SQUARE BRACKET
+ MAKE_PAIR( 0xFF3C, 0x005C ), // FULLWIDTH REVERSE SOLIDUS --> REVERSE SOLIDUS
+ MAKE_PAIR( 0xFF3D, 0x005D ), // FULLWIDTH RIGHT SQUARE BRACKET --> RIGHT SQUARE BRACKET
+ MAKE_PAIR( 0xFF3E, 0x005E ), // FULLWIDTH CIRCUMFLEX ACCENT --> CIRCUMFLEX ACCENT
+ MAKE_PAIR( 0xFF3F, 0x005F ), // FULLWIDTH LOW LINE --> LOW LINE
+ MAKE_PAIR( 0xFF40, 0x0060 ), // FULLWIDTH GRAVE ACCENT --> GRAVE ACCENT
+ MAKE_PAIR( 0xFF41, 0x0061 ), // FULLWIDTH LATIN SMALL LETTER A --> LATIN SMALL LETTER A
+ MAKE_PAIR( 0xFF42, 0x0062 ), // FULLWIDTH LATIN SMALL LETTER B --> LATIN SMALL LETTER B
+ MAKE_PAIR( 0xFF43, 0x0063 ), // FULLWIDTH LATIN SMALL LETTER C --> LATIN SMALL LETTER C
+ MAKE_PAIR( 0xFF44, 0x0064 ), // FULLWIDTH LATIN SMALL LETTER D --> LATIN SMALL LETTER D
+ MAKE_PAIR( 0xFF45, 0x0065 ), // FULLWIDTH LATIN SMALL LETTER E --> LATIN SMALL LETTER E
+ MAKE_PAIR( 0xFF46, 0x0066 ), // FULLWIDTH LATIN SMALL LETTER F --> LATIN SMALL LETTER F
+ MAKE_PAIR( 0xFF47, 0x0067 ), // FULLWIDTH LATIN SMALL LETTER G --> LATIN SMALL LETTER G
+ MAKE_PAIR( 0xFF48, 0x0068 ), // FULLWIDTH LATIN SMALL LETTER H --> LATIN SMALL LETTER H
+ MAKE_PAIR( 0xFF49, 0x0069 ), // FULLWIDTH LATIN SMALL LETTER I --> LATIN SMALL LETTER I
+ MAKE_PAIR( 0xFF4A, 0x006A ), // FULLWIDTH LATIN SMALL LETTER J --> LATIN SMALL LETTER J
+ MAKE_PAIR( 0xFF4B, 0x006B ), // FULLWIDTH LATIN SMALL LETTER K --> LATIN SMALL LETTER K
+ MAKE_PAIR( 0xFF4C, 0x006C ), // FULLWIDTH LATIN SMALL LETTER L --> LATIN SMALL LETTER L
+ MAKE_PAIR( 0xFF4D, 0x006D ), // FULLWIDTH LATIN SMALL LETTER M --> LATIN SMALL LETTER M
+ MAKE_PAIR( 0xFF4E, 0x006E ), // FULLWIDTH LATIN SMALL LETTER N --> LATIN SMALL LETTER N
+ MAKE_PAIR( 0xFF4F, 0x006F ), // FULLWIDTH LATIN SMALL LETTER O --> LATIN SMALL LETTER O
+ MAKE_PAIR( 0xFF50, 0x0070 ), // FULLWIDTH LATIN SMALL LETTER P --> LATIN SMALL LETTER P
+ MAKE_PAIR( 0xFF51, 0x0071 ), // FULLWIDTH LATIN SMALL LETTER Q --> LATIN SMALL LETTER Q
+ MAKE_PAIR( 0xFF52, 0x0072 ), // FULLWIDTH LATIN SMALL LETTER R --> LATIN SMALL LETTER R
+ MAKE_PAIR( 0xFF53, 0x0073 ), // FULLWIDTH LATIN SMALL LETTER S --> LATIN SMALL LETTER S
+ MAKE_PAIR( 0xFF54, 0x0074 ), // FULLWIDTH LATIN SMALL LETTER T --> LATIN SMALL LETTER T
+ MAKE_PAIR( 0xFF55, 0x0075 ), // FULLWIDTH LATIN SMALL LETTER U --> LATIN SMALL LETTER U
+ MAKE_PAIR( 0xFF56, 0x0076 ), // FULLWIDTH LATIN SMALL LETTER V --> LATIN SMALL LETTER V
+ MAKE_PAIR( 0xFF57, 0x0077 ), // FULLWIDTH LATIN SMALL LETTER W --> LATIN SMALL LETTER W
+ MAKE_PAIR( 0xFF58, 0x0078 ), // FULLWIDTH LATIN SMALL LETTER X --> LATIN SMALL LETTER X
+ MAKE_PAIR( 0xFF59, 0x0079 ), // FULLWIDTH LATIN SMALL LETTER Y --> LATIN SMALL LETTER Y
+ MAKE_PAIR( 0xFF5A, 0x007A ), // FULLWIDTH LATIN SMALL LETTER Z --> LATIN SMALL LETTER Z
+ MAKE_PAIR( 0xFF5B, 0x007B ), // FULLWIDTH LEFT CURLY BRACKET --> LEFT CURLY BRACKET
+ MAKE_PAIR( 0xFF5C, 0x007C ), // FULLWIDTH VERTICAL LINE --> VERTICAL LINE
+ MAKE_PAIR( 0xFF5D, 0x007D ), // FULLWIDTH RIGHT CURLY BRACKET --> RIGHT CURLY BRACKET
+ MAKE_PAIR( 0xFF5E, 0x007E ), // FULLWIDTH TILDE --> TILDE
+ MAKE_PAIR( 0xFFE0, 0x00A2 ), // FULLWIDTH CENT SIGN --> CENT SIGN
+ MAKE_PAIR( 0xFFE1, 0x00A3 ), // FULLWIDTH POUND SIGN --> POUND SIGN
+ MAKE_PAIR( 0xFFE2, 0x00AC ), // FULLWIDTH NOT SIGN --> NOT SIGN
+ MAKE_PAIR( 0xFFE3, 0x00AF ), // FULLWIDTH MACRON --> MACRON
+ MAKE_PAIR( 0xFFE4, 0x00A6 ), // FULLWIDTH BROKEN BAR --> BROKEN BAR
+ MAKE_PAIR( 0xFFE5, 0x00A5 ), // FULLWIDTH YEN SIGN --> YEN SIGN
+ MAKE_PAIR( 0xFFE6, 0x20A9 ) // FULLWIDTH WON SIGN --> WON SIGN
+};
+
+/*
+ Unicode Normalization Forms
+ http://www.unicode.org/unicode/reports/tr15/index.html
+ http://www.w3.org/International/charlint/
+*/
+
+const sal_Unicode composition_table[][2] = {
+ { 0x0000, 0x0000 }, // 0x3040
+ { 0x0000, 0x0000 }, // 0x3041 HIRAGANA LETTER SMALL A
+ { 0x0000, 0x0000 }, // 0x3042 HIRAGANA LETTER A
+ { 0x0000, 0x0000 }, // 0x3043 HIRAGANA LETTER SMALL I
+ { 0x0000, 0x0000 }, // 0x3044 HIRAGANA LETTER I
+ { 0x0000, 0x0000 }, // 0x3045 HIRAGANA LETTER SMALL U
+ { 0x3094, 0x0000 }, // 0x3046 HIRAGANA LETTER U --> HIRAGANA LETTER VU
+ { 0x0000, 0x0000 }, // 0x3047 HIRAGANA LETTER SMALL E
+ { 0x0000, 0x0000 }, // 0x3048 HIRAGANA LETTER E
+ { 0x0000, 0x0000 }, // 0x3049 HIRAGANA LETTER SMALL O
+ { 0x0000, 0x0000 }, // 0x304a HIRAGANA LETTER O
+ { 0x304c, 0x0000 }, // 0x304b HIRAGANA LETTER KA --> HIRAGANA LETTER GA
+ { 0x0000, 0x0000 }, // 0x304c HIRAGANA LETTER GA
+ { 0x304e, 0x0000 }, // 0x304d HIRAGANA LETTER KI --> HIRAGANA LETTER GI
+ { 0x0000, 0x0000 }, // 0x304e HIRAGANA LETTER GI
+ { 0x3050, 0x0000 }, // 0x304f HIRAGANA LETTER KU --> HIRAGANA LETTER GU
+ { 0x0000, 0x0000 }, // 0x3050 HIRAGANA LETTER GU
+ { 0x3052, 0x0000 }, // 0x3051 HIRAGANA LETTER KE --> HIRAGANA LETTER GE
+ { 0x0000, 0x0000 }, // 0x3052 HIRAGANA LETTER GE
+ { 0x3054, 0x0000 }, // 0x3053 HIRAGANA LETTER KO --> HIRAGANA LETTER GO
+ { 0x0000, 0x0000 }, // 0x3054 HIRAGANA LETTER GO
+ { 0x3056, 0x0000 }, // 0x3055 HIRAGANA LETTER SA --> HIRAGANA LETTER ZA
+ { 0x0000, 0x0000 }, // 0x3056 HIRAGANA LETTER ZA
+ { 0x3058, 0x0000 }, // 0x3057 HIRAGANA LETTER SI --> HIRAGANA LETTER ZI
+ { 0x0000, 0x0000 }, // 0x3058 HIRAGANA LETTER ZI
+ { 0x305a, 0x0000 }, // 0x3059 HIRAGANA LETTER SU --> HIRAGANA LETTER ZU
+ { 0x0000, 0x0000 }, // 0x305a HIRAGANA LETTER ZU
+ { 0x305c, 0x0000 }, // 0x305b HIRAGANA LETTER SE --> HIRAGANA LETTER ZE
+ { 0x0000, 0x0000 }, // 0x305c HIRAGANA LETTER ZE
+ { 0x305e, 0x0000 }, // 0x305d HIRAGANA LETTER SO --> HIRAGANA LETTER ZO
+ { 0x0000, 0x0000 }, // 0x305e HIRAGANA LETTER ZO
+ { 0x3060, 0x0000 }, // 0x305f HIRAGANA LETTER TA --> HIRAGANA LETTER DA
+ { 0x0000, 0x0000 }, // 0x3060 HIRAGANA LETTER DA
+ { 0x3062, 0x0000 }, // 0x3061 HIRAGANA LETTER TI --> HIRAGANA LETTER DI
+ { 0x0000, 0x0000 }, // 0x3062 HIRAGANA LETTER DI
+ { 0x0000, 0x0000 }, // 0x3063 HIRAGANA LETTER SMALL TU
+ { 0x3065, 0x0000 }, // 0x3064 HIRAGANA LETTER TU --> HIRAGANA LETTER DU
+ { 0x0000, 0x0000 }, // 0x3065 HIRAGANA LETTER DU
+ { 0x3067, 0x0000 }, // 0x3066 HIRAGANA LETTER TE --> HIRAGANA LETTER DE
+ { 0x0000, 0x0000 }, // 0x3067 HIRAGANA LETTER DE
+ { 0x3069, 0x0000 }, // 0x3068 HIRAGANA LETTER TO --> HIRAGANA LETTER DO
+ { 0x0000, 0x0000 }, // 0x3069 HIRAGANA LETTER DO
+ { 0x0000, 0x0000 }, // 0x306a HIRAGANA LETTER NA
+ { 0x0000, 0x0000 }, // 0x306b HIRAGANA LETTER NI
+ { 0x0000, 0x0000 }, // 0x306c HIRAGANA LETTER NU
+ { 0x0000, 0x0000 }, // 0x306d HIRAGANA LETTER NE
+ { 0x0000, 0x0000 }, // 0x306e HIRAGANA LETTER NO
+ { 0x3070, 0x3071 }, // 0x306f HIRAGANA LETTER HA --> HIRAGANA LETTER BA or HIRAGANA LETTER PA
+ { 0x0000, 0x0000 }, // 0x3070 HIRAGANA LETTER BA
+ { 0x0000, 0x0000 }, // 0x3071 HIRAGANA LETTER PA
+ { 0x3073, 0x3074 }, // 0x3072 HIRAGANA LETTER HI --> HIRAGANA LETTER BI or HIRAGANA LETTER PI
+ { 0x0000, 0x0000 }, // 0x3073 HIRAGANA LETTER BI
+ { 0x0000, 0x0000 }, // 0x3074 HIRAGANA LETTER PI
+ { 0x3076, 0x3077 }, // 0x3075 HIRAGANA LETTER HU --> HIRAGANA LETTER BU or HIRAGANA LETTER PU
+ { 0x0000, 0x0000 }, // 0x3076 HIRAGANA LETTER BU
+ { 0x0000, 0x0000 }, // 0x3077 HIRAGANA LETTER PU
+ { 0x3079, 0x307a }, // 0x3078 HIRAGANA LETTER HE --> HIRAGANA LETTER BE or HIRAGANA LETTER PE
+ { 0x0000, 0x0000 }, // 0x3079 HIRAGANA LETTER BE
+ { 0x0000, 0x0000 }, // 0x307a HIRAGANA LETTER PE
+ { 0x307c, 0x307d }, // 0x307b HIRAGANA LETTER HO --> HIRAGANA LETTER BO or HIRAGANA LETTER PO
+ { 0x0000, 0x0000 }, // 0x307c HIRAGANA LETTER BO
+ { 0x0000, 0x0000 }, // 0x307d HIRAGANA LETTER PO
+ { 0x0000, 0x0000 }, // 0x307e HIRAGANA LETTER MA
+ { 0x0000, 0x0000 }, // 0x307f HIRAGANA LETTER MI
+ { 0x0000, 0x0000 }, // 0x3080 HIRAGANA LETTER MU
+ { 0x0000, 0x0000 }, // 0x3081 HIRAGANA LETTER ME
+ { 0x0000, 0x0000 }, // 0x3082 HIRAGANA LETTER MO
+ { 0x0000, 0x0000 }, // 0x3083 HIRAGANA LETTER SMALL YA
+ { 0x0000, 0x0000 }, // 0x3084 HIRAGANA LETTER YA
+ { 0x0000, 0x0000 }, // 0x3085 HIRAGANA LETTER SMALL YU
+ { 0x0000, 0x0000 }, // 0x3086 HIRAGANA LETTER YU
+ { 0x0000, 0x0000 }, // 0x3087 HIRAGANA LETTER SMALL YO
+ { 0x0000, 0x0000 }, // 0x3088 HIRAGANA LETTER YO
+ { 0x0000, 0x0000 }, // 0x3089 HIRAGANA LETTER RA
+ { 0x0000, 0x0000 }, // 0x308a HIRAGANA LETTER RI
+ { 0x0000, 0x0000 }, // 0x308b HIRAGANA LETTER RU
+ { 0x0000, 0x0000 }, // 0x308c HIRAGANA LETTER RE
+ { 0x0000, 0x0000 }, // 0x308d HIRAGANA LETTER RO
+ { 0x0000, 0x0000 }, // 0x308e HIRAGANA LETTER SMALL WA
+ { 0x0000, 0x0000 }, // 0x308f HIRAGANA LETTER WA
+ { 0x0000, 0x0000 }, // 0x3090 HIRAGANA LETTER WI
+ { 0x0000, 0x0000 }, // 0x3091 HIRAGANA LETTER WE
+ { 0x0000, 0x0000 }, // 0x3092 HIRAGANA LETTER WO
+ { 0x0000, 0x0000 }, // 0x3093 HIRAGANA LETTER N
+ { 0x0000, 0x0000 }, // 0x3094 HIRAGANA LETTER VU
+ { 0x0000, 0x0000 }, // 0x3095
+ { 0x0000, 0x0000 }, // 0x3096
+ { 0x0000, 0x0000 }, // 0x3097
+ { 0x0000, 0x0000 }, // 0x3098
+ { 0x0000, 0x0000 }, // 0x3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x309a COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x309b KATAKANA-HIRAGANA VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x309c KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x309d HIRAGANA ITERATION MARK
+ { 0x0000, 0x0000 }, // 0x309e HIRAGANA VOICED ITERATION MARK
+ { 0x0000, 0x0000 }, // 0x309f
+ { 0x0000, 0x0000 }, // 0x30a0
+ { 0x0000, 0x0000 }, // 0x30a1 KATAKANA LETTER SMALL A
+ { 0x0000, 0x0000 }, // 0x30a2 KATAKANA LETTER A
+ { 0x0000, 0x0000 }, // 0x30a3 KATAKANA LETTER SMALL I
+ { 0x0000, 0x0000 }, // 0x30a4 KATAKANA LETTER I
+ { 0x0000, 0x0000 }, // 0x30a5 KATAKANA LETTER SMALL U
+ { 0x30f4, 0x0000 }, // 0x30a6 KATAKANA LETTER U --> KATAKANA LETTER VU
+ { 0x0000, 0x0000 }, // 0x30a7 KATAKANA LETTER SMALL E
+ { 0x0000, 0x0000 }, // 0x30a8 KATAKANA LETTER E
+ { 0x0000, 0x0000 }, // 0x30a9 KATAKANA LETTER SMALL O
+ { 0x0000, 0x0000 }, // 0x30aa KATAKANA LETTER O
+ { 0x30ac, 0x0000 }, // 0x30ab KATAKANA LETTER KA --> KATAKANA LETTER GA
+ { 0x0000, 0x0000 }, // 0x30ac KATAKANA LETTER GA
+ { 0x30ae, 0x0000 }, // 0x30ad KATAKANA LETTER KI --> KATAKANA LETTER GI
+ { 0x0000, 0x0000 }, // 0x30ae KATAKANA LETTER GI
+ { 0x30b0, 0x0000 }, // 0x30af KATAKANA LETTER KU --> KATAKANA LETTER GU
+ { 0x0000, 0x0000 }, // 0x30b0 KATAKANA LETTER GU
+ { 0x30b2, 0x0000 }, // 0x30b1 KATAKANA LETTER KE --> KATAKANA LETTER GE
+ { 0x0000, 0x0000 }, // 0x30b2 KATAKANA LETTER GE
+ { 0x30b4, 0x0000 }, // 0x30b3 KATAKANA LETTER KO --> KATAKANA LETTER GO
+ { 0x0000, 0x0000 }, // 0x30b4 KATAKANA LETTER GO
+ { 0x30b6, 0x0000 }, // 0x30b5 KATAKANA LETTER SA --> KATAKANA LETTER ZA
+ { 0x0000, 0x0000 }, // 0x30b6 KATAKANA LETTER ZA
+ { 0x30b8, 0x0000 }, // 0x30b7 KATAKANA LETTER SI --> KATAKANA LETTER ZI
+ { 0x0000, 0x0000 }, // 0x30b8 KATAKANA LETTER ZI
+ { 0x30ba, 0x0000 }, // 0x30b9 KATAKANA LETTER SU --> KATAKANA LETTER ZU
+ { 0x0000, 0x0000 }, // 0x30ba KATAKANA LETTER ZU
+ { 0x30bc, 0x0000 }, // 0x30bb KATAKANA LETTER SE --> KATAKANA LETTER ZE
+ { 0x0000, 0x0000 }, // 0x30bc KATAKANA LETTER ZE
+ { 0x30be, 0x0000 }, // 0x30bd KATAKANA LETTER SO --> KATAKANA LETTER ZO
+ { 0x0000, 0x0000 }, // 0x30be KATAKANA LETTER ZO
+ { 0x30c0, 0x0000 }, // 0x30bf KATAKANA LETTER TA --> KATAKANA LETTER DA
+ { 0x0000, 0x0000 }, // 0x30c0 KATAKANA LETTER DA
+ { 0x30c2, 0x0000 }, // 0x30c1 KATAKANA LETTER TI --> KATAKANA LETTER DI
+ { 0x0000, 0x0000 }, // 0x30c2 KATAKANA LETTER DI
+ { 0x0000, 0x0000 }, // 0x30c3 KATAKANA LETTER SMALL TU
+ { 0x30c5, 0x0000 }, // 0x30c4 KATAKANA LETTER TU --> KATAKANA LETTER DU
+ { 0x0000, 0x0000 }, // 0x30c5 KATAKANA LETTER DU
+ { 0x30c7, 0x0000 }, // 0x30c6 KATAKANA LETTER TE --> KATAKANA LETTER DE
+ { 0x0000, 0x0000 }, // 0x30c7 KATAKANA LETTER DE
+ { 0x30c9, 0x0000 }, // 0x30c8 KATAKANA LETTER TO --> KATAKANA LETTER DO
+ { 0x0000, 0x0000 }, // 0x30c9 KATAKANA LETTER DO
+ { 0x0000, 0x0000 }, // 0x30ca KATAKANA LETTER NA
+ { 0x0000, 0x0000 }, // 0x30cb KATAKANA LETTER NI
+ { 0x0000, 0x0000 }, // 0x30cc KATAKANA LETTER NU
+ { 0x0000, 0x0000 }, // 0x30cd KATAKANA LETTER NE
+ { 0x0000, 0x0000 }, // 0x30ce KATAKANA LETTER NO
+ { 0x30d0, 0x30d1 }, // 0x30cf KATAKANA LETTER HA --> KATAKANA LETTER BA or KATAKANA LETTER PA
+ { 0x0000, 0x0000 }, // 0x30d0 KATAKANA LETTER BA
+ { 0x0000, 0x0000 }, // 0x30d1 KATAKANA LETTER PA
+ { 0x30d3, 0x30d4 }, // 0x30d2 KATAKANA LETTER HI --> KATAKANA LETTER BI or KATAKANA LETTER PI
+ { 0x0000, 0x0000 }, // 0x30d3 KATAKANA LETTER BI
+ { 0x0000, 0x0000 }, // 0x30d4 KATAKANA LETTER PI
+ { 0x30d6, 0x30d7 }, // 0x30d5 KATAKANA LETTER HU --> KATAKANA LETTER BU or KATAKANA LETTER PU
+ { 0x0000, 0x0000 }, // 0x30d6 KATAKANA LETTER BU
+ { 0x0000, 0x0000 }, // 0x30d7 KATAKANA LETTER PU
+ { 0x30d9, 0x30da }, // 0x30d8 KATAKANA LETTER HE --> KATAKANA LETTER BE or KATAKANA LETTER PE
+ { 0x0000, 0x0000 }, // 0x30d9 KATAKANA LETTER BE
+ { 0x0000, 0x0000 }, // 0x30da KATAKANA LETTER PE
+ { 0x30dc, 0x30dd }, // 0x30db KATAKANA LETTER HO --> KATAKANA LETTER BO or KATAKANA LETTER PO
+ { 0x0000, 0x0000 }, // 0x30dc KATAKANA LETTER BO
+ { 0x0000, 0x0000 }, // 0x30dd KATAKANA LETTER PO
+ { 0x0000, 0x0000 }, // 0x30de KATAKANA LETTER MA
+ { 0x0000, 0x0000 }, // 0x30df KATAKANA LETTER MI
+ { 0x0000, 0x0000 }, // 0x30e0 KATAKANA LETTER MU
+ { 0x0000, 0x0000 }, // 0x30e1 KATAKANA LETTER ME
+ { 0x0000, 0x0000 }, // 0x30e2 KATAKANA LETTER MO
+ { 0x0000, 0x0000 }, // 0x30e3 KATAKANA LETTER SMALL YA
+ { 0x0000, 0x0000 }, // 0x30e4 KATAKANA LETTER YA
+ { 0x0000, 0x0000 }, // 0x30e5 KATAKANA LETTER SMALL YU
+ { 0x0000, 0x0000 }, // 0x30e6 KATAKANA LETTER YU
+ { 0x0000, 0x0000 }, // 0x30e7 KATAKANA LETTER SMALL YO
+ { 0x0000, 0x0000 }, // 0x30e8 KATAKANA LETTER YO
+ { 0x0000, 0x0000 }, // 0x30e9 KATAKANA LETTER RA
+ { 0x0000, 0x0000 }, // 0x30ea KATAKANA LETTER RI
+ { 0x0000, 0x0000 }, // 0x30eb KATAKANA LETTER RU
+ { 0x0000, 0x0000 }, // 0x30ec KATAKANA LETTER RE
+ { 0x0000, 0x0000 }, // 0x30ed KATAKANA LETTER RO
+ { 0x0000, 0x0000 }, // 0x30ee KATAKANA LETTER SMALL WA
+ { 0x30f7, 0x0000 }, // 0x30ef KATAKANA LETTER WA --> KATAKANA LETTER VA
+ { 0x30f8, 0x0000 }, // 0x30f0 KATAKANA LETTER WI --> KATAKANA LETTER VI
+ { 0x30f9, 0x0000 }, // 0x30f1 KATAKANA LETTER WE --> KATAKANA LETTER VE
+ { 0x30fa, 0x0000 }, // 0x30f2 KATAKANA LETTER WO --> KATAKANA LETTER VO
+ { 0x0000, 0x0000 }, // 0x30f3 KATAKANA LETTER N
+ { 0x0000, 0x0000 }, // 0x30f4 KATAKANA LETTER VU
+ { 0x0000, 0x0000 }, // 0x30f5 KATAKANA LETTER SMALL KA
+ { 0x0000, 0x0000 }, // 0x30f6 KATAKANA LETTER SMALL KE
+ { 0x0000, 0x0000 }, // 0x30f7 KATAKANA LETTER VA
+ { 0x0000, 0x0000 }, // 0x30f8 KATAKANA LETTER VI
+ { 0x0000, 0x0000 }, // 0x30f9 KATAKANA LETTER VE
+ { 0x0000, 0x0000 }, // 0x30fa KATAKANA LETTER VO
+ { 0x0000, 0x0000 }, // 0x30fb KATAKANA MIDDLE DOT
+ { 0x0000, 0x0000 }, // 0x30fc KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ { 0x0000, 0x0000 }, // 0x30fd KATAKANA ITERATION MARK
+ { 0x0000, 0x0000 }, // 0x30fe KATAKANA VOICED ITERATION MARK
+ { 0x0000, 0x0000 } // 0x30ff
+};
+
+
+/*
+ Halfwidth and Fullwidth Forms (U+FF00..U+FFEF)
+ ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt
+ ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html
+ http://charts.unicode.org/Web/UFF00.html
+*/
+
+OneToOneMappingTable_t half2full[] = {
+ MAKE_PAIR( 0x0020, 0x3000 ), // SPACE --> IDEOGRAPHIC SPACE
+ MAKE_PAIR( 0x0021, 0xFF01 ), // EXCLAMATION MARK --> FULLWIDTH EXCLAMATION MARK
+ MAKE_PAIR( 0x0022, 0xFF02 ), // QUOTATION MARK --> FULLWIDTH QUOTATION MARK
+ MAKE_PAIR( 0x0023, 0xFF03 ), // NUMBER SIGN --> FULLWIDTH NUMBER SIGN
+ MAKE_PAIR( 0x0024, 0xFF04 ), // DOLLAR SIGN --> FULLWIDTH DOLLAR SIGN
+ MAKE_PAIR( 0x0025, 0xFF05 ), // PERCENT SIGN --> FULLWIDTH PERCENT SIGN
+ MAKE_PAIR( 0x0026, 0xFF06 ), // AMPERSAND --> FULLWIDTH AMPERSAND
+ MAKE_PAIR( 0x0027, 0xFF07 ), // APOSTROPHE --> FULLWIDTH APOSTROPHE
+ MAKE_PAIR( 0x0028, 0xFF08 ), // LEFT PARENTHESIS --> FULLWIDTH LEFT PARENTHESIS
+ MAKE_PAIR( 0x0029, 0xFF09 ), // RIGHT PARENTHESIS --> FULLWIDTH RIGHT PARENTHESIS
+ MAKE_PAIR( 0x002A, 0xFF0A ), // ASTERISK --> FULLWIDTH ASTERISK
+ MAKE_PAIR( 0x002B, 0xFF0B ), // PLUS SIGN --> FULLWIDTH PLUS SIGN
+ MAKE_PAIR( 0x002C, 0xFF0C ), // COMMA --> FULLWIDTH COMMA
+
+//MAKE_PAIR( 0x002D, 0xFF0D ), // HYPHEN-MINUS --> FULLWIDTH HYPHEN-MINUS
+ MAKE_PAIR( 0x002D, 0x2212 ), // HYPHEN-MINUS --> MINUS SIGN
+
+ MAKE_PAIR( 0x002E, 0xFF0E ), // FULL STOP --> FULLWIDTH FULL STOP
+ MAKE_PAIR( 0x002F, 0xFF0F ), // SOLIDUS --> FULLWIDTH SOLIDUS
+ MAKE_PAIR( 0x0030, 0xFF10 ), // DIGIT ZERO --> FULLWIDTH DIGIT ZERO
+ MAKE_PAIR( 0x0031, 0xFF11 ), // DIGIT ONE --> FULLWIDTH DIGIT ONE
+ MAKE_PAIR( 0x0032, 0xFF12 ), // DIGIT TWO --> FULLWIDTH DIGIT TWO
+ MAKE_PAIR( 0x0033, 0xFF13 ), // DIGIT THREE --> FULLWIDTH DIGIT THREE
+ MAKE_PAIR( 0x0034, 0xFF14 ), // DIGIT FOUR --> FULLWIDTH DIGIT FOUR
+ MAKE_PAIR( 0x0035, 0xFF15 ), // DIGIT FIVE --> FULLWIDTH DIGIT FIVE
+ MAKE_PAIR( 0x0036, 0xFF16 ), // DIGIT SIX --> FULLWIDTH DIGIT SIX
+ MAKE_PAIR( 0x0037, 0xFF17 ), // DIGIT SEVEN --> FULLWIDTH DIGIT SEVEN
+ MAKE_PAIR( 0x0038, 0xFF18 ), // DIGIT EIGHT --> FULLWIDTH DIGIT EIGHT
+ MAKE_PAIR( 0x0039, 0xFF19 ), // DIGIT NINE --> FULLWIDTH DIGIT NINE
+ MAKE_PAIR( 0x003A, 0xFF1A ), // COLON --> FULLWIDTH COLON
+ MAKE_PAIR( 0x003B, 0xFF1B ), // SEMICOLON --> FULLWIDTH SEMICOLON
+ MAKE_PAIR( 0x003C, 0xFF1C ), // LESS-THAN SIGN --> FULLWIDTH LESS-THAN SIGN
+ MAKE_PAIR( 0x003D, 0xFF1D ), // EQUALS SIGN --> FULLWIDTH EQUALS SIGN
+ MAKE_PAIR( 0x003E, 0xFF1E ), // GREATER-THAN SIGN --> FULLWIDTH GREATER-THAN SIGN
+ MAKE_PAIR( 0x003F, 0xFF1F ), // QUESTION MARK --> FULLWIDTH QUESTION MARK
+ MAKE_PAIR( 0x0040, 0xFF20 ), // COMMERCIAL AT --> FULLWIDTH COMMERCIAL AT
+ MAKE_PAIR( 0x0041, 0xFF21 ), // LATIN CAPITAL LETTER A --> FULLWIDTH LATIN CAPITAL LETTER A
+ MAKE_PAIR( 0x0042, 0xFF22 ), // LATIN CAPITAL LETTER B --> FULLWIDTH LATIN CAPITAL LETTER B
+ MAKE_PAIR( 0x0043, 0xFF23 ), // LATIN CAPITAL LETTER C --> FULLWIDTH LATIN CAPITAL LETTER C
+ MAKE_PAIR( 0x0044, 0xFF24 ), // LATIN CAPITAL LETTER D --> FULLWIDTH LATIN CAPITAL LETTER D
+ MAKE_PAIR( 0x0045, 0xFF25 ), // LATIN CAPITAL LETTER E --> FULLWIDTH LATIN CAPITAL LETTER E
+ MAKE_PAIR( 0x0046, 0xFF26 ), // LATIN CAPITAL LETTER F --> FULLWIDTH LATIN CAPITAL LETTER F
+ MAKE_PAIR( 0x0047, 0xFF27 ), // LATIN CAPITAL LETTER G --> FULLWIDTH LATIN CAPITAL LETTER G
+ MAKE_PAIR( 0x0048, 0xFF28 ), // LATIN CAPITAL LETTER H --> FULLWIDTH LATIN CAPITAL LETTER H
+ MAKE_PAIR( 0x0049, 0xFF29 ), // LATIN CAPITAL LETTER I --> FULLWIDTH LATIN CAPITAL LETTER I
+ MAKE_PAIR( 0x004A, 0xFF2A ), // LATIN CAPITAL LETTER J --> FULLWIDTH LATIN CAPITAL LETTER J
+ MAKE_PAIR( 0x004B, 0xFF2B ), // LATIN CAPITAL LETTER K --> FULLWIDTH LATIN CAPITAL LETTER K
+ MAKE_PAIR( 0x004C, 0xFF2C ), // LATIN CAPITAL LETTER L --> FULLWIDTH LATIN CAPITAL LETTER L
+ MAKE_PAIR( 0x004D, 0xFF2D ), // LATIN CAPITAL LETTER M --> FULLWIDTH LATIN CAPITAL LETTER M
+ MAKE_PAIR( 0x004E, 0xFF2E ), // LATIN CAPITAL LETTER N --> FULLWIDTH LATIN CAPITAL LETTER N
+ MAKE_PAIR( 0x004F, 0xFF2F ), // LATIN CAPITAL LETTER O --> FULLWIDTH LATIN CAPITAL LETTER O
+ MAKE_PAIR( 0x0050, 0xFF30 ), // LATIN CAPITAL LETTER P --> FULLWIDTH LATIN CAPITAL LETTER P
+ MAKE_PAIR( 0x0051, 0xFF31 ), // LATIN CAPITAL LETTER Q --> FULLWIDTH LATIN CAPITAL LETTER Q
+ MAKE_PAIR( 0x0052, 0xFF32 ), // LATIN CAPITAL LETTER R --> FULLWIDTH LATIN CAPITAL LETTER R
+ MAKE_PAIR( 0x0053, 0xFF33 ), // LATIN CAPITAL LETTER S --> FULLWIDTH LATIN CAPITAL LETTER S
+ MAKE_PAIR( 0x0054, 0xFF34 ), // LATIN CAPITAL LETTER T --> FULLWIDTH LATIN CAPITAL LETTER T
+ MAKE_PAIR( 0x0055, 0xFF35 ), // LATIN CAPITAL LETTER U --> FULLWIDTH LATIN CAPITAL LETTER U
+ MAKE_PAIR( 0x0056, 0xFF36 ), // LATIN CAPITAL LETTER V --> FULLWIDTH LATIN CAPITAL LETTER V
+ MAKE_PAIR( 0x0057, 0xFF37 ), // LATIN CAPITAL LETTER W --> FULLWIDTH LATIN CAPITAL LETTER W
+ MAKE_PAIR( 0x0058, 0xFF38 ), // LATIN CAPITAL LETTER X --> FULLWIDTH LATIN CAPITAL LETTER X
+ MAKE_PAIR( 0x0059, 0xFF39 ), // LATIN CAPITAL LETTER Y --> FULLWIDTH LATIN CAPITAL LETTER Y
+ MAKE_PAIR( 0x005A, 0xFF3A ), // LATIN CAPITAL LETTER Z --> FULLWIDTH LATIN CAPITAL LETTER Z
+ MAKE_PAIR( 0x005B, 0xFF3B ), // LEFT SQUARE BRACKET --> FULLWIDTH LEFT SQUARE BRACKET
+ MAKE_PAIR( 0x005C, 0xFF3C ), // REVERSE SOLIDUS --> FULLWIDTH REVERSE SOLIDUS
+ MAKE_PAIR( 0x005D, 0xFF3D ), // RIGHT SQUARE BRACKET --> FULLWIDTH RIGHT SQUARE BRACKET
+ MAKE_PAIR( 0x005E, 0xFF3E ), // CIRCUMFLEX ACCENT --> FULLWIDTH CIRCUMFLEX ACCENT
+ MAKE_PAIR( 0x005F, 0xFF3F ), // LOW LINE --> FULLWIDTH LOW LINE
+ MAKE_PAIR( 0x0060, 0xFF40 ), // GRAVE ACCENT --> FULLWIDTH GRAVE ACCENT
+ MAKE_PAIR( 0x0061, 0xFF41 ), // LATIN SMALL LETTER A --> FULLWIDTH LATIN SMALL LETTER A
+ MAKE_PAIR( 0x0062, 0xFF42 ), // LATIN SMALL LETTER B --> FULLWIDTH LATIN SMALL LETTER B
+ MAKE_PAIR( 0x0063, 0xFF43 ), // LATIN SMALL LETTER C --> FULLWIDTH LATIN SMALL LETTER C
+ MAKE_PAIR( 0x0064, 0xFF44 ), // LATIN SMALL LETTER D --> FULLWIDTH LATIN SMALL LETTER D
+ MAKE_PAIR( 0x0065, 0xFF45 ), // LATIN SMALL LETTER E --> FULLWIDTH LATIN SMALL LETTER E
+ MAKE_PAIR( 0x0066, 0xFF46 ), // LATIN SMALL LETTER F --> FULLWIDTH LATIN SMALL LETTER F
+ MAKE_PAIR( 0x0067, 0xFF47 ), // LATIN SMALL LETTER G --> FULLWIDTH LATIN SMALL LETTER G
+ MAKE_PAIR( 0x0068, 0xFF48 ), // LATIN SMALL LETTER H --> FULLWIDTH LATIN SMALL LETTER H
+ MAKE_PAIR( 0x0069, 0xFF49 ), // LATIN SMALL LETTER I --> FULLWIDTH LATIN SMALL LETTER I
+ MAKE_PAIR( 0x006A, 0xFF4A ), // LATIN SMALL LETTER J --> FULLWIDTH LATIN SMALL LETTER J
+ MAKE_PAIR( 0x006B, 0xFF4B ), // LATIN SMALL LETTER K --> FULLWIDTH LATIN SMALL LETTER K
+ MAKE_PAIR( 0x006C, 0xFF4C ), // LATIN SMALL LETTER L --> FULLWIDTH LATIN SMALL LETTER L
+ MAKE_PAIR( 0x006D, 0xFF4D ), // LATIN SMALL LETTER M --> FULLWIDTH LATIN SMALL LETTER M
+ MAKE_PAIR( 0x006E, 0xFF4E ), // LATIN SMALL LETTER N --> FULLWIDTH LATIN SMALL LETTER N
+ MAKE_PAIR( 0x006F, 0xFF4F ), // LATIN SMALL LETTER O --> FULLWIDTH LATIN SMALL LETTER O
+ MAKE_PAIR( 0x0070, 0xFF50 ), // LATIN SMALL LETTER P --> FULLWIDTH LATIN SMALL LETTER P
+ MAKE_PAIR( 0x0071, 0xFF51 ), // LATIN SMALL LETTER Q --> FULLWIDTH LATIN SMALL LETTER Q
+ MAKE_PAIR( 0x0072, 0xFF52 ), // LATIN SMALL LETTER R --> FULLWIDTH LATIN SMALL LETTER R
+ MAKE_PAIR( 0x0073, 0xFF53 ), // LATIN SMALL LETTER S --> FULLWIDTH LATIN SMALL LETTER S
+ MAKE_PAIR( 0x0074, 0xFF54 ), // LATIN SMALL LETTER T --> FULLWIDTH LATIN SMALL LETTER T
+ MAKE_PAIR( 0x0075, 0xFF55 ), // LATIN SMALL LETTER U --> FULLWIDTH LATIN SMALL LETTER U
+ MAKE_PAIR( 0x0076, 0xFF56 ), // LATIN SMALL LETTER V --> FULLWIDTH LATIN SMALL LETTER V
+ MAKE_PAIR( 0x0077, 0xFF57 ), // LATIN SMALL LETTER W --> FULLWIDTH LATIN SMALL LETTER W
+ MAKE_PAIR( 0x0078, 0xFF58 ), // LATIN SMALL LETTER X --> FULLWIDTH LATIN SMALL LETTER X
+ MAKE_PAIR( 0x0079, 0xFF59 ), // LATIN SMALL LETTER Y --> FULLWIDTH LATIN SMALL LETTER Y
+ MAKE_PAIR( 0x007A, 0xFF5A ), // LATIN SMALL LETTER Z --> FULLWIDTH LATIN SMALL LETTER Z
+ MAKE_PAIR( 0x007B, 0xFF5B ), // LEFT CURLY BRACKET --> FULLWIDTH LEFT CURLY BRACKET
+ MAKE_PAIR( 0x007C, 0xFF5C ), // VERTICAL LINE --> FULLWIDTH VERTICAL LINE
+ MAKE_PAIR( 0x007D, 0xFF5D ), // RIGHT CURLY BRACKET --> FULLWIDTH RIGHT CURLY BRACKET
+ MAKE_PAIR( 0x007E, 0xFF5E ), // TILDE --> FULLWIDTH TILDE
+ MAKE_PAIR( 0x00A2, 0xFFE0 ), // CENT SIGN --> FULLWIDTH CENT SIGN
+ MAKE_PAIR( 0x00A3, 0xFFE1 ), // POUND SIGN --> FULLWIDTH POUND SIGN
+ MAKE_PAIR( 0x00A5, 0xFFE5 ), // YEN SIGN --> FULLWIDTH YEN SIGN
+ MAKE_PAIR( 0x00A6, 0xFFE4 ), // BROKEN BAR --> FULLWIDTH BROKEN BAR
+ MAKE_PAIR( 0x00AC, 0xFFE2 ), // NOT SIGN --> FULLWIDTH NOT SIGN
+ MAKE_PAIR( 0x00AF, 0xFFE3 ), // MACRON --> FULLWIDTH MACRON
+ MAKE_PAIR( 0x20A9, 0xFFE6 ), // WON SIGN --> FULLWIDTH WON SIGN
+ MAKE_PAIR( 0xFF61, 0x3002 ), // HALFWIDTH IDEOGRAPHIC FULL STOP --> IDEOGRAPHIC FULL STOP
+ MAKE_PAIR( 0xFF62, 0x300C ), // HALFWIDTH LEFT CORNER BRACKET --> LEFT CORNER BRACKET
+ MAKE_PAIR( 0xFF63, 0x300D ), // HALFWIDTH RIGHT CORNER BRACKET --> RIGHT CORNER BRACKET
+ MAKE_PAIR( 0xFF64, 0x3001 ), // HALFWIDTH IDEOGRAPHIC COMMA --> IDEOGRAPHIC COMMA
+ MAKE_PAIR( 0xFF65, 0x30FB ), // HALFWIDTH KATAKANA MIDDLE DOT --> KATAKANA MIDDLE DOT
+ MAKE_PAIR( 0xFF66, 0x30F2 ), // HALFWIDTH KATAKANA LETTER WO --> KATAKANA LETTER WO
+ MAKE_PAIR( 0xFF67, 0x30A1 ), // HALFWIDTH KATAKANA LETTER SMALL A --> KATAKANA LETTER SMALL A
+ MAKE_PAIR( 0xFF68, 0x30A3 ), // HALFWIDTH KATAKANA LETTER SMALL I --> KATAKANA LETTER SMALL I
+ MAKE_PAIR( 0xFF69, 0x30A5 ), // HALFWIDTH KATAKANA LETTER SMALL U --> KATAKANA LETTER SMALL U
+ MAKE_PAIR( 0xFF6A, 0x30A7 ), // HALFWIDTH KATAKANA LETTER SMALL E --> KATAKANA LETTER SMALL E
+ MAKE_PAIR( 0xFF6B, 0x30A9 ), // HALFWIDTH KATAKANA LETTER SMALL O --> KATAKANA LETTER SMALL O
+ MAKE_PAIR( 0xFF6C, 0x30E3 ), // HALFWIDTH KATAKANA LETTER SMALL YA --> KATAKANA LETTER SMALL YA
+ MAKE_PAIR( 0xFF6D, 0x30E5 ), // HALFWIDTH KATAKANA LETTER SMALL YU --> KATAKANA LETTER SMALL YU
+ MAKE_PAIR( 0xFF6E, 0x30E7 ), // HALFWIDTH KATAKANA LETTER SMALL YO --> KATAKANA LETTER SMALL YO
+ MAKE_PAIR( 0xFF6F, 0x30C3 ), // HALFWIDTH KATAKANA LETTER SMALL TU --> KATAKANA LETTER SMALL TU
+ MAKE_PAIR( 0xFF70, 0x30FC ), // HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK --> KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ MAKE_PAIR( 0xFF71, 0x30A2 ), // HALFWIDTH KATAKANA LETTER A --> KATAKANA LETTER A
+ MAKE_PAIR( 0xFF72, 0x30A4 ), // HALFWIDTH KATAKANA LETTER I --> KATAKANA LETTER I
+ MAKE_PAIR( 0xFF73, 0x30A6 ), // HALFWIDTH KATAKANA LETTER U --> KATAKANA LETTER U
+ MAKE_PAIR( 0xFF74, 0x30A8 ), // HALFWIDTH KATAKANA LETTER E --> KATAKANA LETTER E
+ MAKE_PAIR( 0xFF75, 0x30AA ), // HALFWIDTH KATAKANA LETTER O --> KATAKANA LETTER O
+ MAKE_PAIR( 0xFF76, 0x30AB ), // HALFWIDTH KATAKANA LETTER KA --> KATAKANA LETTER KA
+ MAKE_PAIR( 0xFF77, 0x30AD ), // HALFWIDTH KATAKANA LETTER KI --> KATAKANA LETTER KI
+ MAKE_PAIR( 0xFF78, 0x30AF ), // HALFWIDTH KATAKANA LETTER KU --> KATAKANA LETTER KU
+ MAKE_PAIR( 0xFF79, 0x30B1 ), // HALFWIDTH KATAKANA LETTER KE --> KATAKANA LETTER KE
+ MAKE_PAIR( 0xFF7A, 0x30B3 ), // HALFWIDTH KATAKANA LETTER KO --> KATAKANA LETTER KO
+ MAKE_PAIR( 0xFF7B, 0x30B5 ), // HALFWIDTH KATAKANA LETTER SA --> KATAKANA LETTER SA
+ MAKE_PAIR( 0xFF7C, 0x30B7 ), // HALFWIDTH KATAKANA LETTER SI --> KATAKANA LETTER SI
+ MAKE_PAIR( 0xFF7D, 0x30B9 ), // HALFWIDTH KATAKANA LETTER SU --> KATAKANA LETTER SU
+ MAKE_PAIR( 0xFF7E, 0x30BB ), // HALFWIDTH KATAKANA LETTER SE --> KATAKANA LETTER SE
+ MAKE_PAIR( 0xFF7F, 0x30BD ), // HALFWIDTH KATAKANA LETTER SO --> KATAKANA LETTER SO
+ MAKE_PAIR( 0xFF80, 0x30BF ), // HALFWIDTH KATAKANA LETTER TA --> KATAKANA LETTER TA
+ MAKE_PAIR( 0xFF81, 0x30C1 ), // HALFWIDTH KATAKANA LETTER TI --> KATAKANA LETTER TI
+ MAKE_PAIR( 0xFF82, 0x30C4 ), // HALFWIDTH KATAKANA LETTER TU --> KATAKANA LETTER TU
+ MAKE_PAIR( 0xFF83, 0x30C6 ), // HALFWIDTH KATAKANA LETTER TE --> KATAKANA LETTER TE
+ MAKE_PAIR( 0xFF84, 0x30C8 ), // HALFWIDTH KATAKANA LETTER TO --> KATAKANA LETTER TO
+ MAKE_PAIR( 0xFF85, 0x30CA ), // HALFWIDTH KATAKANA LETTER NA --> KATAKANA LETTER NA
+ MAKE_PAIR( 0xFF86, 0x30CB ), // HALFWIDTH KATAKANA LETTER NI --> KATAKANA LETTER NI
+ MAKE_PAIR( 0xFF87, 0x30CC ), // HALFWIDTH KATAKANA LETTER NU --> KATAKANA LETTER NU
+ MAKE_PAIR( 0xFF88, 0x30CD ), // HALFWIDTH KATAKANA LETTER NE --> KATAKANA LETTER NE
+ MAKE_PAIR( 0xFF89, 0x30CE ), // HALFWIDTH KATAKANA LETTER NO --> KATAKANA LETTER NO
+ MAKE_PAIR( 0xFF8A, 0x30CF ), // HALFWIDTH KATAKANA LETTER HA --> KATAKANA LETTER HA
+ MAKE_PAIR( 0xFF8B, 0x30D2 ), // HALFWIDTH KATAKANA LETTER HI --> KATAKANA LETTER HI
+ MAKE_PAIR( 0xFF8C, 0x30D5 ), // HALFWIDTH KATAKANA LETTER HU --> KATAKANA LETTER HU
+ MAKE_PAIR( 0xFF8D, 0x30D8 ), // HALFWIDTH KATAKANA LETTER HE --> KATAKANA LETTER HE
+ MAKE_PAIR( 0xFF8E, 0x30DB ), // HALFWIDTH KATAKANA LETTER HO --> KATAKANA LETTER HO
+ MAKE_PAIR( 0xFF8F, 0x30DE ), // HALFWIDTH KATAKANA LETTER MA --> KATAKANA LETTER MA
+ MAKE_PAIR( 0xFF90, 0x30DF ), // HALFWIDTH KATAKANA LETTER MI --> KATAKANA LETTER MI
+ MAKE_PAIR( 0xFF91, 0x30E0 ), // HALFWIDTH KATAKANA LETTER MU --> KATAKANA LETTER MU
+ MAKE_PAIR( 0xFF92, 0x30E1 ), // HALFWIDTH KATAKANA LETTER ME --> KATAKANA LETTER ME
+ MAKE_PAIR( 0xFF93, 0x30E2 ), // HALFWIDTH KATAKANA LETTER MO --> KATAKANA LETTER MO
+ MAKE_PAIR( 0xFF94, 0x30E4 ), // HALFWIDTH KATAKANA LETTER YA --> KATAKANA LETTER YA
+ MAKE_PAIR( 0xFF95, 0x30E6 ), // HALFWIDTH KATAKANA LETTER YU --> KATAKANA LETTER YU
+ MAKE_PAIR( 0xFF96, 0x30E8 ), // HALFWIDTH KATAKANA LETTER YO --> KATAKANA LETTER YO
+ MAKE_PAIR( 0xFF97, 0x30E9 ), // HALFWIDTH KATAKANA LETTER RA --> KATAKANA LETTER RA
+ MAKE_PAIR( 0xFF98, 0x30EA ), // HALFWIDTH KATAKANA LETTER RI --> KATAKANA LETTER RI
+ MAKE_PAIR( 0xFF99, 0x30EB ), // HALFWIDTH KATAKANA LETTER RU --> KATAKANA LETTER RU
+ MAKE_PAIR( 0xFF9A, 0x30EC ), // HALFWIDTH KATAKANA LETTER RE --> KATAKANA LETTER RE
+ MAKE_PAIR( 0xFF9B, 0x30ED ), // HALFWIDTH KATAKANA LETTER RO --> KATAKANA LETTER RO
+ MAKE_PAIR( 0xFF9C, 0x30EF ), // HALFWIDTH KATAKANA LETTER WA --> KATAKANA LETTER WA
+ MAKE_PAIR( 0xFF9D, 0x30F3 ), // HALFWIDTH KATAKANA LETTER N --> KATAKANA LETTER N
+ MAKE_PAIR( 0xFF9E, 0x3099 ), // HALFWIDTH KATAKANA VOICED SOUND MARK --> COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ MAKE_PAIR( 0xFF9F, 0x309A ), // HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK --> COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ MAKE_PAIR( 0xFFA0, 0x3164 ), // HALFWIDTH HANGUL FILLER --> HANGUL FILLER
+ MAKE_PAIR( 0xFFA1, 0x3131 ), // HALFWIDTH HANGUL LETTER KIYEOK --> HANGUL LETTER KIYEOK
+ MAKE_PAIR( 0xFFA2, 0x3132 ), // HALFWIDTH HANGUL LETTER SSANGKIYEOK --> HANGUL LETTER SSANGKIYEOK
+ MAKE_PAIR( 0xFFA3, 0x3133 ), // HALFWIDTH HANGUL LETTER KIYEOK-SIOS --> HANGUL LETTER KIYEOK-SIOS
+ MAKE_PAIR( 0xFFA4, 0x3134 ), // HALFWIDTH HANGUL LETTER NIEUN --> HANGUL LETTER NIEUN
+ MAKE_PAIR( 0xFFA5, 0x3135 ), // HALFWIDTH HANGUL LETTER NIEUN-CIEUC --> HANGUL LETTER NIEUN-CIEUC
+ MAKE_PAIR( 0xFFA6, 0x3136 ), // HALFWIDTH HANGUL LETTER NIEUN-HIEUH --> HANGUL LETTER NIEUN-HIEUH
+ MAKE_PAIR( 0xFFA7, 0x3137 ), // HALFWIDTH HANGUL LETTER TIKEUT --> HANGUL LETTER TIKEUT
+ MAKE_PAIR( 0xFFA8, 0x3138 ), // HALFWIDTH HANGUL LETTER SSANGTIKEUT --> HANGUL LETTER SSANGTIKEUT
+ MAKE_PAIR( 0xFFA9, 0x3139 ), // HALFWIDTH HANGUL LETTER RIEUL --> HANGUL LETTER RIEUL
+ MAKE_PAIR( 0xFFAA, 0x313A ), // HALFWIDTH HANGUL LETTER RIEUL-KIYEOK --> HANGUL LETTER RIEUL-KIYEOK
+ MAKE_PAIR( 0xFFAB, 0x313B ), // HALFWIDTH HANGUL LETTER RIEUL-MIEUM --> HANGUL LETTER RIEUL-MIEUM
+ MAKE_PAIR( 0xFFAC, 0x313C ), // HALFWIDTH HANGUL LETTER RIEUL-PIEUP --> HANGUL LETTER RIEUL-PIEUP
+ MAKE_PAIR( 0xFFAD, 0x313D ), // HALFWIDTH HANGUL LETTER RIEUL-SIOS --> HANGUL LETTER RIEUL-SIOS
+ MAKE_PAIR( 0xFFAE, 0x313E ), // HALFWIDTH HANGUL LETTER RIEUL-THIEUTH --> HANGUL LETTER RIEUL-THIEUTH
+ MAKE_PAIR( 0xFFAF, 0x313F ), // HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH --> HANGUL LETTER RIEUL-PHIEUPH
+ MAKE_PAIR( 0xFFB0, 0x3140 ), // HALFWIDTH HANGUL LETTER RIEUL-HIEUH --> HANGUL LETTER RIEUL-HIEUH
+ MAKE_PAIR( 0xFFB1, 0x3141 ), // HALFWIDTH HANGUL LETTER MIEUM --> HANGUL LETTER MIEUM
+ MAKE_PAIR( 0xFFB2, 0x3142 ), // HALFWIDTH HANGUL LETTER PIEUP --> HANGUL LETTER PIEUP
+ MAKE_PAIR( 0xFFB3, 0x3143 ), // HALFWIDTH HANGUL LETTER SSANGPIEUP --> HANGUL LETTER SSANGPIEUP
+ MAKE_PAIR( 0xFFB4, 0x3144 ), // HALFWIDTH HANGUL LETTER PIEUP-SIOS --> HANGUL LETTER PIEUP-SIOS
+ MAKE_PAIR( 0xFFB5, 0x3145 ), // HALFWIDTH HANGUL LETTER SIOS --> HANGUL LETTER SIOS
+ MAKE_PAIR( 0xFFB6, 0x3146 ), // HALFWIDTH HANGUL LETTER SSANGSIOS --> HANGUL LETTER SSANGSIOS
+ MAKE_PAIR( 0xFFB7, 0x3147 ), // HALFWIDTH HANGUL LETTER IEUNG --> HANGUL LETTER IEUNG
+ MAKE_PAIR( 0xFFB8, 0x3148 ), // HALFWIDTH HANGUL LETTER CIEUC --> HANGUL LETTER CIEUC
+ MAKE_PAIR( 0xFFB9, 0x3149 ), // HALFWIDTH HANGUL LETTER SSANGCIEUC --> HANGUL LETTER SSANGCIEUC
+ MAKE_PAIR( 0xFFBA, 0x314A ), // HALFWIDTH HANGUL LETTER CHIEUCH --> HANGUL LETTER CHIEUCH
+ MAKE_PAIR( 0xFFBB, 0x314B ), // HALFWIDTH HANGUL LETTER KHIEUKH --> HANGUL LETTER KHIEUKH
+ MAKE_PAIR( 0xFFBC, 0x314C ), // HALFWIDTH HANGUL LETTER THIEUTH --> HANGUL LETTER THIEUTH
+ MAKE_PAIR( 0xFFBD, 0x314D ), // HALFWIDTH HANGUL LETTER PHIEUPH --> HANGUL LETTER PHIEUPH
+ MAKE_PAIR( 0xFFBE, 0x314E ), // HALFWIDTH HANGUL LETTER HIEUH --> HANGUL LETTER HIEUH
+ MAKE_PAIR( 0xFFC2, 0x314F ), // HALFWIDTH HANGUL LETTER A --> HANGUL LETTER A
+ MAKE_PAIR( 0xFFC3, 0x3150 ), // HALFWIDTH HANGUL LETTER AE --> HANGUL LETTER AE
+ MAKE_PAIR( 0xFFC4, 0x3151 ), // HALFWIDTH HANGUL LETTER YA --> HANGUL LETTER YA
+ MAKE_PAIR( 0xFFC5, 0x3152 ), // HALFWIDTH HANGUL LETTER YAE --> HANGUL LETTER YAE
+ MAKE_PAIR( 0xFFC6, 0x3153 ), // HALFWIDTH HANGUL LETTER EO --> HANGUL LETTER EO
+ MAKE_PAIR( 0xFFC7, 0x3154 ), // HALFWIDTH HANGUL LETTER E --> HANGUL LETTER E
+ MAKE_PAIR( 0xFFCA, 0x3155 ), // HALFWIDTH HANGUL LETTER YEO --> HANGUL LETTER YEO
+ MAKE_PAIR( 0xFFCB, 0x3156 ), // HALFWIDTH HANGUL LETTER YE --> HANGUL LETTER YE
+ MAKE_PAIR( 0xFFCC, 0x3157 ), // HALFWIDTH HANGUL LETTER O --> HANGUL LETTER O
+ MAKE_PAIR( 0xFFCD, 0x3158 ), // HALFWIDTH HANGUL LETTER WA --> HANGUL LETTER WA
+ MAKE_PAIR( 0xFFCE, 0x3159 ), // HALFWIDTH HANGUL LETTER WAE --> HANGUL LETTER WAE
+ MAKE_PAIR( 0xFFCF, 0x315A ), // HALFWIDTH HANGUL LETTER OE --> HANGUL LETTER OE
+ MAKE_PAIR( 0xFFD2, 0x315B ), // HALFWIDTH HANGUL LETTER YO --> HANGUL LETTER YO
+ MAKE_PAIR( 0xFFD3, 0x315C ), // HALFWIDTH HANGUL LETTER U --> HANGUL LETTER U
+ MAKE_PAIR( 0xFFD4, 0x315D ), // HALFWIDTH HANGUL LETTER WEO --> HANGUL LETTER WEO
+ MAKE_PAIR( 0xFFD5, 0x315E ), // HALFWIDTH HANGUL LETTER WE --> HANGUL LETTER WE
+ MAKE_PAIR( 0xFFD6, 0x315F ), // HALFWIDTH HANGUL LETTER WI --> HANGUL LETTER WI
+ MAKE_PAIR( 0xFFD7, 0x3160 ), // HALFWIDTH HANGUL LETTER YU --> HANGUL LETTER YU
+ MAKE_PAIR( 0xFFDA, 0x3161 ), // HALFWIDTH HANGUL LETTER EU --> HANGUL LETTER EU
+ MAKE_PAIR( 0xFFDB, 0x3162 ), // HALFWIDTH HANGUL LETTER YI --> HANGUL LETTER YI
+ MAKE_PAIR( 0xFFDC, 0x3163 ), // HALFWIDTH HANGUL LETTER I --> HANGUL LETTER I
+ MAKE_PAIR( 0xFFE8, 0x2502 ), // HALFWIDTH FORMS LIGHT VERTICAL --> BOX DRAWINGS LIGHT VERTICAL
+ MAKE_PAIR( 0xFFE9, 0x2190 ), // HALFWIDTH LEFTWARDS ARROW --> LEFTWARDS ARROW
+ MAKE_PAIR( 0xFFEA, 0x2191 ), // HALFWIDTH UPWARDS ARROW --> UPWARDS ARROW
+ MAKE_PAIR( 0xFFEB, 0x2192 ), // HALFWIDTH RIGHTWARDS ARROW --> RIGHTWARDS ARROW
+ MAKE_PAIR( 0xFFEC, 0x2193 ), // HALFWIDTH DOWNWARDS ARROW --> DOWNWARDS ARROW
+ MAKE_PAIR( 0xFFED, 0x25A0 ), // HALFWIDTH BLACK SQUARE --> BLACK SQUARE
+ MAKE_PAIR( 0xFFEE, 0x25CB ) // HALFWIDTH WHITE CIRCLE --> WHITE CIRCLE
+};
+
+} } } }
+
+#endif