• R/O
  • HTTP
  • SSH
  • HTTPS

NKFCocoa: Commit


Commit MetaInfo

Revision7a43fc248d0e247989d041f15f49276d67354e23 (tree)
Time2009-11-09 06:44:02
Authorhippos <hipposla@gmai...>
Commiterhippos

Log Message

add to nkf-2.0.9 orignal source

Change Summary

Incremental Difference

--- /dev/null
+++ b/nkf/config.h
@@ -0,0 +1,51 @@
1+#ifndef _CONFIG_H_
2+#define _CONFIG_H_
3+
4+/* UTF8 input and output */
5+#define UTF8_INPUT_ENABLE
6+#define UTF8_OUTPUT_ENABLE
7+
8+/* invert characters invalid in Shift_JIS to CP932 */
9+#define SHIFTJIS_CP932
10+
11+/* fix input encoding when given by option */
12+#define INPUT_CODE_FIX
13+
14+/* --overwrite option */
15+/* by Satoru Takabayashi <ccsatoru@vega.aichi-u.ac.jp> */
16+#define OVERWRITE
17+
18+/* --cap-input, --url-input option */
19+#define INPUT_OPTION
20+
21+/* --numchar-input option */
22+#define NUMCHAR_OPTION
23+
24+/* --debug, --no-output option */
25+#define CHECK_OPTION
26+
27+/* JIS X0212 */
28+#define X0212_ENABLE
29+
30+/* --exec-in, --exec-out option
31+ * require pipe, fork, execvp and so on.
32+ * please undef this on MS-DOS, MinGW
33+ * this is still buggy arround child process
34+ */
35+/* #define EXEC_IO */
36+
37+/* Unicode Normalization */
38+#define UNICODE_NORMALIZATION
39+
40+/*
41+ * Select Default Output Encoding
42+ *
43+ */
44+
45+/* #define DEFAULT_CODE_JIS */
46+/* #define DEFAULT_CODE_SJIS */
47+/* #define DEFAULT_CODE_WINDOWS_31J */
48+/* #define DEFAULT_CODE_EUC */
49+/* #define DEFAULT_CODE_UTF8 */
50+
51+#endif /* _CONFIG_H_ */
--- /dev/null
+++ b/nkf/nkf.h
@@ -0,0 +1,192 @@
1+/*
2+ *
3+ * nkf.h - Header file for nkf
4+ *
5+ * $Id: nkf.h,v 1.6 2008/11/07 02:43:43 naruse Exp $
6+ */
7+
8+#ifndef NKF_H
9+
10+/* Wrapper of configurations */
11+
12+#ifndef MIME_DECODE_DEFAULT
13+#define MIME_DECODE_DEFAULT STRICT_MIME
14+#endif
15+#ifndef X0201_DEFAULT
16+#define X0201_DEFAULT TRUE
17+#endif
18+
19+#if DEFAULT_NEWLINE == 0x0D0A
20+#define PUT_NEWLINE(func) do {\
21+ func(0x0D);\
22+ func(0x0A);\
23+} while (0)
24+#define OCONV_NEWLINE(func) do {\
25+ func(0, 0x0D);\
26+ func(0, 0x0A);\
27+} while (0)
28+#elif DEFAULT_NEWLINE == 0x0D
29+#define PUT_NEWLINE(func) func(0x0D)
30+#define OCONV_NEWLINE(func) func(0, 0x0D)
31+#else
32+#define DEFAULT_NEWLINE 0x0A
33+#define PUT_NEWLINE(func) func(0x0A)
34+#define OCONV_NEWLINE(func) func(0, 0x0A)
35+#endif
36+#ifdef HELP_OUTPUT_STDERR
37+#define HELP_OUTPUT stderr
38+#else
39+#define HELP_OUTPUT stdout
40+#endif
41+
42+
43+/* Compatibility definitions */
44+
45+#ifdef nkf_char
46+#elif defined(INT_IS_SHORT)
47+typedef long nkf_char;
48+#define NKF_INT32_C(n) (n##L)
49+#else
50+typedef int nkf_char;
51+#define NKF_INT32_C(n) (n)
52+#endif
53+
54+#if (defined(__TURBOC__) || defined(_MSC_VER) || defined(LSI_C) || (defined(__WATCOMC__) && defined(__386__) && !defined(__LINUX__)) || defined(__MINGW32__) || defined(__EMX__) || defined(__MSDOS__) || defined(__WINDOWS__) || defined(__DOS__) || defined(__OS2__)) && !defined(MSDOS)
55+#define MSDOS
56+#if (defined(__Win32__) || defined(_WIN32)) && !defined(__WIN32__)
57+#define __WIN32__
58+#endif
59+#endif
60+
61+#ifdef PERL_XS
62+#undef OVERWRITE
63+#endif
64+
65+#ifndef PERL_XS
66+#include <stdio.h>
67+#endif
68+
69+#include <stdlib.h>
70+#include <string.h>
71+
72+#if defined(MSDOS) || defined(__OS2__)
73+#include <fcntl.h>
74+#include <io.h>
75+#if defined(_MSC_VER) || defined(__WATCOMC__)
76+#define mktemp _mktemp
77+#endif
78+#endif
79+
80+#ifdef MSDOS
81+#ifdef LSI_C
82+#define setbinmode(fp) fsetbin(fp)
83+#elif defined(__DJGPP__)
84+#include <libc/dosio.h>
85+void setbinmode(FILE *fp)
86+{
87+ /* we do not use libc's setmode(), which changes COOKED/RAW mode in device. */
88+ int fd, m;
89+ fd = fileno(fp);
90+ m = (__file_handle_modes[fd] & (~O_TEXT)) | O_BINARY;
91+ __file_handle_set(fd, m);
92+}
93+#else /* Microsoft C, Turbo C */
94+#define setbinmode(fp) setmode(fileno(fp), O_BINARY)
95+#endif
96+#else /* UNIX */
97+#define setbinmode(fp)
98+#endif
99+
100+#ifdef _IOFBF /* SysV and MSDOS, Windows */
101+#define setvbuffer(fp, buf, size) setvbuf(fp, buf, _IOFBF, size)
102+#else /* BSD */
103+#define setvbuffer(fp, buf, size) setbuffer(fp, buf, size)
104+#endif
105+
106+/*Borland C++ 4.5 EasyWin*/
107+#if defined(__TURBOC__) && defined(_Windows) && !defined(__WIN32__) /*Easy Win */
108+#define EASYWIN
109+#ifndef __WIN16__
110+#define __WIN16__
111+#endif
112+#include <windows.h>
113+#endif
114+
115+#ifdef OVERWRITE
116+/* added by satoru@isoternet.org */
117+#if defined(__EMX__)
118+#include <sys/types.h>
119+#endif
120+#include <sys/stat.h>
121+#if !defined(MSDOS) || defined(__DJGPP__) /* UNIX, djgpp */
122+#include <unistd.h>
123+#if defined(__WATCOMC__)
124+#include <sys/utime.h>
125+#else
126+#include <utime.h>
127+#endif
128+#else /* defined(MSDOS) */
129+#ifdef __WIN32__
130+#ifdef __BORLANDC__ /* BCC32 */
131+#include <utime.h>
132+#else /* !defined(__BORLANDC__) */
133+#include <sys/utime.h>
134+#endif /* (__BORLANDC__) */
135+#else /* !defined(__WIN32__) */
136+#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__WATCOMC__) || defined(__OS2__) || defined(__EMX__) || defined(__IBMC__) || defined(__IBMCPP__) /* VC++, MinGW, Watcom, emx+gcc, IBM VAC++ */
137+#include <sys/utime.h>
138+#elif defined(__TURBOC__) /* BCC */
139+#include <utime.h>
140+#elif defined(LSI_C) /* LSI C */
141+#endif /* (__WIN32__) */
142+#endif
143+#endif
144+#endif
145+
146+#if !defined(DEFAULT_CODE_JIS) && !defined(DEFAULT_CODE_SJIS) && \
147+ !defined(DEFAULT_CODE_WINDOWS_31J) && !defined(DEFAULT_CODE_EUC) && \
148+ !defined(DEFAULT_CODE_UTF8) && !defined(DEFAULT_CODE_LOCALE)
149+#define DEFAULT_CODE_LOCALE
150+#endif
151+
152+#ifdef DEFAULT_CODE_LOCALE
153+
154+#if defined(__WIN32__) /* not win32 should be posix */
155+# ifndef HAVE_LOCALE_H
156+# define HAVE_LOCALE_H
157+# endif
158+#elif defined(__OS2__)
159+# undef HAVE_LANGINFO_H /* We do not use kLIBC's langinfo. */
160+# ifndef HAVE_LOCALE_H
161+# define HAVE_LOCALE_H
162+# endif
163+#elif defined(MSDOS)
164+# ifndef HAVE_LOCALE_H
165+# define HAVE_LOCALE_H
166+# endif
167+#else
168+# ifndef HAVE_LANGINFO_H
169+# define HAVE_LANGINFO_H
170+# endif
171+# ifndef HAVE_LOCALE_H
172+# define HAVE_LOCALE_H
173+# endif
174+#endif
175+
176+#ifdef HAVE_LANGINFO_H
177+#include <langinfo.h>
178+#endif
179+#ifdef HAVE_LOCALE_H
180+#include <locale.h>
181+#endif
182+
183+#endif /* DEFAULT_CODE_LOCALE */
184+
185+#define FALSE 0
186+#define TRUE 1
187+
188+#ifdef WIN32DLL
189+#include "nkf32.h"
190+#endif
191+
192+#endif /* NKF_H */
--- /dev/null
+++ b/nkf/nkf.m
@@ -0,0 +1,6654 @@
1+/*
2+ * Copyright (c) 1987, Fujitsu LTD. (Itaru ICHIKAWA).
3+ * Copyright (c) 1996-2009, The nkf Project.
4+ *
5+ * This software is provided 'as-is', without any express or implied
6+ * warranty. In no event will the authors be held liable for any damages
7+ * arising from the use of this software.
8+ *
9+ * Permission is granted to anyone to use this software for any purpose,
10+ * including commercial applications, and to alter it and redistribute it
11+ * freely, subject to the following restrictions:
12+ *
13+ * 1. The origin of this software must not be misrepresented; you must not
14+ * claim that you wrote the original software. If you use this software
15+ * in a product, an acknowledgment in the product documentation would be
16+ * appreciated but is not required.
17+ *
18+ * 2. Altered source versions must be plainly marked as such, and must not be
19+ * misrepresented as being the original software.
20+ *
21+ * 3. This notice may not be removed or altered from any source distribution.
22+ */
23+#define NKF_VERSION "2.0.9"
24+#define NKF_RELEASE_DATE "2009-06-23"
25+#define COPY_RIGHT \
26+ "Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).\n" \
27+ "Copyright (C) 1996-2009, The nkf Project."
28+
29+#include "config.h"
30+#include "nkf.h"
31+#include "utf8tbl.h"
32+#ifdef __WIN32__
33+#include <windows.h>
34+#include <locale.h>
35+#endif
36+#if defined(__OS2__)
37+# define INCL_DOS
38+# define INCL_DOSERRORS
39+# include <os2.h>
40+#endif
41+#include <assert.h>
42+
43+
44+/* state of output_mode and input_mode
45+
46+ c2 0 means ASCII
47+ JIS_X_0201_1976_K
48+ ISO_8859_1
49+ JIS_X_0208
50+ EOF all termination
51+ c1 32bit data
52+
53+ */
54+
55+/* MIME ENCODE */
56+
57+#define FIXED_MIME 7
58+#define STRICT_MIME 8
59+
60+/* byte order */
61+enum byte_order {
62+ ENDIAN_BIG = 1,
63+ ENDIAN_LITTLE = 2,
64+ ENDIAN_2143 = 3,
65+ ENDIAN_3412 = 4
66+};
67+
68+/* ASCII CODE */
69+
70+#define BS 0x08
71+#define TAB 0x09
72+#define LF 0x0a
73+#define CR 0x0d
74+#define ESC 0x1b
75+#define SP 0x20
76+#define DEL 0x7f
77+#define SI 0x0f
78+#define SO 0x0e
79+#define SS2 0x8e
80+#define SS3 0x8f
81+#define CRLF 0x0D0A
82+
83+
84+/* encodings */
85+
86+enum nkf_encodings {
87+ ASCII,
88+ ISO_8859_1,
89+ ISO_2022_JP,
90+ CP50220,
91+ CP50221,
92+ CP50222,
93+ ISO_2022_JP_1,
94+ ISO_2022_JP_3,
95+ ISO_2022_JP_2004,
96+ SHIFT_JIS,
97+ WINDOWS_31J,
98+ CP10001,
99+ EUC_JP,
100+ EUCJP_NKF,
101+ CP51932,
102+ EUCJP_MS,
103+ EUCJP_ASCII,
104+ SHIFT_JISX0213,
105+ SHIFT_JIS_2004,
106+ EUC_JISX0213,
107+ EUC_JIS_2004,
108+ UTF_8,
109+ UTF_8N,
110+ UTF_8_BOM,
111+ UTF8_MAC,
112+ UTF_16,
113+ UTF_16BE,
114+ UTF_16BE_BOM,
115+ UTF_16LE,
116+ UTF_16LE_BOM,
117+ UTF_32,
118+ UTF_32BE,
119+ UTF_32BE_BOM,
120+ UTF_32LE,
121+ UTF_32LE_BOM,
122+ BINARY,
123+ NKF_ENCODING_TABLE_SIZE,
124+ JIS_X_0201_1976_K = 0x1013, /* I */ /* JIS C 6220-1969 */
125+ /* JIS_X_0201_1976_R = 0x1014, */ /* J */ /* JIS C 6220-1969 */
126+ /* JIS_X_0208_1978 = 0x1040, */ /* @ */ /* JIS C 6226-1978 */
127+ /* JIS_X_0208_1983 = 0x1087, */ /* B */ /* JIS C 6226-1983 */
128+ JIS_X_0208 = 0x1168, /* @B */
129+ JIS_X_0212 = 0x1159, /* D */
130+ /* JIS_X_0213_2000_1 = 0x1228, */ /* O */
131+ JIS_X_0213_2 = 0x1229, /* P */
132+ JIS_X_0213_1 = 0x1233 /* Q */
133+};
134+
135+static nkf_char s_iconv(nkf_char c2, nkf_char c1, nkf_char c0);
136+static nkf_char e_iconv(nkf_char c2, nkf_char c1, nkf_char c0);
137+static nkf_char w_iconv(nkf_char c2, nkf_char c1, nkf_char c0);
138+static nkf_char w_iconv16(nkf_char c2, nkf_char c1, nkf_char c0);
139+static nkf_char w_iconv32(nkf_char c2, nkf_char c1, nkf_char c0);
140+static void j_oconv(nkf_char c2, nkf_char c1);
141+static void s_oconv(nkf_char c2, nkf_char c1);
142+static void e_oconv(nkf_char c2, nkf_char c1);
143+static void w_oconv(nkf_char c2, nkf_char c1);
144+static void w_oconv16(nkf_char c2, nkf_char c1);
145+static void w_oconv32(nkf_char c2, nkf_char c1);
146+
147+typedef struct {
148+ const char *name;
149+ nkf_char (*iconv)(nkf_char c2, nkf_char c1, nkf_char c0);
150+ void (*oconv)(nkf_char c2, nkf_char c1);
151+} nkf_native_encoding;
152+
153+nkf_native_encoding NkfEncodingASCII = { "ASCII", e_iconv, e_oconv };
154+nkf_native_encoding NkfEncodingISO_2022_JP = { "ISO-2022-JP", e_iconv, j_oconv };
155+nkf_native_encoding NkfEncodingShift_JIS = { "Shift_JIS", s_iconv, s_oconv };
156+nkf_native_encoding NkfEncodingEUC_JP = { "EUC-JP", e_iconv, e_oconv };
157+nkf_native_encoding NkfEncodingUTF_8 = { "UTF-8", w_iconv, w_oconv };
158+nkf_native_encoding NkfEncodingUTF_16 = { "UTF-16", w_iconv16, w_oconv16 };
159+nkf_native_encoding NkfEncodingUTF_32 = { "UTF-32", w_iconv32, w_oconv32 };
160+
161+typedef struct {
162+ const int id;
163+ const char *name;
164+ const nkf_native_encoding *base_encoding;
165+} nkf_encoding;
166+
167+nkf_encoding nkf_encoding_table[] = {
168+ {ASCII, "US-ASCII", &NkfEncodingASCII},
169+ {ISO_8859_1, "ISO-8859-1", &NkfEncodingASCII},
170+ {ISO_2022_JP, "ISO-2022-JP", &NkfEncodingISO_2022_JP},
171+ {CP50220, "CP50220", &NkfEncodingISO_2022_JP},
172+ {CP50221, "CP50221", &NkfEncodingISO_2022_JP},
173+ {CP50222, "CP50222", &NkfEncodingISO_2022_JP},
174+ {ISO_2022_JP_1, "ISO-2022-JP-1", &NkfEncodingISO_2022_JP},
175+ {ISO_2022_JP_3, "ISO-2022-JP-3", &NkfEncodingISO_2022_JP},
176+ {ISO_2022_JP_2004, "ISO-2022-JP-2004", &NkfEncodingISO_2022_JP},
177+ {SHIFT_JIS, "Shift_JIS", &NkfEncodingShift_JIS},
178+ {WINDOWS_31J, "Windows-31J", &NkfEncodingShift_JIS},
179+ {CP10001, "CP10001", &NkfEncodingShift_JIS},
180+ {EUC_JP, "EUC-JP", &NkfEncodingEUC_JP},
181+ {EUCJP_NKF, "eucJP-nkf", &NkfEncodingEUC_JP},
182+ {CP51932, "CP51932", &NkfEncodingEUC_JP},
183+ {EUCJP_MS, "eucJP-MS", &NkfEncodingEUC_JP},
184+ {EUCJP_ASCII, "eucJP-ASCII", &NkfEncodingEUC_JP},
185+ {SHIFT_JISX0213, "Shift_JISX0213", &NkfEncodingShift_JIS},
186+ {SHIFT_JIS_2004, "Shift_JIS-2004", &NkfEncodingShift_JIS},
187+ {EUC_JISX0213, "EUC-JISX0213", &NkfEncodingEUC_JP},
188+ {EUC_JIS_2004, "EUC-JIS-2004", &NkfEncodingEUC_JP},
189+ {UTF_8, "UTF-8", &NkfEncodingUTF_8},
190+ {UTF_8N, "UTF-8N", &NkfEncodingUTF_8},
191+ {UTF_8_BOM, "UTF-8-BOM", &NkfEncodingUTF_8},
192+ {UTF8_MAC, "UTF8-MAC", &NkfEncodingUTF_8},
193+ {UTF_16, "UTF-16", &NkfEncodingUTF_16},
194+ {UTF_16BE, "UTF-16BE", &NkfEncodingUTF_16},
195+ {UTF_16BE_BOM, "UTF-16BE-BOM", &NkfEncodingUTF_16},
196+ {UTF_16LE, "UTF-16LE", &NkfEncodingUTF_16},
197+ {UTF_16LE_BOM, "UTF-16LE-BOM", &NkfEncodingUTF_16},
198+ {UTF_32, "UTF-32", &NkfEncodingUTF_32},
199+ {UTF_32BE, "UTF-32BE", &NkfEncodingUTF_32},
200+ {UTF_32BE_BOM, "UTF-32BE-BOM", &NkfEncodingUTF_32},
201+ {UTF_32LE, "UTF-32LE", &NkfEncodingUTF_32},
202+ {UTF_32LE_BOM, "UTF-32LE-BOM", &NkfEncodingUTF_32},
203+ {BINARY, "BINARY", &NkfEncodingASCII},
204+ {-1, NULL, NULL}
205+};
206+
207+struct {
208+ const char *name;
209+ const int id;
210+} encoding_name_to_id_table[] = {
211+ {"US-ASCII", ASCII},
212+ {"ASCII", ASCII},
213+ {"ISO-2022-JP", ISO_2022_JP},
214+ {"ISO2022JP-CP932", CP50220},
215+ {"CP50220", CP50220},
216+ {"CP50221", CP50221},
217+ {"CSISO2022JP", CP50221},
218+ {"CP50222", CP50222},
219+ {"ISO-2022-JP-1", ISO_2022_JP_1},
220+ {"ISO-2022-JP-3", ISO_2022_JP_3},
221+ {"ISO-2022-JP-2004", ISO_2022_JP_2004},
222+ {"SHIFT_JIS", SHIFT_JIS},
223+ {"SJIS", SHIFT_JIS},
224+ {"WINDOWS-31J", WINDOWS_31J},
225+ {"CSWINDOWS31J", WINDOWS_31J},
226+ {"CP932", WINDOWS_31J},
227+ {"MS932", WINDOWS_31J},
228+ {"CP10001", CP10001},
229+ {"EUCJP", EUC_JP},
230+ {"EUC-JP", EUC_JP},
231+ {"EUCJP-NKF", EUCJP_NKF},
232+ {"CP51932", CP51932},
233+ {"EUC-JP-MS", EUCJP_MS},
234+ {"EUCJP-MS", EUCJP_MS},
235+ {"EUCJPMS", EUCJP_MS},
236+ {"EUC-JP-ASCII", EUCJP_ASCII},
237+ {"EUCJP-ASCII", EUCJP_ASCII},
238+ {"SHIFT_JISX0213", SHIFT_JISX0213},
239+ {"SHIFT_JIS-2004", SHIFT_JIS_2004},
240+ {"EUC-JISX0213", EUC_JISX0213},
241+ {"EUC-JIS-2004", EUC_JIS_2004},
242+ {"UTF-8", UTF_8},
243+ {"UTF-8N", UTF_8N},
244+ {"UTF-8-BOM", UTF_8_BOM},
245+ {"UTF8-MAC", UTF8_MAC},
246+ {"UTF-8-MAC", UTF8_MAC},
247+ {"UTF-16", UTF_16},
248+ {"UTF-16BE", UTF_16BE},
249+ {"UTF-16BE-BOM", UTF_16BE_BOM},
250+ {"UTF-16LE", UTF_16LE},
251+ {"UTF-16LE-BOM", UTF_16LE_BOM},
252+ {"UTF-32", UTF_32},
253+ {"UTF-32BE", UTF_32BE},
254+ {"UTF-32BE-BOM", UTF_32BE_BOM},
255+ {"UTF-32LE", UTF_32LE},
256+ {"UTF-32LE-BOM", UTF_32LE_BOM},
257+ {"BINARY", BINARY},
258+ {NULL, -1}
259+};
260+
261+#if defined(DEFAULT_CODE_JIS)
262+#define DEFAULT_ENCIDX ISO_2022_JP
263+#elif defined(DEFAULT_CODE_SJIS)
264+#define DEFAULT_ENCIDX SHIFT_JIS
265+#elif defined(DEFAULT_CODE_WINDOWS_31J)
266+#define DEFAULT_ENCIDX WINDOWS_31J
267+#elif defined(DEFAULT_CODE_EUC)
268+#define DEFAULT_ENCIDX EUC_JP
269+#elif defined(DEFAULT_CODE_UTF8)
270+#define DEFAULT_ENCIDX UTF_8
271+#endif
272+
273+
274+#define is_alnum(c) \
275+ (('a'<=c && c<='z')||('A'<= c && c<='Z')||('0'<=c && c<='9'))
276+
277+/* I don't trust portablity of toupper */
278+#define nkf_toupper(c) (('a'<=c && c<='z')?(c-('a'-'A')):c)
279+#define nkf_isoctal(c) ('0'<=c && c<='7')
280+#define nkf_isdigit(c) ('0'<=c && c<='9')
281+#define nkf_isxdigit(c) (nkf_isdigit(c) || ('a'<=c && c<='f') || ('A'<=c && c <= 'F'))
282+#define nkf_isblank(c) (c == SP || c == TAB)
283+#define nkf_isspace(c) (nkf_isblank(c) || c == CR || c == LF)
284+#define nkf_isalpha(c) (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z'))
285+#define nkf_isalnum(c) (nkf_isdigit(c) || nkf_isalpha(c))
286+#define nkf_isprint(c) (SP<=c && c<='~')
287+#define nkf_isgraph(c) ('!'<=c && c<='~')
288+#define hex2bin(c) (('0'<=c&&c<='9') ? (c-'0') : \
289+ ('A'<=c&&c<='F') ? (c-'A'+10) : \
290+ ('a'<=c&&c<='f') ? (c-'a'+10) : 0)
291+#define bin2hex(c) ("0123456789ABCDEF"[c&15])
292+#define is_eucg3(c2) (((unsigned short)c2 >> 8) == SS3)
293+#define nkf_noescape_mime(c) ((c == CR) || (c == LF) || \
294+ ((c > SP) && (c < DEL) && (c != '?') && (c != '=') && (c != '_') \
295+ && (c != '(') && (c != ')') && (c != '.') && (c != 0x22)))
296+
297+#define is_ibmext_in_sjis(c2) (CP932_TABLE_BEGIN <= c2 && c2 <= CP932_TABLE_END)
298+#define nkf_byte_jisx0201_katakana_p(c) (SP <= c && c <= 0x5F)
299+
300+#define HOLD_SIZE 1024
301+#if defined(INT_IS_SHORT)
302+#define IOBUF_SIZE 2048
303+#else
304+#define IOBUF_SIZE 16384
305+#endif
306+
307+#define DEFAULT_J 'B'
308+#define DEFAULT_R 'B'
309+
310+
311+#define GETA1 0x22
312+#define GETA2 0x2e
313+
314+
315+/* MIME preprocessor */
316+
317+#ifdef EASYWIN /*Easy Win */
318+extern POINT _BufferSize;
319+#endif
320+
321+struct input_code{
322+ const char *name;
323+ nkf_char stat;
324+ nkf_char score;
325+ nkf_char index;
326+ nkf_char buf[3];
327+ void (*status_func)(struct input_code *, nkf_char);
328+ nkf_char (*iconv_func)(nkf_char c2, nkf_char c1, nkf_char c0);
329+ int _file_stat;
330+};
331+
332+static const char *input_codename = NULL; /* NULL: unestablished, "": BINARY */
333+static nkf_encoding *input_encoding = NULL;
334+static nkf_encoding *output_encoding = NULL;
335+
336+#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
337+/* UCS Mapping
338+ * 0: Shift_JIS, eucJP-ascii
339+ * 1: eucJP-ms
340+ * 2: CP932, CP51932
341+ * 3: CP10001
342+ */
343+#define UCS_MAP_ASCII 0
344+#define UCS_MAP_MS 1
345+#define UCS_MAP_CP932 2
346+#define UCS_MAP_CP10001 3
347+static int ms_ucs_map_f = UCS_MAP_ASCII;
348+#endif
349+#ifdef UTF8_INPUT_ENABLE
350+/* no NEC special, NEC-selected IBM extended and IBM extended characters */
351+static int no_cp932ext_f = FALSE;
352+/* ignore ZERO WIDTH NO-BREAK SPACE */
353+static int no_best_fit_chars_f = FALSE;
354+static int input_endian = ENDIAN_BIG;
355+static nkf_char unicode_subchar = '?'; /* the regular substitution character */
356+static void (*encode_fallback)(nkf_char c) = NULL;
357+static void w_status(struct input_code *, nkf_char);
358+#endif
359+#ifdef UTF8_OUTPUT_ENABLE
360+static int output_bom_f = FALSE;
361+static int output_endian = ENDIAN_BIG;
362+#endif
363+
364+static void std_putc(nkf_char c);
365+static nkf_char std_getc(FILE *f);
366+static nkf_char std_ungetc(nkf_char c,FILE *f);
367+
368+static nkf_char broken_getc(FILE *f);
369+static nkf_char broken_ungetc(nkf_char c,FILE *f);
370+
371+static nkf_char mime_getc(FILE *f);
372+
373+static void mime_putc(nkf_char c);
374+
375+/* buffers */
376+
377+#if !defined(PERL_XS) && !defined(WIN32DLL)
378+static unsigned char stdibuf[IOBUF_SIZE];
379+static unsigned char stdobuf[IOBUF_SIZE];
380+#endif
381+
382+/* flags */
383+static int unbuf_f = FALSE;
384+static int estab_f = FALSE;
385+static int nop_f = FALSE;
386+static int binmode_f = TRUE; /* binary mode */
387+static int rot_f = FALSE; /* rot14/43 mode */
388+static int hira_f = FALSE; /* hira/kata henkan */
389+static int alpha_f = FALSE; /* convert JIx0208 alphbet to ASCII */
390+static int mime_f = MIME_DECODE_DEFAULT; /* convert MIME B base64 or Q */
391+static int mime_decode_f = FALSE; /* mime decode is explicitly on */
392+static int mimebuf_f = FALSE; /* MIME buffered input */
393+static int broken_f = FALSE; /* convert ESC-less broken JIS */
394+static int iso8859_f = FALSE; /* ISO8859 through */
395+static int mimeout_f = FALSE; /* base64 mode */
396+static int x0201_f = X0201_DEFAULT; /* convert JIS X 0201 */
397+static int iso2022jp_f = FALSE; /* replace non ISO-2022-JP with GETA */
398+
399+#ifdef UNICODE_NORMALIZATION
400+static int nfc_f = FALSE;
401+static nkf_char (*i_nfc_getc)(FILE *) = std_getc; /* input of ugetc */
402+static nkf_char (*i_nfc_ungetc)(nkf_char c ,FILE *f) = std_ungetc;
403+#endif
404+
405+#ifdef INPUT_OPTION
406+static int cap_f = FALSE;
407+static nkf_char (*i_cgetc)(FILE *) = std_getc; /* input of cgetc */
408+static nkf_char (*i_cungetc)(nkf_char c ,FILE *f) = std_ungetc;
409+
410+static int url_f = FALSE;
411+static nkf_char (*i_ugetc)(FILE *) = std_getc; /* input of ugetc */
412+static nkf_char (*i_uungetc)(nkf_char c ,FILE *f) = std_ungetc;
413+#endif
414+
415+#define PREFIX_EUCG3 NKF_INT32_C(0x8F00)
416+#define CLASS_MASK NKF_INT32_C(0xFF000000)
417+#define CLASS_UNICODE NKF_INT32_C(0x01000000)
418+#define VALUE_MASK NKF_INT32_C(0x00FFFFFF)
419+#define UNICODE_BMP_MAX NKF_INT32_C(0x0000FFFF)
420+#define UNICODE_MAX NKF_INT32_C(0x0010FFFF)
421+#define nkf_char_euc3_new(c) ((c) | PREFIX_EUCG3)
422+#define nkf_char_unicode_new(c) ((c) | CLASS_UNICODE)
423+#define nkf_char_unicode_p(c) ((c & CLASS_MASK) == CLASS_UNICODE)
424+#define nkf_char_unicode_bmp_p(c) ((c & VALUE_MASK) <= UNICODE_BMP_MAX)
425+#define nkf_char_unicode_value_p(c) ((c & VALUE_MASK) <= UNICODE_MAX)
426+
427+#ifdef NUMCHAR_OPTION
428+static int numchar_f = FALSE;
429+static nkf_char (*i_ngetc)(FILE *) = std_getc; /* input of ugetc */
430+static nkf_char (*i_nungetc)(nkf_char c ,FILE *f) = std_ungetc;
431+#endif
432+
433+#ifdef CHECK_OPTION
434+static int noout_f = FALSE;
435+static void no_putc(nkf_char c);
436+static int debug_f = FALSE;
437+static void debug(const char *str);
438+static nkf_char (*iconv_for_check)(nkf_char c2,nkf_char c1,nkf_char c0) = 0;
439+#endif
440+
441+static int guess_f = 0; /* 0: OFF, 1: ON, 2: VERBOSE */
442+static void set_input_codename(const char *codename);
443+
444+#ifdef EXEC_IO
445+static int exec_f = 0;
446+#endif
447+
448+#ifdef SHIFTJIS_CP932
449+/* invert IBM extended characters to others */
450+static int cp51932_f = FALSE;
451+
452+/* invert NEC-selected IBM extended characters to IBM extended characters */
453+static int cp932inv_f = TRUE;
454+
455+/* static nkf_char cp932_conv(nkf_char c2, nkf_char c1); */
456+#endif /* SHIFTJIS_CP932 */
457+
458+static int x0212_f = FALSE;
459+static int x0213_f = FALSE;
460+
461+static unsigned char prefix_table[256];
462+
463+static void e_status(struct input_code *, nkf_char);
464+static void s_status(struct input_code *, nkf_char);
465+
466+struct input_code input_code_list[] = {
467+ {"EUC-JP", 0, 0, 0, {0, 0, 0}, e_status, e_iconv, 0},
468+ {"Shift_JIS", 0, 0, 0, {0, 0, 0}, s_status, s_iconv, 0},
469+#ifdef UTF8_INPUT_ENABLE
470+ {"UTF-8", 0, 0, 0, {0, 0, 0}, w_status, w_iconv, 0},
471+ {"UTF-16", 0, 0, 0, {0, 0, 0}, NULL, w_iconv16, 0},
472+ {"UTF-32", 0, 0, 0, {0, 0, 0}, NULL, w_iconv32, 0},
473+#endif
474+ {0}
475+};
476+
477+static int mimeout_mode = 0; /* 0, -1, 'Q', 'B', 1, 2 */
478+static int base64_count = 0;
479+
480+/* X0208 -> ASCII converter */
481+
482+/* fold parameter */
483+static int f_line = 0; /* chars in line */
484+static int f_prev = 0;
485+static int fold_preserve_f = FALSE; /* preserve new lines */
486+static int fold_f = FALSE;
487+static int fold_len = 0;
488+
489+/* options */
490+static unsigned char kanji_intro = DEFAULT_J;
491+static unsigned char ascii_intro = DEFAULT_R;
492+
493+/* Folding */
494+
495+#define FOLD_MARGIN 10
496+#define DEFAULT_FOLD 60
497+
498+static int fold_margin = FOLD_MARGIN;
499+
500+/* process default */
501+
502+static nkf_char
503+no_connection2(nkf_char c2, nkf_char c1, nkf_char c0)
504+{
505+ fprintf(stderr,"nkf internal module connection failure.\n");
506+ exit(EXIT_FAILURE);
507+ return 0; /* LINT */
508+}
509+
510+static void
511+no_connection(nkf_char c2, nkf_char c1)
512+{
513+ no_connection2(c2,c1,0);
514+}
515+
516+static nkf_char (*iconv)(nkf_char c2,nkf_char c1,nkf_char c0) = no_connection2;
517+static void (*oconv)(nkf_char c2,nkf_char c1) = no_connection;
518+
519+static void (*o_zconv)(nkf_char c2,nkf_char c1) = no_connection;
520+static void (*o_fconv)(nkf_char c2,nkf_char c1) = no_connection;
521+static void (*o_eol_conv)(nkf_char c2,nkf_char c1) = no_connection;
522+static void (*o_rot_conv)(nkf_char c2,nkf_char c1) = no_connection;
523+static void (*o_hira_conv)(nkf_char c2,nkf_char c1) = no_connection;
524+static void (*o_base64conv)(nkf_char c2,nkf_char c1) = no_connection;
525+static void (*o_iso2022jp_check_conv)(nkf_char c2,nkf_char c1) = no_connection;
526+
527+/* static redirections */
528+
529+static void (*o_putc)(nkf_char c) = std_putc;
530+
531+static nkf_char (*i_getc)(FILE *f) = std_getc; /* general input */
532+static nkf_char (*i_ungetc)(nkf_char c,FILE *f) =std_ungetc;
533+
534+static nkf_char (*i_bgetc)(FILE *) = std_getc; /* input of mgetc */
535+static nkf_char (*i_bungetc)(nkf_char c ,FILE *f) = std_ungetc;
536+
537+static void (*o_mputc)(nkf_char c) = std_putc ; /* output of mputc */
538+
539+static nkf_char (*i_mgetc)(FILE *) = std_getc; /* input of mgetc */
540+static nkf_char (*i_mungetc)(nkf_char c ,FILE *f) = std_ungetc;
541+
542+/* for strict mime */
543+static nkf_char (*i_mgetc_buf)(FILE *) = std_getc; /* input of mgetc_buf */
544+static nkf_char (*i_mungetc_buf)(nkf_char c,FILE *f) = std_ungetc;
545+
546+/* Global states */
547+static int output_mode = ASCII; /* output kanji mode */
548+static int input_mode = ASCII; /* input kanji mode */
549+static int mime_decode_mode = FALSE; /* MIME mode B base64, Q hex */
550+
551+/* X0201 / X0208 conversion tables */
552+
553+/* X0201 kana conversion table */
554+/* 90-9F A0-DF */
555+static const unsigned char cv[]= {
556+ 0x21,0x21,0x21,0x23,0x21,0x56,0x21,0x57,
557+ 0x21,0x22,0x21,0x26,0x25,0x72,0x25,0x21,
558+ 0x25,0x23,0x25,0x25,0x25,0x27,0x25,0x29,
559+ 0x25,0x63,0x25,0x65,0x25,0x67,0x25,0x43,
560+ 0x21,0x3c,0x25,0x22,0x25,0x24,0x25,0x26,
561+ 0x25,0x28,0x25,0x2a,0x25,0x2b,0x25,0x2d,
562+ 0x25,0x2f,0x25,0x31,0x25,0x33,0x25,0x35,
563+ 0x25,0x37,0x25,0x39,0x25,0x3b,0x25,0x3d,
564+ 0x25,0x3f,0x25,0x41,0x25,0x44,0x25,0x46,
565+ 0x25,0x48,0x25,0x4a,0x25,0x4b,0x25,0x4c,
566+ 0x25,0x4d,0x25,0x4e,0x25,0x4f,0x25,0x52,
567+ 0x25,0x55,0x25,0x58,0x25,0x5b,0x25,0x5e,
568+ 0x25,0x5f,0x25,0x60,0x25,0x61,0x25,0x62,
569+ 0x25,0x64,0x25,0x66,0x25,0x68,0x25,0x69,
570+ 0x25,0x6a,0x25,0x6b,0x25,0x6c,0x25,0x6d,
571+ 0x25,0x6f,0x25,0x73,0x21,0x2b,0x21,0x2c,
572+ 0x00,0x00};
573+
574+
575+/* X0201 kana conversion table for daguten */
576+/* 90-9F A0-DF */
577+static const unsigned char dv[]= {
578+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
579+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
580+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
581+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
582+ 0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x74,
583+ 0x00,0x00,0x00,0x00,0x25,0x2c,0x25,0x2e,
584+ 0x25,0x30,0x25,0x32,0x25,0x34,0x25,0x36,
585+ 0x25,0x38,0x25,0x3a,0x25,0x3c,0x25,0x3e,
586+ 0x25,0x40,0x25,0x42,0x25,0x45,0x25,0x47,
587+ 0x25,0x49,0x00,0x00,0x00,0x00,0x00,0x00,
588+ 0x00,0x00,0x00,0x00,0x25,0x50,0x25,0x53,
589+ 0x25,0x56,0x25,0x59,0x25,0x5c,0x00,0x00,
590+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
591+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
592+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
593+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
594+ 0x00,0x00};
595+
596+/* X0201 kana conversion table for han-daguten */
597+/* 90-9F A0-DF */
598+static const unsigned char ev[]= {
599+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
600+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
601+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
602+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
603+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
604+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
605+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
606+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
607+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
608+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
609+ 0x00,0x00,0x00,0x00,0x25,0x51,0x25,0x54,
610+ 0x25,0x57,0x25,0x5a,0x25,0x5d,0x00,0x00,
611+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
612+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
613+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
614+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
615+ 0x00,0x00};
616+
617+
618+/* X0208 kigou conversion table */
619+/* 0x8140 - 0x819e */
620+static const unsigned char fv[] = {
621+
622+ 0x00,0x00,0x00,0x00,0x2c,0x2e,0x00,0x3a,
623+ 0x3b,0x3f,0x21,0x00,0x00,0x27,0x60,0x00,
624+ 0x5e,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,
625+ 0x00,0x00,0x00,0x00,0x00,0x2d,0x00,0x2f,
626+ 0x5c,0x00,0x00,0x7c,0x00,0x00,0x60,0x27,
627+ 0x22,0x22,0x28,0x29,0x00,0x00,0x5b,0x5d,
628+ 0x7b,0x7d,0x3c,0x3e,0x00,0x00,0x00,0x00,
629+ 0x00,0x00,0x00,0x00,0x2b,0x2d,0x00,0x00,
630+ 0x00,0x3d,0x00,0x3c,0x3e,0x00,0x00,0x00,
631+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
632+ 0x24,0x00,0x00,0x25,0x23,0x26,0x2a,0x40,
633+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
634+} ;
635+
636+
637+
638+static int option_mode = 0;
639+static int file_out_f = FALSE;
640+#ifdef OVERWRITE
641+static int overwrite_f = FALSE;
642+static int preserve_time_f = FALSE;
643+static int backup_f = FALSE;
644+static char *backup_suffix = "";
645+#endif
646+
647+static int eolmode_f = 0; /* CR, LF, CRLF */
648+static int input_eol = 0; /* 0: unestablished, EOF: MIXED */
649+static nkf_char prev_cr = 0; /* CR or 0 */
650+#ifdef EASYWIN /*Easy Win */
651+static int end_check;
652+#endif /*Easy Win */
653+
654+static void *
655+nkf_xmalloc(size_t size)
656+{
657+ void *ptr;
658+
659+ if (size == 0) size = 1;
660+
661+ ptr = malloc(size);
662+ if (ptr == NULL) {
663+ perror("can't malloc");
664+ exit(EXIT_FAILURE);
665+ }
666+
667+ return ptr;
668+}
669+
670+static void *
671+nkf_xrealloc(void *ptr, size_t size)
672+{
673+ if (size == 0) size = 1;
674+
675+ ptr = realloc(ptr, size);
676+ if (ptr == NULL) {
677+ perror("can't realloc");
678+ exit(EXIT_FAILURE);
679+ }
680+
681+ return ptr;
682+}
683+
684+#define nkf_xfree(ptr) free(ptr)
685+
686+static int
687+nkf_str_caseeql(const char *src, const char *target)
688+{
689+ int i;
690+ for (i = 0; src[i] && target[i]; i++) {
691+ if (nkf_toupper(src[i]) != nkf_toupper(target[i])) return FALSE;
692+ }
693+ if (src[i] || target[i]) return FALSE;
694+ else return TRUE;
695+}
696+
697+static nkf_encoding*
698+nkf_enc_from_index(int idx)
699+{
700+ if (idx < 0 || NKF_ENCODING_TABLE_SIZE <= idx) {
701+ return 0;
702+ }
703+ return &nkf_encoding_table[idx];
704+}
705+
706+static int
707+nkf_enc_find_index(const char *name)
708+{
709+ int i;
710+ if (name[0] == 'X' && *(name+1) == '-') name += 2;
711+ for (i = 0; encoding_name_to_id_table[i].id >= 0; i++) {
712+ if (nkf_str_caseeql(encoding_name_to_id_table[i].name, name)) {
713+ return encoding_name_to_id_table[i].id;
714+ }
715+ }
716+ return -1;
717+}
718+
719+static nkf_encoding*
720+nkf_enc_find(const char *name)
721+{
722+ int idx = -1;
723+ idx = nkf_enc_find_index(name);
724+ if (idx < 0) return 0;
725+ return nkf_enc_from_index(idx);
726+}
727+
728+#define nkf_enc_name(enc) (enc)->name
729+#define nkf_enc_to_index(enc) (enc)->id
730+#define nkf_enc_to_base_encoding(enc) (enc)->base_encoding
731+#define nkf_enc_to_iconv(enc) nkf_enc_to_base_encoding(enc)->iconv
732+#define nkf_enc_to_oconv(enc) nkf_enc_to_base_encoding(enc)->oconv
733+#define nkf_enc_asciicompat(enc) (\
734+ nkf_enc_to_base_encoding(enc) == &NkfEncodingASCII ||\
735+ nkf_enc_to_base_encoding(enc) == &NkfEncodingISO_2022_JP)
736+#define nkf_enc_unicode_p(enc) (\
737+ nkf_enc_to_base_encoding(enc) == &NkfEncodingUTF_8 ||\
738+ nkf_enc_to_base_encoding(enc) == &NkfEncodingUTF_16 ||\
739+ nkf_enc_to_base_encoding(enc) == &NkfEncodingUTF_32)
740+#define nkf_enc_cp5022x_p(enc) (\
741+ nkf_enc_to_index(enc) == CP50220 ||\
742+ nkf_enc_to_index(enc) == CP50221 ||\
743+ nkf_enc_to_index(enc) == CP50222)
744+
745+#ifdef DEFAULT_CODE_LOCALE
746+static const char*
747+nkf_locale_charmap()
748+{
749+#ifdef HAVE_LANGINFO_H
750+ return nl_langinfo(CODESET);
751+#elif defined(__WIN32__)
752+ static char buf[16];
753+ sprintf(buf, "CP%d", GetACP());
754+ return buf;
755+#elif defined(__OS2__)
756+# if defined(INT_IS_SHORT)
757+ /* OS/2 1.x */
758+ return NULL;
759+# else
760+ /* OS/2 32bit */
761+ static char buf[16];
762+ ULONG ulCP[1], ulncp;
763+ DosQueryCp(sizeof(ulCP), ulCP, &ulncp);
764+ if (ulCP[0] == 932 || ulCP[0] == 943)
765+ strcpy(buf, "Shift_JIS");
766+ else
767+ sprintf(buf, "CP%lu", ulCP[0]);
768+ return buf;
769+# endif
770+#endif
771+ return NULL;
772+}
773+
774+static nkf_encoding*
775+nkf_locale_encoding()
776+{
777+ nkf_encoding *enc = 0;
778+ const char *encname = nkf_locale_charmap();
779+ if (encname)
780+ enc = nkf_enc_find(encname);
781+ return enc;
782+}
783+#endif /* DEFAULT_CODE_LOCALE */
784+
785+static nkf_encoding*
786+nkf_utf8_encoding()
787+{
788+ return &nkf_encoding_table[UTF_8];
789+}
790+
791+static nkf_encoding*
792+nkf_default_encoding()
793+{
794+ nkf_encoding *enc = 0;
795+#ifdef DEFAULT_CODE_LOCALE
796+ enc = nkf_locale_encoding();
797+#elif defined(DEFAULT_ENCIDX)
798+ enc = nkf_enc_from_index(DEFAULT_ENCIDX);
799+#endif
800+ if (!enc) enc = nkf_utf8_encoding();
801+ return enc;
802+}
803+
804+typedef struct {
805+ long capa;
806+ long len;
807+ nkf_char *ptr;
808+} nkf_buf_t;
809+
810+static nkf_buf_t *
811+nkf_buf_new(int length)
812+{
813+ nkf_buf_t *buf = nkf_xmalloc(sizeof(nkf_buf_t));
814+ buf->ptr = nkf_xmalloc(length);
815+ buf->capa = length;
816+ buf->len = 0;
817+ return buf;
818+}
819+
820+#if 0
821+static void
822+nkf_buf_dispose(nkf_buf_t *buf)
823+{
824+ nkf_xfree(buf->ptr);
825+ nkf_xfree(buf);
826+}
827+#endif
828+
829+#define nkf_buf_length(buf) ((buf)->len)
830+#define nkf_buf_empty_p(buf) ((buf)->len == 0)
831+
832+static unsigned char
833+nkf_buf_at(nkf_buf_t *buf, int index)
834+{
835+ assert(index <= buf->len);
836+ return buf->ptr[index];
837+}
838+
839+static void
840+nkf_buf_clear(nkf_buf_t *buf)
841+{
842+ buf->len = 0;
843+}
844+
845+static void
846+nkf_buf_push(nkf_buf_t *buf, nkf_char c)
847+{
848+ if (buf->capa <= buf->len) {
849+ exit(EXIT_FAILURE);
850+ }
851+ buf->ptr[buf->len++] = c;
852+}
853+
854+static unsigned char
855+nkf_buf_pop(nkf_buf_t *buf)
856+{
857+ assert(!nkf_buf_empty_p(buf));
858+ return buf->ptr[--buf->len];
859+}
860+
861+/* Normalization Form C */
862+#ifndef PERL_XS
863+#ifdef WIN32DLL
864+#define fprintf dllprintf
865+#endif
866+
867+static void
868+version(void)
869+{
870+ fprintf(HELP_OUTPUT,"Network Kanji Filter Version " NKF_VERSION " (" NKF_RELEASE_DATE ") \n" COPY_RIGHT "\n");
871+}
872+
873+static void
874+usage(void)
875+{
876+ fprintf(HELP_OUTPUT,
877+ "Usage: nkf -[flags] [--] [in file] .. [out file for -O flag]\n"
878+#ifdef UTF8_OUTPUT_ENABLE
879+ " j/s/e/w Specify output encoding ISO-2022-JP, Shift_JIS, EUC-JP\n"
880+ " UTF options is -w[8[0],{16,32}[{B,L}[0]]]\n"
881+#else
882+#endif
883+#ifdef UTF8_INPUT_ENABLE
884+ " J/S/E/W Specify input encoding ISO-2022-JP, Shift_JIS, EUC-JP\n"
885+ " UTF option is -W[8,[16,32][B,L]]\n"
886+#else
887+ " J/S/E Specify output encoding ISO-2022-JP, Shift_JIS, EUC-JP\n"
888+#endif
889+ );
890+ fprintf(HELP_OUTPUT,
891+ " m[BQSN0] MIME decode [B:base64,Q:quoted,S:strict,N:nonstrict,0:no decode]\n"
892+ " M[BQ] MIME encode [B:base64 Q:quoted]\n"
893+ " f/F Folding: -f60 or -f or -f60-10 (fold margin 10) F preserve nl\n"
894+ );
895+ fprintf(HELP_OUTPUT,
896+ " Z[0-4] Default/0: Convert JISX0208 Alphabet to ASCII\n"
897+ " 1: Kankaku to one space 2: to two spaces 3: HTML Entity\n"
898+ " 4: JISX0208 Katakana to JISX0201 Katakana\n"
899+ " X,x Assume X0201 kana in MS-Kanji, -x preserves X0201\n"
900+ );
901+ fprintf(HELP_OUTPUT,
902+ " O Output to File (DEFAULT 'nkf.out')\n"
903+ " L[uwm] Line mode u:LF w:CRLF m:CR (DEFAULT noconversion)\n"
904+ );
905+ fprintf(HELP_OUTPUT,
906+ " --ic=<encoding> Specify the input encoding\n"
907+ " --oc=<encoding> Specify the output encoding\n"
908+ " --hiragana --katakana Hiragana/Katakana Conversion\n"
909+ " --katakana-hiragana Converts each other\n"
910+ );
911+ fprintf(HELP_OUTPUT,
912+#ifdef INPUT_OPTION
913+ " --{cap, url}-input Convert hex after ':' or '%%'\n"
914+#endif
915+#ifdef NUMCHAR_OPTION
916+ " --numchar-input Convert Unicode Character Reference\n"
917+#endif
918+#ifdef UTF8_INPUT_ENABLE
919+ " --fb-{skip, html, xml, perl, java, subchar}\n"
920+ " Specify unassigned character's replacement\n"
921+#endif
922+ );
923+ fprintf(HELP_OUTPUT,
924+#ifdef OVERWRITE
925+ " --in-place[=SUF] Overwrite original files\n"
926+ " --overwrite[=SUF] Preserve timestamp of original files\n"
927+#endif
928+ " -g --guess Guess the input code\n"
929+ " -v --version Print the version\n"
930+ " --help/-V Print this help / configuration\n"
931+ );
932+ version();
933+}
934+
935+static void
936+show_configuration(void)
937+{
938+ fprintf(HELP_OUTPUT,
939+ "Summary of my nkf " NKF_VERSION " (" NKF_RELEASE_DATE ") configuration:\n"
940+ " Compile-time options:\n"
941+ " Compiled at: " __DATE__ " " __TIME__ "\n"
942+ );
943+ fprintf(HELP_OUTPUT,
944+ " Default output encoding: "
945+#ifdef DEFAULT_CODE_LOCALE
946+ "LOCALE (%s)\n", nkf_enc_name(nkf_default_encoding())
947+#elif defined(DEFAULT_ENCIDX)
948+ "CONFIG (%s)\n", nkf_enc_name(nkf_default_encoding())
949+#else
950+ "NONE\n"
951+#endif
952+ );
953+ fprintf(HELP_OUTPUT,
954+ " Default output end of line: "
955+#if DEFAULT_NEWLINE == CR
956+ "CR"
957+#elif DEFAULT_NEWLINE == CRLF
958+ "CRLF"
959+#else
960+ "LF"
961+#endif
962+ "\n"
963+ " Decode MIME encoded string: "
964+#if MIME_DECODE_DEFAULT
965+ "ON"
966+#else
967+ "OFF"
968+#endif
969+ "\n"
970+ " Convert JIS X 0201 Katakana: "
971+#if X0201_DEFAULT
972+ "ON"
973+#else
974+ "OFF"
975+#endif
976+ "\n"
977+ " --help, --version output: "
978+#if HELP_OUTPUT_HELP_OUTPUT
979+ "HELP_OUTPUT"
980+#else
981+ "STDOUT"
982+#endif
983+ "\n");
984+}
985+#endif /*PERL_XS*/
986+
987+#ifdef OVERWRITE
988+static char*
989+get_backup_filename(const char *suffix, const char *filename)
990+{
991+ char *backup_filename;
992+ int asterisk_count = 0;
993+ int i, j;
994+ int filename_length = strlen(filename);
995+
996+ for(i = 0; suffix[i]; i++){
997+ if(suffix[i] == '*') asterisk_count++;
998+ }
999+
1000+ if(asterisk_count){
1001+ backup_filename = nkf_xmalloc(strlen(suffix) + (asterisk_count * (filename_length - 1)) + 1);
1002+ for(i = 0, j = 0; suffix[i];){
1003+ if(suffix[i] == '*'){
1004+ backup_filename[j] = '\0';
1005+ strncat(backup_filename, filename, filename_length);
1006+ i++;
1007+ j += filename_length;
1008+ }else{
1009+ backup_filename[j++] = suffix[i++];
1010+ }
1011+ }
1012+ backup_filename[j] = '\0';
1013+ }else{
1014+ j = filename_length + strlen(suffix);
1015+ backup_filename = nkf_xmalloc(j + 1);
1016+ strcpy(backup_filename, filename);
1017+ strcat(backup_filename, suffix);
1018+ backup_filename[j] = '\0';
1019+ }
1020+ return backup_filename;
1021+}
1022+#endif
1023+
1024+#ifdef UTF8_INPUT_ENABLE
1025+static void
1026+nkf_each_char_to_hex(void (*f)(nkf_char c2,nkf_char c1), nkf_char c)
1027+{
1028+ int shift = 20;
1029+ c &= VALUE_MASK;
1030+ while(shift >= 0){
1031+ if(c >= 1<<shift){
1032+ while(shift >= 0){
1033+ (*f)(0, bin2hex(c>>shift));
1034+ shift -= 4;
1035+ }
1036+ }else{
1037+ shift -= 4;
1038+ }
1039+ }
1040+ return;
1041+}
1042+
1043+static void
1044+encode_fallback_html(nkf_char c)
1045+{
1046+ (*oconv)(0, '&');
1047+ (*oconv)(0, '#');
1048+ c &= VALUE_MASK;
1049+ if(c >= NKF_INT32_C(1000000))
1050+ (*oconv)(0, 0x30+(c/NKF_INT32_C(1000000))%10);
1051+ if(c >= NKF_INT32_C(100000))
1052+ (*oconv)(0, 0x30+(c/NKF_INT32_C(100000) )%10);
1053+ if(c >= 10000)
1054+ (*oconv)(0, 0x30+(c/10000 )%10);
1055+ if(c >= 1000)
1056+ (*oconv)(0, 0x30+(c/1000 )%10);
1057+ if(c >= 100)
1058+ (*oconv)(0, 0x30+(c/100 )%10);
1059+ if(c >= 10)
1060+ (*oconv)(0, 0x30+(c/10 )%10);
1061+ if(c >= 0)
1062+ (*oconv)(0, 0x30+ c %10);
1063+ (*oconv)(0, ';');
1064+ return;
1065+}
1066+
1067+static void
1068+encode_fallback_xml(nkf_char c)
1069+{
1070+ (*oconv)(0, '&');
1071+ (*oconv)(0, '#');
1072+ (*oconv)(0, 'x');
1073+ nkf_each_char_to_hex(oconv, c);
1074+ (*oconv)(0, ';');
1075+ return;
1076+}
1077+
1078+static void
1079+encode_fallback_java(nkf_char c)
1080+{
1081+ (*oconv)(0, '\\');
1082+ c &= VALUE_MASK;
1083+ if(!nkf_char_unicode_bmp_p(c)){
1084+ (*oconv)(0, 'U');
1085+ (*oconv)(0, '0');
1086+ (*oconv)(0, '0');
1087+ (*oconv)(0, bin2hex(c>>20));
1088+ (*oconv)(0, bin2hex(c>>16));
1089+ }else{
1090+ (*oconv)(0, 'u');
1091+ }
1092+ (*oconv)(0, bin2hex(c>>12));
1093+ (*oconv)(0, bin2hex(c>> 8));
1094+ (*oconv)(0, bin2hex(c>> 4));
1095+ (*oconv)(0, bin2hex(c ));
1096+ return;
1097+}
1098+
1099+static void
1100+encode_fallback_perl(nkf_char c)
1101+{
1102+ (*oconv)(0, '\\');
1103+ (*oconv)(0, 'x');
1104+ (*oconv)(0, '{');
1105+ nkf_each_char_to_hex(oconv, c);
1106+ (*oconv)(0, '}');
1107+ return;
1108+}
1109+
1110+static void
1111+encode_fallback_subchar(nkf_char c)
1112+{
1113+ c = unicode_subchar;
1114+ (*oconv)((c>>8)&0xFF, c&0xFF);
1115+ return;
1116+}
1117+#endif
1118+
1119+static const struct {
1120+ const char *name;
1121+ const char *alias;
1122+} long_option[] = {
1123+ {"ic=", ""},
1124+ {"oc=", ""},
1125+ {"base64","jMB"},
1126+ {"euc","e"},
1127+ {"euc-input","E"},
1128+ {"fj","jm"},
1129+ {"help",""},
1130+ {"jis","j"},
1131+ {"jis-input","J"},
1132+ {"mac","sLm"},
1133+ {"mime","jM"},
1134+ {"mime-input","m"},
1135+ {"msdos","sLw"},
1136+ {"sjis","s"},
1137+ {"sjis-input","S"},
1138+ {"unix","eLu"},
1139+ {"version","v"},
1140+ {"windows","sLw"},
1141+ {"hiragana","h1"},
1142+ {"katakana","h2"},
1143+ {"katakana-hiragana","h3"},
1144+ {"guess=", ""},
1145+ {"guess", "g2"},
1146+ {"cp932", ""},
1147+ {"no-cp932", ""},
1148+#ifdef X0212_ENABLE
1149+ {"x0212", ""},
1150+#endif
1151+#ifdef UTF8_OUTPUT_ENABLE
1152+ {"utf8", "w"},
1153+ {"utf16", "w16"},
1154+ {"ms-ucs-map", ""},
1155+ {"fb-skip", ""},
1156+ {"fb-html", ""},
1157+ {"fb-xml", ""},
1158+ {"fb-perl", ""},
1159+ {"fb-java", ""},
1160+ {"fb-subchar", ""},
1161+ {"fb-subchar=", ""},
1162+#endif
1163+#ifdef UTF8_INPUT_ENABLE
1164+ {"utf8-input", "W"},
1165+ {"utf16-input", "W16"},
1166+ {"no-cp932ext", ""},
1167+ {"no-best-fit-chars",""},
1168+#endif
1169+#ifdef UNICODE_NORMALIZATION
1170+ {"utf8mac-input", ""},
1171+#endif
1172+#ifdef OVERWRITE
1173+ {"overwrite", ""},
1174+ {"overwrite=", ""},
1175+ {"in-place", ""},
1176+ {"in-place=", ""},
1177+#endif
1178+#ifdef INPUT_OPTION
1179+ {"cap-input", ""},
1180+ {"url-input", ""},
1181+#endif
1182+#ifdef NUMCHAR_OPTION
1183+ {"numchar-input", ""},
1184+#endif
1185+#ifdef CHECK_OPTION
1186+ {"no-output", ""},
1187+ {"debug", ""},
1188+#endif
1189+#ifdef SHIFTJIS_CP932
1190+ {"cp932inv", ""},
1191+#endif
1192+#ifdef EXEC_IO
1193+ {"exec-in", ""},
1194+ {"exec-out", ""},
1195+#endif
1196+ {"prefix=", ""},
1197+};
1198+
1199+static void
1200+set_input_encoding(nkf_encoding *enc)
1201+{
1202+ switch (nkf_enc_to_index(enc)) {
1203+ case ISO_8859_1:
1204+ iso8859_f = TRUE;
1205+ break;
1206+ case CP50220:
1207+ case CP50221:
1208+ case CP50222:
1209+ x0201_f = TRUE;
1210+#ifdef SHIFTJIS_CP932
1211+ cp51932_f = TRUE;
1212+#endif
1213+#ifdef UTF8_OUTPUT_ENABLE
1214+ ms_ucs_map_f = UCS_MAP_CP932;
1215+#endif
1216+ break;
1217+ case ISO_2022_JP_1:
1218+ x0212_f = TRUE;
1219+ break;
1220+ case ISO_2022_JP_3:
1221+ x0212_f = TRUE;
1222+ x0213_f = TRUE;
1223+ break;
1224+ case ISO_2022_JP_2004:
1225+ x0212_f = TRUE;
1226+ x0213_f = TRUE;
1227+ break;
1228+ case SHIFT_JIS:
1229+ break;
1230+ case WINDOWS_31J:
1231+ x0201_f = TRUE;
1232+#ifdef SHIFTJIS_CP932
1233+ cp51932_f = TRUE;
1234+#endif
1235+#ifdef UTF8_OUTPUT_ENABLE
1236+ ms_ucs_map_f = UCS_MAP_CP932;
1237+#endif
1238+ break;
1239+ break;
1240+ case CP10001:
1241+#ifdef SHIFTJIS_CP932
1242+ cp51932_f = TRUE;
1243+#endif
1244+#ifdef UTF8_OUTPUT_ENABLE
1245+ ms_ucs_map_f = UCS_MAP_CP10001;
1246+#endif
1247+ break;
1248+ case EUC_JP:
1249+ break;
1250+ case EUCJP_NKF:
1251+ break;
1252+ case CP51932:
1253+ x0201_f = TRUE;
1254+#ifdef SHIFTJIS_CP932
1255+ cp51932_f = TRUE;
1256+#endif
1257+#ifdef UTF8_OUTPUT_ENABLE
1258+ ms_ucs_map_f = UCS_MAP_CP932;
1259+#endif
1260+ break;
1261+ case EUCJP_MS:
1262+#ifdef SHIFTJIS_CP932
1263+ cp51932_f = FALSE;
1264+#endif
1265+#ifdef UTF8_OUTPUT_ENABLE
1266+ ms_ucs_map_f = UCS_MAP_MS;
1267+#endif
1268+ break;
1269+ case EUCJP_ASCII:
1270+#ifdef SHIFTJIS_CP932
1271+ cp51932_f = FALSE;
1272+#endif
1273+#ifdef UTF8_OUTPUT_ENABLE
1274+ ms_ucs_map_f = UCS_MAP_ASCII;
1275+#endif
1276+ break;
1277+ case SHIFT_JISX0213:
1278+ case SHIFT_JIS_2004:
1279+ x0213_f = TRUE;
1280+#ifdef SHIFTJIS_CP932
1281+ cp51932_f = FALSE;
1282+#endif
1283+ break;
1284+ case EUC_JISX0213:
1285+ case EUC_JIS_2004:
1286+ x0213_f = TRUE;
1287+#ifdef SHIFTJIS_CP932
1288+ cp51932_f = FALSE;
1289+#endif
1290+ break;
1291+#ifdef UTF8_INPUT_ENABLE
1292+#ifdef UNICODE_NORMALIZATION
1293+ case UTF8_MAC:
1294+ nfc_f = TRUE;
1295+ break;
1296+#endif
1297+ case UTF_16:
1298+ case UTF_16BE:
1299+ case UTF_16BE_BOM:
1300+ input_endian = ENDIAN_BIG;
1301+ break;
1302+ case UTF_16LE:
1303+ case UTF_16LE_BOM:
1304+ input_endian = ENDIAN_LITTLE;
1305+ break;
1306+ case UTF_32:
1307+ case UTF_32BE:
1308+ case UTF_32BE_BOM:
1309+ input_endian = ENDIAN_BIG;
1310+ break;
1311+ case UTF_32LE:
1312+ case UTF_32LE_BOM:
1313+ input_endian = ENDIAN_LITTLE;
1314+ break;
1315+#endif
1316+ }
1317+}
1318+
1319+static void
1320+set_output_encoding(nkf_encoding *enc)
1321+{
1322+ switch (nkf_enc_to_index(enc)) {
1323+ case CP50220:
1324+ x0201_f = TRUE;
1325+#ifdef SHIFTJIS_CP932
1326+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1327+#endif
1328+#ifdef UTF8_OUTPUT_ENABLE
1329+ ms_ucs_map_f = UCS_MAP_CP932;
1330+#endif
1331+ break;
1332+ case CP50221:
1333+ x0201_f = TRUE;
1334+#ifdef SHIFTJIS_CP932
1335+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1336+#endif
1337+#ifdef UTF8_OUTPUT_ENABLE
1338+ ms_ucs_map_f = UCS_MAP_CP932;
1339+#endif
1340+ break;
1341+ case ISO_2022_JP:
1342+#ifdef SHIFTJIS_CP932
1343+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1344+#endif
1345+ break;
1346+ case ISO_2022_JP_1:
1347+ x0212_f = TRUE;
1348+#ifdef SHIFTJIS_CP932
1349+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1350+#endif
1351+ break;
1352+ case ISO_2022_JP_3:
1353+ x0212_f = TRUE;
1354+ x0213_f = TRUE;
1355+#ifdef SHIFTJIS_CP932
1356+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1357+#endif
1358+ break;
1359+ case SHIFT_JIS:
1360+ break;
1361+ case WINDOWS_31J:
1362+ x0201_f = TRUE;
1363+#ifdef UTF8_OUTPUT_ENABLE
1364+ ms_ucs_map_f = UCS_MAP_CP932;
1365+#endif
1366+ break;
1367+ case CP10001:
1368+#ifdef UTF8_OUTPUT_ENABLE
1369+ ms_ucs_map_f = UCS_MAP_CP10001;
1370+#endif
1371+ break;
1372+ case EUC_JP:
1373+ x0212_f = TRUE;
1374+#ifdef SHIFTJIS_CP932
1375+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1376+#endif
1377+#ifdef UTF8_OUTPUT_ENABLE
1378+ ms_ucs_map_f = UCS_MAP_ASCII;
1379+#endif
1380+ break;
1381+ case EUCJP_NKF:
1382+ x0212_f = FALSE;
1383+#ifdef SHIFTJIS_CP932
1384+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1385+#endif
1386+#ifdef UTF8_OUTPUT_ENABLE
1387+ ms_ucs_map_f = UCS_MAP_ASCII;
1388+#endif
1389+ break;
1390+ case CP51932:
1391+ x0201_f = TRUE;
1392+#ifdef SHIFTJIS_CP932
1393+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1394+#endif
1395+#ifdef UTF8_OUTPUT_ENABLE
1396+ ms_ucs_map_f = UCS_MAP_CP932;
1397+#endif
1398+ break;
1399+ case EUCJP_MS:
1400+ x0212_f = TRUE;
1401+#ifdef UTF8_OUTPUT_ENABLE
1402+ ms_ucs_map_f = UCS_MAP_MS;
1403+#endif
1404+ break;
1405+ case EUCJP_ASCII:
1406+ x0212_f = TRUE;
1407+#ifdef UTF8_OUTPUT_ENABLE
1408+ ms_ucs_map_f = UCS_MAP_ASCII;
1409+#endif
1410+ break;
1411+ case SHIFT_JISX0213:
1412+ case SHIFT_JIS_2004:
1413+ x0213_f = TRUE;
1414+#ifdef SHIFTJIS_CP932
1415+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1416+#endif
1417+ break;
1418+ case EUC_JISX0213:
1419+ case EUC_JIS_2004:
1420+ x0212_f = TRUE;
1421+ x0213_f = TRUE;
1422+#ifdef SHIFTJIS_CP932
1423+ if (cp932inv_f == TRUE) cp932inv_f = FALSE;
1424+#endif
1425+ break;
1426+#ifdef UTF8_OUTPUT_ENABLE
1427+ case UTF_8_BOM:
1428+ output_bom_f = TRUE;
1429+ break;
1430+ case UTF_16:
1431+ case UTF_16BE_BOM:
1432+ output_bom_f = TRUE;
1433+ break;
1434+ case UTF_16LE:
1435+ output_endian = ENDIAN_LITTLE;
1436+ output_bom_f = FALSE;
1437+ break;
1438+ case UTF_16LE_BOM:
1439+ output_endian = ENDIAN_LITTLE;
1440+ output_bom_f = TRUE;
1441+ break;
1442+ case UTF_32:
1443+ case UTF_32BE_BOM:
1444+ output_bom_f = TRUE;
1445+ break;
1446+ case UTF_32LE:
1447+ output_endian = ENDIAN_LITTLE;
1448+ output_bom_f = FALSE;
1449+ break;
1450+ case UTF_32LE_BOM:
1451+ output_endian = ENDIAN_LITTLE;
1452+ output_bom_f = TRUE;
1453+ break;
1454+#endif
1455+ }
1456+}
1457+
1458+static struct input_code*
1459+find_inputcode_byfunc(nkf_char (*iconv_func)(nkf_char c2,nkf_char c1,nkf_char c0))
1460+{
1461+ if (iconv_func){
1462+ struct input_code *p = input_code_list;
1463+ while (p->name){
1464+ if (iconv_func == p->iconv_func){
1465+ return p;
1466+ }
1467+ p++;
1468+ }
1469+ }
1470+ return 0;
1471+}
1472+
1473+static void
1474+set_iconv(nkf_char f, nkf_char (*iconv_func)(nkf_char c2,nkf_char c1,nkf_char c0))
1475+{
1476+#ifdef INPUT_CODE_FIX
1477+ if (f || !input_encoding)
1478+#endif
1479+ if (estab_f != f){
1480+ estab_f = f;
1481+ }
1482+
1483+ if (iconv_func
1484+#ifdef INPUT_CODE_FIX
1485+ && (f == -TRUE || !input_encoding) /* -TRUE means "FORCE" */
1486+#endif
1487+ ){
1488+ iconv = iconv_func;
1489+ }
1490+#ifdef CHECK_OPTION
1491+ if (estab_f && iconv_for_check != iconv){
1492+ struct input_code *p = find_inputcode_byfunc(iconv);
1493+ if (p){
1494+ set_input_codename(p->name);
1495+ debug(p->name);
1496+ }
1497+ iconv_for_check = iconv;
1498+ }
1499+#endif
1500+}
1501+
1502+#ifdef X0212_ENABLE
1503+static nkf_char
1504+x0212_shift(nkf_char c)
1505+{
1506+ nkf_char ret = c;
1507+ c &= 0x7f;
1508+ if (is_eucg3(ret)){
1509+ if (0x75 <= c && c <= 0x7f){
1510+ ret = c + (0x109 - 0x75);
1511+ }
1512+ }else{
1513+ if (0x75 <= c && c <= 0x7f){
1514+ ret = c + (0x113 - 0x75);
1515+ }
1516+ }
1517+ return ret;
1518+}
1519+
1520+
1521+static nkf_char
1522+x0212_unshift(nkf_char c)
1523+{
1524+ nkf_char ret = c;
1525+ if (0x7f <= c && c <= 0x88){
1526+ ret = c + (0x75 - 0x7f);
1527+ }else if (0x89 <= c && c <= 0x92){
1528+ ret = PREFIX_EUCG3 | 0x80 | (c + (0x75 - 0x89));
1529+ }
1530+ return ret;
1531+}
1532+#endif /* X0212_ENABLE */
1533+
1534+static nkf_char
1535+e2s_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char *p1)
1536+{
1537+ nkf_char ndx;
1538+ if (is_eucg3(c2)){
1539+ ndx = c2 & 0x7f;
1540+ if (x0213_f){
1541+ if((0x21 <= ndx && ndx <= 0x2F)){
1542+ if (p2) *p2 = ((ndx - 1) >> 1) + 0xec - ndx / 8 * 3;
1543+ if (p1) *p1 = c1 + ((ndx & 1) ? ((c1 < 0x60) ? 0x1f : 0x20) : 0x7e);
1544+ return 0;
1545+ }else if(0x6E <= ndx && ndx <= 0x7E){
1546+ if (p2) *p2 = ((ndx - 1) >> 1) + 0xbe;
1547+ if (p1) *p1 = c1 + ((ndx & 1) ? ((c1 < 0x60) ? 0x1f : 0x20) : 0x7e);
1548+ return 0;
1549+ }
1550+ return 1;
1551+ }
1552+#ifdef X0212_ENABLE
1553+ else if(nkf_isgraph(ndx)){
1554+ nkf_char val = 0;
1555+ const unsigned short *ptr;
1556+ ptr = x0212_shiftjis[ndx - 0x21];
1557+ if (ptr){
1558+ val = ptr[(c1 & 0x7f) - 0x21];
1559+ }
1560+ if (val){
1561+ c2 = val >> 8;
1562+ c1 = val & 0xff;
1563+ if (p2) *p2 = c2;
1564+ if (p1) *p1 = c1;
1565+ return 0;
1566+ }
1567+ c2 = x0212_shift(c2);
1568+ }
1569+#endif /* X0212_ENABLE */
1570+ }
1571+ if(0x7F < c2) return 1;
1572+ if (p2) *p2 = ((c2 - 1) >> 1) + ((c2 <= 0x5e) ? 0x71 : 0xb1);
1573+ if (p1) *p1 = c1 + ((c2 & 1) ? ((c1 < 0x60) ? 0x1f : 0x20) : 0x7e);
1574+ return 0;
1575+}
1576+
1577+static nkf_char
1578+s2e_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char *p1)
1579+{
1580+#if defined(SHIFTJIS_CP932) || defined(X0212_ENABLE)
1581+ nkf_char val;
1582+#endif
1583+ static const char shift_jisx0213_s1a3_table[5][2] ={ { 1, 8}, { 3, 4}, { 5,12}, {13,14}, {15, 0} };
1584+ if (0xFC < c1) return 1;
1585+#ifdef SHIFTJIS_CP932
1586+ if (!cp932inv_f && is_ibmext_in_sjis(c2)){
1587+ val = shiftjis_cp932[c2 - CP932_TABLE_BEGIN][c1 - 0x40];
1588+ if (val){
1589+ c2 = val >> 8;
1590+ c1 = val & 0xff;
1591+ }
1592+ }
1593+ if (cp932inv_f
1594+ && CP932INV_TABLE_BEGIN <= c2 && c2 <= CP932INV_TABLE_END){
1595+ val = cp932inv[c2 - CP932INV_TABLE_BEGIN][c1 - 0x40];
1596+ if (val){
1597+ c2 = val >> 8;
1598+ c1 = val & 0xff;
1599+ }
1600+ }
1601+#endif /* SHIFTJIS_CP932 */
1602+#ifdef X0212_ENABLE
1603+ if (!x0213_f && is_ibmext_in_sjis(c2)){
1604+ val = shiftjis_x0212[c2 - 0xfa][c1 - 0x40];
1605+ if (val){
1606+ if (val > 0x7FFF){
1607+ c2 = PREFIX_EUCG3 | ((val >> 8) & 0x7f);
1608+ c1 = val & 0xff;
1609+ }else{
1610+ c2 = val >> 8;
1611+ c1 = val & 0xff;
1612+ }
1613+ if (p2) *p2 = c2;
1614+ if (p1) *p1 = c1;
1615+ return 0;
1616+ }
1617+ }
1618+#endif
1619+ if(c2 >= 0x80){
1620+ if(x0213_f && c2 >= 0xF0){
1621+ if(c2 <= 0xF3 || (c2 == 0xF4 && c1 < 0x9F)){ /* k=1, 3<=k<=5, k=8, 12<=k<=15 */
1622+ c2 = PREFIX_EUCG3 | 0x20 | shift_jisx0213_s1a3_table[c2 - 0xF0][0x9E < c1];
1623+ }else{ /* 78<=k<=94 */
1624+ c2 = PREFIX_EUCG3 | (c2 * 2 - 0x17B);
1625+ if (0x9E < c1) c2++;
1626+ }
1627+ }else{
1628+#define SJ0162 0x00e1 /* 01 - 62 ku offset */
1629+#define SJ6394 0x0161 /* 63 - 94 ku offset */
1630+ c2 = c2 + c2 - ((c2 <= 0x9F) ? SJ0162 : SJ6394);
1631+ if (0x9E < c1) c2++;
1632+ }
1633+ if (c1 < 0x9F)
1634+ c1 = c1 - ((c1 > DEL) ? SP : 0x1F);
1635+ else {
1636+ c1 = c1 - 0x7E;
1637+ }
1638+ }
1639+
1640+#ifdef X0212_ENABLE
1641+ c2 = x0212_unshift(c2);
1642+#endif
1643+ if (p2) *p2 = c2;
1644+ if (p1) *p1 = c1;
1645+ return 0;
1646+}
1647+
1648+#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
1649+static void
1650+nkf_unicode_to_utf8(nkf_char val, nkf_char *p1, nkf_char *p2, nkf_char *p3, nkf_char *p4)
1651+{
1652+ val &= VALUE_MASK;
1653+ if (val < 0x80){
1654+ *p1 = val;
1655+ *p2 = 0;
1656+ *p3 = 0;
1657+ *p4 = 0;
1658+ }else if (val < 0x800){
1659+ *p1 = 0xc0 | (val >> 6);
1660+ *p2 = 0x80 | (val & 0x3f);
1661+ *p3 = 0;
1662+ *p4 = 0;
1663+ } else if (nkf_char_unicode_bmp_p(val)) {
1664+ *p1 = 0xe0 | (val >> 12);
1665+ *p2 = 0x80 | ((val >> 6) & 0x3f);
1666+ *p3 = 0x80 | ( val & 0x3f);
1667+ *p4 = 0;
1668+ } else if (nkf_char_unicode_value_p(val)) {
1669+ *p1 = 0xf0 | (val >> 18);
1670+ *p2 = 0x80 | ((val >> 12) & 0x3f);
1671+ *p3 = 0x80 | ((val >> 6) & 0x3f);
1672+ *p4 = 0x80 | ( val & 0x3f);
1673+ } else {
1674+ *p1 = 0;
1675+ *p2 = 0;
1676+ *p3 = 0;
1677+ *p4 = 0;
1678+ }
1679+}
1680+
1681+static nkf_char
1682+nkf_utf8_to_unicode(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
1683+{
1684+ nkf_char wc;
1685+ if (c1 <= 0x7F) {
1686+ /* single byte */
1687+ wc = c1;
1688+ }
1689+ else if (c1 <= 0xC3) {
1690+ /* trail byte or invalid */
1691+ return -1;
1692+ }
1693+ else if (c1 <= 0xDF) {
1694+ /* 2 bytes */
1695+ wc = (c1 & 0x1F) << 6;
1696+ wc |= (c2 & 0x3F);
1697+ }
1698+ else if (c1 <= 0xEF) {
1699+ /* 3 bytes */
1700+ wc = (c1 & 0x0F) << 12;
1701+ wc |= (c2 & 0x3F) << 6;
1702+ wc |= (c3 & 0x3F);
1703+ }
1704+ else if (c2 <= 0xF4) {
1705+ /* 4 bytes */
1706+ wc = (c1 & 0x0F) << 18;
1707+ wc |= (c2 & 0x3F) << 12;
1708+ wc |= (c3 & 0x3F) << 6;
1709+ wc |= (c4 & 0x3F);
1710+ }
1711+ else {
1712+ return -1;
1713+ }
1714+ return wc;
1715+}
1716+#endif
1717+
1718+#ifdef UTF8_INPUT_ENABLE
1719+static int
1720+unicode_to_jis_common2(nkf_char c1, nkf_char c0,
1721+ const unsigned short *const *pp, nkf_char psize,
1722+ nkf_char *p2, nkf_char *p1)
1723+{
1724+ nkf_char c2;
1725+ const unsigned short *p;
1726+ unsigned short val;
1727+
1728+ if (pp == 0) return 1;
1729+
1730+ c1 -= 0x80;
1731+ if (c1 < 0 || psize <= c1) return 1;
1732+ p = pp[c1];
1733+ if (p == 0) return 1;
1734+
1735+ c0 -= 0x80;
1736+ if (c0 < 0 || sizeof_utf8_to_euc_C2 <= c0) return 1;
1737+ val = p[c0];
1738+ if (val == 0) return 1;
1739+ if (no_cp932ext_f && (
1740+ (val>>8) == 0x2D || /* NEC special characters */
1741+ val > NKF_INT32_C(0xF300) /* IBM extended characters */
1742+ )) return 1;
1743+
1744+ c2 = val >> 8;
1745+ if (val > 0x7FFF){
1746+ c2 &= 0x7f;
1747+ c2 |= PREFIX_EUCG3;
1748+ }
1749+ if (c2 == SO) c2 = JIS_X_0201_1976_K;
1750+ c1 = val & 0xFF;
1751+ if (p2) *p2 = c2;
1752+ if (p1) *p1 = c1;
1753+ return 0;
1754+}
1755+
1756+static int
1757+unicode_to_jis_common(nkf_char c2, nkf_char c1, nkf_char c0, nkf_char *p2, nkf_char *p1)
1758+{
1759+ const unsigned short *const *pp;
1760+ const unsigned short *const *const *ppp;
1761+ static const char no_best_fit_chars_table_C2[] =
1762+ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1763+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1764+ 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 2,
1765+ 0, 0, 1, 1, 0, 1, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1};
1766+ static const char no_best_fit_chars_table_C2_ms[] =
1767+ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1768+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1769+ 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
1770+ 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0};
1771+ static const char no_best_fit_chars_table_932_C2[] =
1772+ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1773+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1774+ 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1775+ 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0};
1776+ static const char no_best_fit_chars_table_932_C3[] =
1777+ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1778+ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1779+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1780+ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1};
1781+ nkf_char ret = 0;
1782+
1783+ if(c2 < 0x80){
1784+ *p2 = 0;
1785+ *p1 = c2;
1786+ }else if(c2 < 0xe0){
1787+ if(no_best_fit_chars_f){
1788+ if(ms_ucs_map_f == UCS_MAP_CP932){
1789+ switch(c2){
1790+ case 0xC2:
1791+ if(no_best_fit_chars_table_932_C2[c1&0x3F]) return 1;
1792+ break;
1793+ case 0xC3:
1794+ if(no_best_fit_chars_table_932_C3[c1&0x3F]) return 1;
1795+ break;
1796+ }
1797+ }else if(!cp932inv_f){
1798+ switch(c2){
1799+ case 0xC2:
1800+ if(no_best_fit_chars_table_C2[c1&0x3F]) return 1;
1801+ break;
1802+ case 0xC3:
1803+ if(no_best_fit_chars_table_932_C3[c1&0x3F]) return 1;
1804+ break;
1805+ }
1806+ }else if(ms_ucs_map_f == UCS_MAP_MS){
1807+ if(c2 == 0xC2 && no_best_fit_chars_table_C2_ms[c1&0x3F]) return 1;
1808+ }else if(ms_ucs_map_f == UCS_MAP_CP10001){
1809+ switch(c2){
1810+ case 0xC2:
1811+ switch(c1){
1812+ case 0xA2:
1813+ case 0xA3:
1814+ case 0xA5:
1815+ case 0xA6:
1816+ case 0xAC:
1817+ case 0xAF:
1818+ case 0xB8:
1819+ return 1;
1820+ }
1821+ break;
1822+ }
1823+ }
1824+ }
1825+ pp =
1826+ ms_ucs_map_f == UCS_MAP_CP932 ? utf8_to_euc_2bytes_932 :
1827+ ms_ucs_map_f == UCS_MAP_MS ? utf8_to_euc_2bytes_ms :
1828+ ms_ucs_map_f == UCS_MAP_CP10001 ? utf8_to_euc_2bytes_mac :
1829+ utf8_to_euc_2bytes;
1830+ ret = unicode_to_jis_common2(c2, c1, pp, sizeof_utf8_to_euc_2bytes, p2, p1);
1831+ }else if(c0 < 0xF0){
1832+ if(no_best_fit_chars_f){
1833+ if(ms_ucs_map_f == UCS_MAP_CP932){
1834+ if(c2 == 0xE3 && c1 == 0x82 && c0 == 0x94) return 1;
1835+ }else if(ms_ucs_map_f == UCS_MAP_MS){
1836+ switch(c2){
1837+ case 0xE2:
1838+ switch(c1){
1839+ case 0x80:
1840+ if(c0 == 0x94 || c0 == 0x96 || c0 == 0xBE) return 1;
1841+ break;
1842+ case 0x88:
1843+ if(c0 == 0x92) return 1;
1844+ break;
1845+ }
1846+ break;
1847+ case 0xE3:
1848+ if(c1 == 0x80 || c0 == 0x9C) return 1;
1849+ break;
1850+ }
1851+ }else if(ms_ucs_map_f == UCS_MAP_CP10001){
1852+ switch(c2){
1853+ case 0xE3:
1854+ switch(c1){
1855+ case 0x82:
1856+ if(c0 == 0x94) return 1;
1857+ break;
1858+ case 0x83:
1859+ if(c0 == 0xBB) return 1;
1860+ break;
1861+ }
1862+ break;
1863+ }
1864+ }else{
1865+ switch(c2){
1866+ case 0xE2:
1867+ switch(c1){
1868+ case 0x80:
1869+ if(c0 == 0x95) return 1;
1870+ break;
1871+ case 0x88:
1872+ if(c0 == 0xA5) return 1;
1873+ break;
1874+ }
1875+ break;
1876+ case 0xEF:
1877+ switch(c1){
1878+ case 0xBC:
1879+ if(c0 == 0x8D) return 1;
1880+ break;
1881+ case 0xBD:
1882+ if(c0 == 0x9E && !cp932inv_f) return 1;
1883+ break;
1884+ case 0xBF:
1885+ if(0xA0 <= c0 && c0 <= 0xA5) return 1;
1886+ break;
1887+ }
1888+ break;
1889+ }
1890+ }
1891+ }
1892+ ppp =
1893+ ms_ucs_map_f == UCS_MAP_CP932 ? utf8_to_euc_3bytes_932 :
1894+ ms_ucs_map_f == UCS_MAP_MS ? utf8_to_euc_3bytes_ms :
1895+ ms_ucs_map_f == UCS_MAP_CP10001 ? utf8_to_euc_3bytes_mac :
1896+ utf8_to_euc_3bytes;
1897+ ret = unicode_to_jis_common2(c1, c0, ppp[c2 - 0xE0], sizeof_utf8_to_euc_C2, p2, p1);
1898+ }else return -1;
1899+#ifdef SHIFTJIS_CP932
1900+ if (!ret && !cp932inv_f && is_eucg3(*p2)) {
1901+ nkf_char s2, s1;
1902+ if (e2s_conv(*p2, *p1, &s2, &s1) == 0) {
1903+ s2e_conv(s2, s1, p2, p1);
1904+ }else{
1905+ ret = 1;
1906+ }
1907+ }
1908+#endif
1909+ return ret;
1910+}
1911+
1912+#ifdef UTF8_OUTPUT_ENABLE
1913+static nkf_char
1914+e2w_conv(nkf_char c2, nkf_char c1)
1915+{
1916+ const unsigned short *p;
1917+
1918+ if (c2 == JIS_X_0201_1976_K) {
1919+ if (ms_ucs_map_f == UCS_MAP_CP10001) {
1920+ switch (c1) {
1921+ case 0x20:
1922+ return 0xA0;
1923+ case 0x7D:
1924+ return 0xA9;
1925+ }
1926+ }
1927+ p = euc_to_utf8_1byte;
1928+#ifdef X0212_ENABLE
1929+ } else if (is_eucg3(c2)){
1930+ if(ms_ucs_map_f == UCS_MAP_ASCII&& c2 == NKF_INT32_C(0x8F22) && c1 == 0x43){
1931+ return 0xA6;
1932+ }
1933+ c2 = (c2&0x7f) - 0x21;
1934+ if (0<=c2 && c2<sizeof_euc_to_utf8_2bytes)
1935+ p = x0212_to_utf8_2bytes[c2];
1936+ else
1937+ return 0;
1938+#endif
1939+ } else {
1940+ c2 &= 0x7f;
1941+ c2 = (c2&0x7f) - 0x21;
1942+ if (0<=c2 && c2<sizeof_euc_to_utf8_2bytes)
1943+ p =
1944+ ms_ucs_map_f == UCS_MAP_ASCII ? euc_to_utf8_2bytes[c2] :
1945+ ms_ucs_map_f == UCS_MAP_CP10001 ? euc_to_utf8_2bytes_mac[c2] :
1946+ euc_to_utf8_2bytes_ms[c2];
1947+ else
1948+ return 0;
1949+ }
1950+ if (!p) return 0;
1951+ c1 = (c1 & 0x7f) - 0x21;
1952+ if (0<=c1 && c1<sizeof_euc_to_utf8_1byte)
1953+ return p[c1];
1954+ return 0;
1955+}
1956+#endif
1957+
1958+static nkf_char
1959+w2e_conv(nkf_char c2, nkf_char c1, nkf_char c0, nkf_char *p2, nkf_char *p1)
1960+{
1961+ nkf_char ret = 0;
1962+
1963+ if (!c1){
1964+ *p2 = 0;
1965+ *p1 = c2;
1966+ }else if (0xc0 <= c2 && c2 <= 0xef) {
1967+ ret = unicode_to_jis_common(c2, c1, c0, p2, p1);
1968+#ifdef NUMCHAR_OPTION
1969+ if (ret > 0){
1970+ if (p2) *p2 = 0;
1971+ if (p1) *p1 = nkf_char_unicode_new(nkf_utf8_to_unicode(c2, c1, c0, 0));
1972+ ret = 0;
1973+ }
1974+#endif
1975+ }
1976+ return ret;
1977+}
1978+
1979+#ifdef UTF8_INPUT_ENABLE
1980+static nkf_char
1981+w16e_conv(nkf_char val, nkf_char *p2, nkf_char *p1)
1982+{
1983+ nkf_char c1, c2, c3, c4;
1984+ nkf_char ret = 0;
1985+ val &= VALUE_MASK;
1986+ if (val < 0x80) {
1987+ *p2 = 0;
1988+ *p1 = val;
1989+ }
1990+ else if (nkf_char_unicode_bmp_p(val)){
1991+ nkf_unicode_to_utf8(val, &c1, &c2, &c3, &c4);
1992+ ret = unicode_to_jis_common(c1, c2, c3, p2, p1);
1993+ if (ret > 0){
1994+ *p2 = 0;
1995+ *p1 = nkf_char_unicode_new(val);
1996+ ret = 0;
1997+ }
1998+ }
1999+ else {
2000+ *p2 = 0;
2001+ *p1 = nkf_char_unicode_new(val);
2002+ }
2003+ return ret;
2004+}
2005+#endif
2006+
2007+static nkf_char
2008+e_iconv(nkf_char c2, nkf_char c1, nkf_char c0)
2009+{
2010+ if (c2 == JIS_X_0201_1976_K || c2 == SS2){
2011+ if (iso2022jp_f && !x0201_f) {
2012+ c2 = GETA1; c1 = GETA2;
2013+ } else {
2014+ c2 = JIS_X_0201_1976_K;
2015+ c1 &= 0x7f;
2016+ }
2017+#ifdef X0212_ENABLE
2018+ }else if (c2 == 0x8f){
2019+ if (c0 == 0){
2020+ return -1;
2021+ }
2022+ if (!cp51932_f && !x0213_f && 0xF5 <= c1 && c1 <= 0xFE && 0xA1 <= c0 && c0 <= 0xFE) {
2023+ /* encoding is eucJP-ms, so invert to Unicode Private User Area */
2024+ c1 = nkf_char_unicode_new((c1 - 0xF5) * 94 + c0 - 0xA1 + 0xE3AC);
2025+ c2 = 0;
2026+ } else {
2027+ c2 = (c2 << 8) | (c1 & 0x7f);
2028+ c1 = c0 & 0x7f;
2029+#ifdef SHIFTJIS_CP932
2030+ if (cp51932_f){
2031+ nkf_char s2, s1;
2032+ if (e2s_conv(c2, c1, &s2, &s1) == 0){
2033+ s2e_conv(s2, s1, &c2, &c1);
2034+ if (c2 < 0x100){
2035+ c1 &= 0x7f;
2036+ c2 &= 0x7f;
2037+ }
2038+ }
2039+ }
2040+#endif /* SHIFTJIS_CP932 */
2041+ }
2042+#endif /* X0212_ENABLE */
2043+ } else if ((c2 == EOF) || (c2 == 0) || c2 < SP || c2 == ISO_8859_1) {
2044+ /* NOP */
2045+ } else {
2046+ if (!cp51932_f && ms_ucs_map_f && 0xF5 <= c2 && c2 <= 0xFE && 0xA1 <= c1 && c1 <= 0xFE) {
2047+ /* encoding is eucJP-ms, so invert to Unicode Private User Area */
2048+ c1 = nkf_char_unicode_new((c2 - 0xF5) * 94 + c1 - 0xA1 + 0xE000);
2049+ c2 = 0;
2050+ } else {
2051+ c1 &= 0x7f;
2052+ c2 &= 0x7f;
2053+#ifdef SHIFTJIS_CP932
2054+ if (cp51932_f && 0x79 <= c2 && c2 <= 0x7c){
2055+ nkf_char s2, s1;
2056+ if (e2s_conv(c2, c1, &s2, &s1) == 0){
2057+ s2e_conv(s2, s1, &c2, &c1);
2058+ if (c2 < 0x100){
2059+ c1 &= 0x7f;
2060+ c2 &= 0x7f;
2061+ }
2062+ }
2063+ }
2064+#endif /* SHIFTJIS_CP932 */
2065+ }
2066+ }
2067+ (*oconv)(c2, c1);
2068+ return 0;
2069+}
2070+
2071+static nkf_char
2072+s_iconv(nkf_char c2, nkf_char c1, nkf_char c0)
2073+{
2074+ if (c2 == JIS_X_0201_1976_K || (0xA1 <= c2 && c2 <= 0xDF)) {
2075+ if (iso2022jp_f && !x0201_f) {
2076+ c2 = GETA1; c1 = GETA2;
2077+ } else {
2078+ c1 &= 0x7f;
2079+ }
2080+ } else if ((c2 == EOF) || (c2 == 0) || c2 < SP) {
2081+ /* NOP */
2082+ } else if (!x0213_f && 0xF0 <= c2 && c2 <= 0xF9 && 0x40 <= c1 && c1 <= 0xFC) {
2083+ /* CP932 UDC */
2084+ if(c1 == 0x7F) return 0;
2085+ c1 = nkf_char_unicode_new((c2 - 0xF0) * 188 + (c1 - 0x40 - (0x7E < c1)) + 0xE000);
2086+ c2 = 0;
2087+ } else {
2088+ nkf_char ret = s2e_conv(c2, c1, &c2, &c1);
2089+ if (ret) return ret;
2090+ }
2091+ (*oconv)(c2, c1);
2092+ return 0;
2093+}
2094+
2095+static nkf_char
2096+w_iconv(nkf_char c1, nkf_char c2, nkf_char c3)
2097+{
2098+ nkf_char ret = 0, c4 = 0;
2099+ static const char w_iconv_utf8_1st_byte[] =
2100+ { /* 0xC0 - 0xFF */
2101+ 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
2102+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
2103+ 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 33,
2104+ 40, 41, 41, 41, 42, 43, 43, 43, 50, 50, 50, 50, 60, 60, 70, 70};
2105+
2106+ if (c3 > 0xFF) {
2107+ c4 = c3 & 0xFF;
2108+ c3 >>= 8;
2109+ }
2110+
2111+ if (c1 < 0 || 0xff < c1) {
2112+ }else if (c1 == 0) { /* 0 : 1 byte*/
2113+ c3 = 0;
2114+ } else if ((c1 & 0xC0) == 0x80) { /* 0x80-0xbf : trail byte */
2115+ return 0;
2116+ } else{
2117+ switch (w_iconv_utf8_1st_byte[c1 - 0xC0]) {
2118+ case 21:
2119+ if (c2 < 0x80 || 0xBF < c2) return 0;
2120+ break;
2121+ case 30:
2122+ if (c3 == 0) return -1;
2123+ if (c2 < 0xA0 || 0xBF < c2 || (c3 & 0xC0) != 0x80)
2124+ return 0;
2125+ break;
2126+ case 31:
2127+ case 33:
2128+ if (c3 == 0) return -1;
2129+ if ((c2 & 0xC0) != 0x80 || (c3 & 0xC0) != 0x80)
2130+ return 0;
2131+ break;
2132+ case 32:
2133+ if (c3 == 0) return -1;
2134+ if (c2 < 0x80 || 0x9F < c2 || (c3 & 0xC0) != 0x80)
2135+ return 0;
2136+ break;
2137+ case 40:
2138+ if (c3 == 0) return -2;
2139+ if (c2 < 0x90 || 0xBF < c2 || (c3 & 0xC0) != 0x80 || (c4 & 0xC0) != 0x80)
2140+ return 0;
2141+ break;
2142+ case 41:
2143+ if (c3 == 0) return -2;
2144+ if (c2 < 0x80 || 0xBF < c2 || (c3 & 0xC0) != 0x80 || (c4 & 0xC0) != 0x80)
2145+ return 0;
2146+ break;
2147+ case 42:
2148+ if (c3 == 0) return -2;
2149+ if (c2 < 0x80 || 0x8F < c2 || (c3 & 0xC0) != 0x80 || (c4 & 0xC0) != 0x80)
2150+ return 0;
2151+ break;
2152+ default:
2153+ return 0;
2154+ break;
2155+ }
2156+ }
2157+ if (c1 == 0 || c1 == EOF){
2158+ } else if ((c1 & 0xf8) == 0xf0) { /* 4 bytes */
2159+ c2 = nkf_char_unicode_new(nkf_utf8_to_unicode(c1, c2, c3, c4));
2160+ c1 = 0;
2161+ } else {
2162+ ret = w2e_conv(c1, c2, c3, &c1, &c2);
2163+ }
2164+ if (ret == 0){
2165+ (*oconv)(c1, c2);
2166+ }
2167+ return ret;
2168+}
2169+
2170+#define NKF_ICONV_INVALID_CODE_RANGE -13
2171+static size_t
2172+unicode_iconv(nkf_char wc)
2173+{
2174+ nkf_char c1, c2;
2175+ int ret = 0;
2176+
2177+ if (wc < 0x80) {
2178+ c2 = 0;
2179+ c1 = wc;
2180+ }else if ((wc>>11) == 27) {
2181+ /* unpaired surrogate */
2182+ return NKF_ICONV_INVALID_CODE_RANGE;
2183+ }else if (wc < 0xFFFF) {
2184+ ret = w16e_conv(wc, &c2, &c1);
2185+ if (ret) return ret;
2186+ }else if (wc < 0x10FFFF) {
2187+ c2 = 0;
2188+ c1 = nkf_char_unicode_new(wc);
2189+ } else {
2190+ return NKF_ICONV_INVALID_CODE_RANGE;
2191+ }
2192+ (*oconv)(c2, c1);
2193+ return 0;
2194+}
2195+
2196+#define NKF_ICONV_NEED_ONE_MORE_BYTE -1
2197+#define NKF_ICONV_NEED_TWO_MORE_BYTES -2
2198+#define UTF16_TO_UTF32(lead, trail) (((lead) << 10) + (trail) - NKF_INT32_C(0x35FDC00))
2199+static size_t
2200+nkf_iconv_utf_16(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
2201+{
2202+ nkf_char wc;
2203+
2204+ if (c1 == EOF) {
2205+ (*oconv)(EOF, 0);
2206+ return 0;
2207+ }
2208+
2209+ if (input_endian == ENDIAN_BIG) {
2210+ if (0xD8 <= c1 && c1 <= 0xDB) {
2211+ if (0xDC <= c3 && c3 <= 0xDF) {
2212+ wc = UTF16_TO_UTF32(c1 << 8 | c2, c3 << 8 | c4);
2213+ } else return NKF_ICONV_NEED_TWO_MORE_BYTES;
2214+ } else {
2215+ wc = c1 << 8 | c2;
2216+ }
2217+ } else {
2218+ if (0xD8 <= c2 && c2 <= 0xDB) {
2219+ if (0xDC <= c4 && c4 <= 0xDF) {
2220+ wc = UTF16_TO_UTF32(c2 << 8 | c1, c4 << 8 | c3);
2221+ } else return NKF_ICONV_NEED_TWO_MORE_BYTES;
2222+ } else {
2223+ wc = c2 << 8 | c1;
2224+ }
2225+ }
2226+
2227+ return (*unicode_iconv)(wc);
2228+}
2229+
2230+static nkf_char
2231+w_iconv16(nkf_char c2, nkf_char c1, nkf_char c0)
2232+{
2233+ return 0;
2234+}
2235+
2236+static nkf_char
2237+w_iconv32(nkf_char c2, nkf_char c1, nkf_char c0)
2238+{
2239+ return 0;
2240+}
2241+
2242+static size_t
2243+nkf_iconv_utf_32(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
2244+{
2245+ nkf_char wc;
2246+
2247+ if (c1 == EOF) {
2248+ (*oconv)(EOF, 0);
2249+ return 0;
2250+ }
2251+
2252+ switch(input_endian){
2253+ case ENDIAN_BIG:
2254+ wc = c2 << 16 | c3 << 8 | c4;
2255+ break;
2256+ case ENDIAN_LITTLE:
2257+ wc = c3 << 16 | c2 << 8 | c1;
2258+ break;
2259+ case ENDIAN_2143:
2260+ wc = c1 << 16 | c4 << 8 | c3;
2261+ break;
2262+ case ENDIAN_3412:
2263+ wc = c4 << 16 | c1 << 8 | c2;
2264+ break;
2265+ default:
2266+ return NKF_ICONV_INVALID_CODE_RANGE;
2267+ }
2268+
2269+ return (*unicode_iconv)(wc);
2270+}
2271+#endif
2272+
2273+#define output_ascii_escape_sequence(mode) do { \
2274+ if (output_mode != ASCII && output_mode != ISO_8859_1) { \
2275+ (*o_putc)(ESC); \
2276+ (*o_putc)('('); \
2277+ (*o_putc)(ascii_intro); \
2278+ output_mode = mode; \
2279+ } \
2280+ } while (0)
2281+
2282+static void
2283+output_escape_sequence(int mode)
2284+{
2285+ if (output_mode == mode)
2286+ return;
2287+ switch(mode) {
2288+ case ISO_8859_1:
2289+ (*o_putc)(ESC);
2290+ (*o_putc)('.');
2291+ (*o_putc)('A');
2292+ break;
2293+ case JIS_X_0201_1976_K:
2294+ (*o_putc)(ESC);
2295+ (*o_putc)('(');
2296+ (*o_putc)('I');
2297+ break;
2298+ case JIS_X_0208:
2299+ (*o_putc)(ESC);
2300+ (*o_putc)('$');
2301+ (*o_putc)(kanji_intro);
2302+ break;
2303+ case JIS_X_0212:
2304+ (*o_putc)(ESC);
2305+ (*o_putc)('$');
2306+ (*o_putc)('(');
2307+ (*o_putc)('D');
2308+ break;
2309+ case JIS_X_0213_1:
2310+ (*o_putc)(ESC);
2311+ (*o_putc)('$');
2312+ (*o_putc)('(');
2313+ (*o_putc)('Q');
2314+ break;
2315+ case JIS_X_0213_2:
2316+ (*o_putc)(ESC);
2317+ (*o_putc)('$');
2318+ (*o_putc)('(');
2319+ (*o_putc)('P');
2320+ break;
2321+ }
2322+ output_mode = mode;
2323+}
2324+
2325+static void
2326+j_oconv(nkf_char c2, nkf_char c1)
2327+{
2328+#ifdef NUMCHAR_OPTION
2329+ if (c2 == 0 && nkf_char_unicode_p(c1)){
2330+ w16e_conv(c1, &c2, &c1);
2331+ if (c2 == 0 && nkf_char_unicode_p(c1)){
2332+ c2 = c1 & VALUE_MASK;
2333+ if (ms_ucs_map_f && 0xE000 <= c2 && c2 <= 0xE757) {
2334+ /* CP5022x UDC */
2335+ c1 &= 0xFFF;
2336+ c2 = 0x7F + c1 / 94;
2337+ c1 = 0x21 + c1 % 94;
2338+ } else {
2339+ if (encode_fallback) (*encode_fallback)(c1);
2340+ return;
2341+ }
2342+ }
2343+ }
2344+#endif
2345+ if (c2 == 0) {
2346+ output_ascii_escape_sequence(ASCII);
2347+ (*o_putc)(c1);
2348+ }
2349+ else if (c2 == EOF) {
2350+ output_ascii_escape_sequence(ASCII);
2351+ (*o_putc)(EOF);
2352+ }
2353+ else if (c2 == ISO_8859_1) {
2354+ output_ascii_escape_sequence(ISO_8859_1);
2355+ (*o_putc)(c1|0x80);
2356+ }
2357+ else if (c2 == JIS_X_0201_1976_K) {
2358+ output_escape_sequence(JIS_X_0201_1976_K);
2359+ (*o_putc)(c1);
2360+#ifdef X0212_ENABLE
2361+ } else if (is_eucg3(c2)){
2362+ output_escape_sequence(x0213_f ? JIS_X_0213_2 : JIS_X_0212);
2363+ (*o_putc)(c2 & 0x7f);
2364+ (*o_putc)(c1);
2365+#endif
2366+ } else {
2367+ if(ms_ucs_map_f
2368+ ? c2<0x20 || 0x92<c2 || c1<0x20 || 0x7e<c1
2369+ : c2<0x20 || 0x7e<c2 || c1<0x20 || 0x7e<c1) return;
2370+ output_escape_sequence(x0213_f ? JIS_X_0213_1 : JIS_X_0208);
2371+ (*o_putc)(c2);
2372+ (*o_putc)(c1);
2373+ }
2374+}
2375+
2376+static void
2377+e_oconv(nkf_char c2, nkf_char c1)
2378+{
2379+ if (c2 == 0 && nkf_char_unicode_p(c1)){
2380+ w16e_conv(c1, &c2, &c1);
2381+ if (c2 == 0 && nkf_char_unicode_p(c1)){
2382+ c2 = c1 & VALUE_MASK;
2383+ if (x0212_f && 0xE000 <= c2 && c2 <= 0xE757) {
2384+ /* eucJP-ms UDC */
2385+ c1 &= 0xFFF;
2386+ c2 = c1 / 94;
2387+ c2 += c2 < 10 ? 0x75 : 0x8FEB;
2388+ c1 = 0x21 + c1 % 94;
2389+ if (is_eucg3(c2)){
2390+ (*o_putc)(0x8f);
2391+ (*o_putc)((c2 & 0x7f) | 0x080);
2392+ (*o_putc)(c1 | 0x080);
2393+ }else{
2394+ (*o_putc)((c2 & 0x7f) | 0x080);
2395+ (*o_putc)(c1 | 0x080);
2396+ }
2397+ return;
2398+ } else {
2399+ if (encode_fallback) (*encode_fallback)(c1);
2400+ return;
2401+ }
2402+ }
2403+ }
2404+
2405+ if (c2 == EOF) {
2406+ (*o_putc)(EOF);
2407+ } else if (c2 == 0) {
2408+ output_mode = ASCII;
2409+ (*o_putc)(c1);
2410+ } else if (c2 == JIS_X_0201_1976_K) {
2411+ output_mode = EUC_JP;
2412+ (*o_putc)(SS2); (*o_putc)(c1|0x80);
2413+ } else if (c2 == ISO_8859_1) {
2414+ output_mode = ISO_8859_1;
2415+ (*o_putc)(c1 | 0x080);
2416+#ifdef X0212_ENABLE
2417+ } else if (is_eucg3(c2)){
2418+ output_mode = EUC_JP;
2419+#ifdef SHIFTJIS_CP932
2420+ if (!cp932inv_f){
2421+ nkf_char s2, s1;
2422+ if (e2s_conv(c2, c1, &s2, &s1) == 0){
2423+ s2e_conv(s2, s1, &c2, &c1);
2424+ }
2425+ }
2426+#endif
2427+ if (c2 == 0) {
2428+ output_mode = ASCII;
2429+ (*o_putc)(c1);
2430+ }else if (is_eucg3(c2)){
2431+ if (x0212_f){
2432+ (*o_putc)(0x8f);
2433+ (*o_putc)((c2 & 0x7f) | 0x080);
2434+ (*o_putc)(c1 | 0x080);
2435+ }
2436+ }else{
2437+ (*o_putc)((c2 & 0x7f) | 0x080);
2438+ (*o_putc)(c1 | 0x080);
2439+ }
2440+#endif
2441+ } else {
2442+ if (!nkf_isgraph(c1) || !nkf_isgraph(c2)) {
2443+ set_iconv(FALSE, 0);
2444+ return; /* too late to rescue this char */
2445+ }
2446+ output_mode = EUC_JP;
2447+ (*o_putc)(c2 | 0x080);
2448+ (*o_putc)(c1 | 0x080);
2449+ }
2450+}
2451+
2452+static void
2453+s_oconv(nkf_char c2, nkf_char c1)
2454+{
2455+#ifdef NUMCHAR_OPTION
2456+ if (c2 == 0 && nkf_char_unicode_p(c1)){
2457+ w16e_conv(c1, &c2, &c1);
2458+ if (c2 == 0 && nkf_char_unicode_p(c1)){
2459+ c2 = c1 & VALUE_MASK;
2460+ if (!x0213_f && 0xE000 <= c2 && c2 <= 0xE757) {
2461+ /* CP932 UDC */
2462+ c1 &= 0xFFF;
2463+ c2 = c1 / 188 + (cp932inv_f ? 0xF0 : 0xEB);
2464+ c1 = c1 % 188;
2465+ c1 += 0x40 + (c1 > 0x3e);
2466+ (*o_putc)(c2);
2467+ (*o_putc)(c1);
2468+ return;
2469+ } else {
2470+ if(encode_fallback)(*encode_fallback)(c1);
2471+ return;
2472+ }
2473+ }
2474+ }
2475+#endif
2476+ if (c2 == EOF) {
2477+ (*o_putc)(EOF);
2478+ return;
2479+ } else if (c2 == 0) {
2480+ output_mode = ASCII;
2481+ (*o_putc)(c1);
2482+ } else if (c2 == JIS_X_0201_1976_K) {
2483+ output_mode = SHIFT_JIS;
2484+ (*o_putc)(c1|0x80);
2485+ } else if (c2 == ISO_8859_1) {
2486+ output_mode = ISO_8859_1;
2487+ (*o_putc)(c1 | 0x080);
2488+#ifdef X0212_ENABLE
2489+ } else if (is_eucg3(c2)){
2490+ output_mode = SHIFT_JIS;
2491+ if (e2s_conv(c2, c1, &c2, &c1) == 0){
2492+ (*o_putc)(c2);
2493+ (*o_putc)(c1);
2494+ }
2495+#endif
2496+ } else {
2497+ if (!nkf_isprint(c1) || !nkf_isprint(c2)) {
2498+ set_iconv(FALSE, 0);
2499+ return; /* too late to rescue this char */
2500+ }
2501+ output_mode = SHIFT_JIS;
2502+ e2s_conv(c2, c1, &c2, &c1);
2503+
2504+#ifdef SHIFTJIS_CP932
2505+ if (cp932inv_f
2506+ && CP932INV_TABLE_BEGIN <= c2 && c2 <= CP932INV_TABLE_END){
2507+ nkf_char c = cp932inv[c2 - CP932INV_TABLE_BEGIN][c1 - 0x40];
2508+ if (c){
2509+ c2 = c >> 8;
2510+ c1 = c & 0xff;
2511+ }
2512+ }
2513+#endif /* SHIFTJIS_CP932 */
2514+
2515+ (*o_putc)(c2);
2516+ if (prefix_table[(unsigned char)c1]){
2517+ (*o_putc)(prefix_table[(unsigned char)c1]);
2518+ }
2519+ (*o_putc)(c1);
2520+ }
2521+}
2522+
2523+#ifdef UTF8_OUTPUT_ENABLE
2524+static void
2525+w_oconv(nkf_char c2, nkf_char c1)
2526+{
2527+ nkf_char c3, c4;
2528+ nkf_char val;
2529+
2530+ if (output_bom_f) {
2531+ output_bom_f = FALSE;
2532+ (*o_putc)('\357');
2533+ (*o_putc)('\273');
2534+ (*o_putc)('\277');
2535+ }
2536+
2537+ if (c2 == EOF) {
2538+ (*o_putc)(EOF);
2539+ return;
2540+ }
2541+
2542+ if (c2 == 0 && nkf_char_unicode_p(c1)){
2543+ val = c1 & VALUE_MASK;
2544+ nkf_unicode_to_utf8(val, &c1, &c2, &c3, &c4);
2545+ (*o_putc)(c1);
2546+ if (c2) (*o_putc)(c2);
2547+ if (c3) (*o_putc)(c3);
2548+ if (c4) (*o_putc)(c4);
2549+ return;
2550+ }
2551+
2552+ if (c2 == 0) {
2553+ (*o_putc)(c1);
2554+ } else {
2555+ val = e2w_conv(c2, c1);
2556+ if (val){
2557+ nkf_unicode_to_utf8(val, &c1, &c2, &c3, &c4);
2558+ (*o_putc)(c1);
2559+ if (c2) (*o_putc)(c2);
2560+ if (c3) (*o_putc)(c3);
2561+ if (c4) (*o_putc)(c4);
2562+ }
2563+ }
2564+}
2565+
2566+static void
2567+w_oconv16(nkf_char c2, nkf_char c1)
2568+{
2569+ if (output_bom_f) {
2570+ output_bom_f = FALSE;
2571+ if (output_endian == ENDIAN_LITTLE){
2572+ (*o_putc)(0xFF);
2573+ (*o_putc)(0xFE);
2574+ }else{
2575+ (*o_putc)(0xFE);
2576+ (*o_putc)(0xFF);
2577+ }
2578+ }
2579+
2580+ if (c2 == EOF) {
2581+ (*o_putc)(EOF);
2582+ return;
2583+ }
2584+
2585+ if (c2 == 0 && nkf_char_unicode_p(c1)) {
2586+ if (nkf_char_unicode_bmp_p(c1)) {
2587+ c2 = (c1 >> 8) & 0xff;
2588+ c1 &= 0xff;
2589+ } else {
2590+ c1 &= VALUE_MASK;
2591+ if (c1 <= UNICODE_MAX) {
2592+ c2 = (c1 >> 10) + NKF_INT32_C(0xD7C0); /* high surrogate */
2593+ c1 = (c1 & 0x3FF) + NKF_INT32_C(0xDC00); /* low surrogate */
2594+ if (output_endian == ENDIAN_LITTLE){
2595+ (*o_putc)(c2 & 0xff);
2596+ (*o_putc)((c2 >> 8) & 0xff);
2597+ (*o_putc)(c1 & 0xff);
2598+ (*o_putc)((c1 >> 8) & 0xff);
2599+ }else{
2600+ (*o_putc)((c2 >> 8) & 0xff);
2601+ (*o_putc)(c2 & 0xff);
2602+ (*o_putc)((c1 >> 8) & 0xff);
2603+ (*o_putc)(c1 & 0xff);
2604+ }
2605+ }
2606+ return;
2607+ }
2608+ } else if (c2) {
2609+ nkf_char val = e2w_conv(c2, c1);
2610+ c2 = (val >> 8) & 0xff;
2611+ c1 = val & 0xff;
2612+ if (!val) return;
2613+ }
2614+
2615+ if (output_endian == ENDIAN_LITTLE){
2616+ (*o_putc)(c1);
2617+ (*o_putc)(c2);
2618+ }else{
2619+ (*o_putc)(c2);
2620+ (*o_putc)(c1);
2621+ }
2622+}
2623+
2624+static void
2625+w_oconv32(nkf_char c2, nkf_char c1)
2626+{
2627+ if (output_bom_f) {
2628+ output_bom_f = FALSE;
2629+ if (output_endian == ENDIAN_LITTLE){
2630+ (*o_putc)(0xFF);
2631+ (*o_putc)(0xFE);
2632+ (*o_putc)(0);
2633+ (*o_putc)(0);
2634+ }else{
2635+ (*o_putc)(0);
2636+ (*o_putc)(0);
2637+ (*o_putc)(0xFE);
2638+ (*o_putc)(0xFF);
2639+ }
2640+ }
2641+
2642+ if (c2 == EOF) {
2643+ (*o_putc)(EOF);
2644+ return;
2645+ }
2646+
2647+ if (c2 == ISO_8859_1) {
2648+ c1 |= 0x80;
2649+ } else if (c2 == 0 && nkf_char_unicode_p(c1)) {
2650+ c1 &= VALUE_MASK;
2651+ } else if (c2) {
2652+ c1 = e2w_conv(c2, c1);
2653+ if (!c1) return;
2654+ }
2655+ if (output_endian == ENDIAN_LITTLE){
2656+ (*o_putc)( c1 & 0xFF);
2657+ (*o_putc)((c1 >> 8) & 0xFF);
2658+ (*o_putc)((c1 >> 16) & 0xFF);
2659+ (*o_putc)(0);
2660+ }else{
2661+ (*o_putc)(0);
2662+ (*o_putc)((c1 >> 16) & 0xFF);
2663+ (*o_putc)((c1 >> 8) & 0xFF);
2664+ (*o_putc)( c1 & 0xFF);
2665+ }
2666+}
2667+#endif
2668+
2669+#define SCORE_L2 (1) /* Kanji Level 2 */
2670+#define SCORE_KANA (SCORE_L2 << 1) /* Halfwidth Katakana */
2671+#define SCORE_DEPEND (SCORE_KANA << 1) /* MD Characters */
2672+#define SCORE_CP932 (SCORE_DEPEND << 1) /* IBM extended characters */
2673+#define SCORE_X0212 (SCORE_CP932 << 1) /* JIS X 0212 */
2674+#define SCORE_NO_EXIST (SCORE_X0212 << 1) /* Undefined Characters */
2675+#define SCORE_iMIME (SCORE_NO_EXIST << 1) /* MIME selected */
2676+#define SCORE_ERROR (SCORE_iMIME << 1) /* Error */
2677+
2678+#define SCORE_INIT (SCORE_iMIME)
2679+
2680+static const nkf_char score_table_A0[] = {
2681+ 0, 0, 0, 0,
2682+ 0, 0, 0, 0,
2683+ 0, SCORE_DEPEND, SCORE_DEPEND, SCORE_DEPEND,
2684+ SCORE_DEPEND, SCORE_DEPEND, SCORE_DEPEND, SCORE_NO_EXIST,
2685+};
2686+
2687+static const nkf_char score_table_F0[] = {
2688+ SCORE_L2, SCORE_L2, SCORE_L2, SCORE_L2,
2689+ SCORE_L2, SCORE_DEPEND, SCORE_NO_EXIST, SCORE_NO_EXIST,
2690+ SCORE_DEPEND, SCORE_DEPEND, SCORE_CP932, SCORE_CP932,
2691+ SCORE_CP932, SCORE_NO_EXIST, SCORE_NO_EXIST, SCORE_ERROR,
2692+};
2693+
2694+static void
2695+set_code_score(struct input_code *ptr, nkf_char score)
2696+{
2697+ if (ptr){
2698+ ptr->score |= score;
2699+ }
2700+}
2701+
2702+static void
2703+clr_code_score(struct input_code *ptr, nkf_char score)
2704+{
2705+ if (ptr){
2706+ ptr->score &= ~score;
2707+ }
2708+}
2709+
2710+static void
2711+code_score(struct input_code *ptr)
2712+{
2713+ nkf_char c2 = ptr->buf[0];
2714+#ifdef UTF8_OUTPUT_ENABLE
2715+ nkf_char c1 = ptr->buf[1];
2716+#endif
2717+ if (c2 < 0){
2718+ set_code_score(ptr, SCORE_ERROR);
2719+ }else if (c2 == SS2){
2720+ set_code_score(ptr, SCORE_KANA);
2721+ }else if (c2 == 0x8f){
2722+ set_code_score(ptr, SCORE_X0212);
2723+#ifdef UTF8_OUTPUT_ENABLE
2724+ }else if (!e2w_conv(c2, c1)){
2725+ set_code_score(ptr, SCORE_NO_EXIST);
2726+#endif
2727+ }else if ((c2 & 0x70) == 0x20){
2728+ set_code_score(ptr, score_table_A0[c2 & 0x0f]);
2729+ }else if ((c2 & 0x70) == 0x70){
2730+ set_code_score(ptr, score_table_F0[c2 & 0x0f]);
2731+ }else if ((c2 & 0x70) >= 0x50){
2732+ set_code_score(ptr, SCORE_L2);
2733+ }
2734+}
2735+
2736+static void
2737+status_disable(struct input_code *ptr)
2738+{
2739+ ptr->stat = -1;
2740+ ptr->buf[0] = -1;
2741+ code_score(ptr);
2742+ if (iconv == ptr->iconv_func) set_iconv(FALSE, 0);
2743+}
2744+
2745+static void
2746+status_push_ch(struct input_code *ptr, nkf_char c)
2747+{
2748+ ptr->buf[ptr->index++] = c;
2749+}
2750+
2751+static void
2752+status_clear(struct input_code *ptr)
2753+{
2754+ ptr->stat = 0;
2755+ ptr->index = 0;
2756+}
2757+
2758+static void
2759+status_reset(struct input_code *ptr)
2760+{
2761+ status_clear(ptr);
2762+ ptr->score = SCORE_INIT;
2763+}
2764+
2765+static void
2766+status_reinit(struct input_code *ptr)
2767+{
2768+ status_reset(ptr);
2769+ ptr->_file_stat = 0;
2770+}
2771+
2772+static void
2773+status_check(struct input_code *ptr, nkf_char c)
2774+{
2775+ if (c <= DEL && estab_f){
2776+ status_reset(ptr);
2777+ }
2778+}
2779+
2780+static void
2781+s_status(struct input_code *ptr, nkf_char c)
2782+{
2783+ switch(ptr->stat){
2784+ case -1:
2785+ status_check(ptr, c);
2786+ break;
2787+ case 0:
2788+ if (c <= DEL){
2789+ break;
2790+ }else if (nkf_char_unicode_p(c)){
2791+ break;
2792+ }else if (0xa1 <= c && c <= 0xdf){
2793+ status_push_ch(ptr, SS2);
2794+ status_push_ch(ptr, c);
2795+ code_score(ptr);
2796+ status_clear(ptr);
2797+ }else if ((0x81 <= c && c < 0xa0) || (0xe0 <= c && c <= 0xea)){
2798+ ptr->stat = 1;
2799+ status_push_ch(ptr, c);
2800+ }else if (0xed <= c && c <= 0xee){
2801+ ptr->stat = 3;
2802+ status_push_ch(ptr, c);
2803+#ifdef SHIFTJIS_CP932
2804+ }else if (is_ibmext_in_sjis(c)){
2805+ ptr->stat = 2;
2806+ status_push_ch(ptr, c);
2807+#endif /* SHIFTJIS_CP932 */
2808+#ifdef X0212_ENABLE
2809+ }else if (0xf0 <= c && c <= 0xfc){
2810+ ptr->stat = 1;
2811+ status_push_ch(ptr, c);
2812+#endif /* X0212_ENABLE */
2813+ }else{
2814+ status_disable(ptr);
2815+ }
2816+ break;
2817+ case 1:
2818+ if ((0x40 <= c && c <= 0x7e) || (0x80 <= c && c <= 0xfc)){
2819+ status_push_ch(ptr, c);
2820+ s2e_conv(ptr->buf[0], ptr->buf[1], &ptr->buf[0], &ptr->buf[1]);
2821+ code_score(ptr);
2822+ status_clear(ptr);
2823+ }else{
2824+ status_disable(ptr);
2825+ }
2826+ break;
2827+ case 2:
2828+#ifdef SHIFTJIS_CP932
2829+ if ((0x40 <= c && c <= 0x7e) || (0x80 <= c && c <= 0xfc)) {
2830+ status_push_ch(ptr, c);
2831+ if (s2e_conv(ptr->buf[0], ptr->buf[1], &ptr->buf[0], &ptr->buf[1]) == 0) {
2832+ set_code_score(ptr, SCORE_CP932);
2833+ status_clear(ptr);
2834+ break;
2835+ }
2836+ }
2837+#endif /* SHIFTJIS_CP932 */
2838+ status_disable(ptr);
2839+ break;
2840+ case 3:
2841+ if ((0x40 <= c && c <= 0x7e) || (0x80 <= c && c <= 0xfc)){
2842+ status_push_ch(ptr, c);
2843+ s2e_conv(ptr->buf[0], ptr->buf[1], &ptr->buf[0], &ptr->buf[1]);
2844+ set_code_score(ptr, SCORE_CP932);
2845+ status_clear(ptr);
2846+ }else{
2847+ status_disable(ptr);
2848+ }
2849+ break;
2850+ }
2851+}
2852+
2853+static void
2854+e_status(struct input_code *ptr, nkf_char c)
2855+{
2856+ switch (ptr->stat){
2857+ case -1:
2858+ status_check(ptr, c);
2859+ break;
2860+ case 0:
2861+ if (c <= DEL){
2862+ break;
2863+ }else if (nkf_char_unicode_p(c)){
2864+ break;
2865+ }else if (SS2 == c || (0xa1 <= c && c <= 0xfe)){
2866+ ptr->stat = 1;
2867+ status_push_ch(ptr, c);
2868+#ifdef X0212_ENABLE
2869+ }else if (0x8f == c){
2870+ ptr->stat = 2;
2871+ status_push_ch(ptr, c);
2872+#endif /* X0212_ENABLE */
2873+ }else{
2874+ status_disable(ptr);
2875+ }
2876+ break;
2877+ case 1:
2878+ if (0xa1 <= c && c <= 0xfe){
2879+ status_push_ch(ptr, c);
2880+ code_score(ptr);
2881+ status_clear(ptr);
2882+ }else{
2883+ status_disable(ptr);
2884+ }
2885+ break;
2886+#ifdef X0212_ENABLE
2887+ case 2:
2888+ if (0xa1 <= c && c <= 0xfe){
2889+ ptr->stat = 1;
2890+ status_push_ch(ptr, c);
2891+ }else{
2892+ status_disable(ptr);
2893+ }
2894+#endif /* X0212_ENABLE */
2895+ }
2896+}
2897+
2898+#ifdef UTF8_INPUT_ENABLE
2899+static void
2900+w_status(struct input_code *ptr, nkf_char c)
2901+{
2902+ switch (ptr->stat){
2903+ case -1:
2904+ status_check(ptr, c);
2905+ break;
2906+ case 0:
2907+ if (c <= DEL){
2908+ break;
2909+ }else if (nkf_char_unicode_p(c)){
2910+ break;
2911+ }else if (0xc0 <= c && c <= 0xdf){
2912+ ptr->stat = 1;
2913+ status_push_ch(ptr, c);
2914+ }else if (0xe0 <= c && c <= 0xef){
2915+ ptr->stat = 2;
2916+ status_push_ch(ptr, c);
2917+ }else if (0xf0 <= c && c <= 0xf4){
2918+ ptr->stat = 3;
2919+ status_push_ch(ptr, c);
2920+ }else{
2921+ status_disable(ptr);
2922+ }
2923+ break;
2924+ case 1:
2925+ case 2:
2926+ if (0x80 <= c && c <= 0xbf){
2927+ status_push_ch(ptr, c);
2928+ if (ptr->index > ptr->stat){
2929+ int bom = (ptr->buf[0] == 0xef && ptr->buf[1] == 0xbb
2930+ && ptr->buf[2] == 0xbf);
2931+ w2e_conv(ptr->buf[0], ptr->buf[1], ptr->buf[2],
2932+ &ptr->buf[0], &ptr->buf[1]);
2933+ if (!bom){
2934+ code_score(ptr);
2935+ }
2936+ status_clear(ptr);
2937+ }
2938+ }else{
2939+ status_disable(ptr);
2940+ }
2941+ break;
2942+ case 3:
2943+ if (0x80 <= c && c <= 0xbf){
2944+ if (ptr->index < ptr->stat){
2945+ status_push_ch(ptr, c);
2946+ } else {
2947+ status_clear(ptr);
2948+ }
2949+ }else{
2950+ status_disable(ptr);
2951+ }
2952+ break;
2953+ }
2954+}
2955+#endif
2956+
2957+static void
2958+code_status(nkf_char c)
2959+{
2960+ int action_flag = 1;
2961+ struct input_code *result = 0;
2962+ struct input_code *p = input_code_list;
2963+ while (p->name){
2964+ if (!p->status_func) {
2965+ ++p;
2966+ continue;
2967+ }
2968+ if (!p->status_func)
2969+ continue;
2970+ (p->status_func)(p, c);
2971+ if (p->stat > 0){
2972+ action_flag = 0;
2973+ }else if(p->stat == 0){
2974+ if (result){
2975+ action_flag = 0;
2976+ }else{
2977+ result = p;
2978+ }
2979+ }
2980+ ++p;
2981+ }
2982+
2983+ if (action_flag){
2984+ if (result && !estab_f){
2985+ set_iconv(TRUE, result->iconv_func);
2986+ }else if (c <= DEL){
2987+ struct input_code *ptr = input_code_list;
2988+ while (ptr->name){
2989+ status_reset(ptr);
2990+ ++ptr;
2991+ }
2992+ }
2993+ }
2994+}
2995+
2996+typedef struct {
2997+ nkf_buf_t *std_gc_buf;
2998+ nkf_char broken_state;
2999+ nkf_buf_t *broken_buf;
3000+ nkf_char mimeout_state;
3001+ nkf_buf_t *nfc_buf;
3002+} nkf_state_t;
3003+
3004+static nkf_state_t *nkf_state = NULL;
3005+
3006+#define STD_GC_BUFSIZE (256)
3007+
3008+static void
3009+nkf_state_init(void)
3010+{
3011+ if (nkf_state) {
3012+ nkf_buf_clear(nkf_state->std_gc_buf);
3013+ nkf_buf_clear(nkf_state->broken_buf);
3014+ nkf_buf_clear(nkf_state->nfc_buf);
3015+ }
3016+ else {
3017+ nkf_state = nkf_xmalloc(sizeof(nkf_state_t));
3018+ nkf_state->std_gc_buf = nkf_buf_new(STD_GC_BUFSIZE);
3019+ nkf_state->broken_buf = nkf_buf_new(3);
3020+ nkf_state->nfc_buf = nkf_buf_new(9);
3021+ }
3022+ nkf_state->broken_state = 0;
3023+ nkf_state->mimeout_state = 0;
3024+}
3025+
3026+#ifndef WIN32DLL
3027+static nkf_char
3028+std_getc(FILE *f)
3029+{
3030+ if (!nkf_buf_empty_p(nkf_state->std_gc_buf)){
3031+ return nkf_buf_pop(nkf_state->std_gc_buf);
3032+ }
3033+ return getc(f);
3034+}
3035+#endif /*WIN32DLL*/
3036+
3037+static nkf_char
3038+std_ungetc(nkf_char c, FILE *f)
3039+{
3040+ nkf_buf_push(nkf_state->std_gc_buf, c);
3041+ return c;
3042+}
3043+
3044+#ifndef WIN32DLL
3045+static void
3046+std_putc(nkf_char c)
3047+{
3048+ if(c!=EOF)
3049+ putchar(c);
3050+}
3051+#endif /*WIN32DLL*/
3052+
3053+static unsigned char hold_buf[HOLD_SIZE*2];
3054+static int hold_count = 0;
3055+static nkf_char
3056+push_hold_buf(nkf_char c2)
3057+{
3058+ if (hold_count >= HOLD_SIZE*2)
3059+ return (EOF);
3060+ hold_buf[hold_count++] = (unsigned char)c2;
3061+ return ((hold_count >= HOLD_SIZE*2) ? EOF : hold_count);
3062+}
3063+
3064+static int
3065+h_conv(FILE *f, int c1, int c2)
3066+{
3067+ int ret, c4, c3;
3068+ int hold_index;
3069+
3070+
3071+ /** it must NOT be in the kanji shifte sequence */
3072+ /** it must NOT be written in JIS7 */
3073+ /** and it must be after 2 byte 8bit code */
3074+
3075+ hold_count = 0;
3076+ push_hold_buf(c1);
3077+ push_hold_buf(c2);
3078+
3079+ while ((c2 = (*i_getc)(f)) != EOF) {
3080+ if (c2 == ESC){
3081+ (*i_ungetc)(c2,f);
3082+ break;
3083+ }
3084+ code_status(c2);
3085+ if (push_hold_buf(c2) == EOF || estab_f) {
3086+ break;
3087+ }
3088+ }
3089+
3090+ if (!estab_f) {
3091+ struct input_code *p = input_code_list;
3092+ struct input_code *result = p;
3093+ if (c2 == EOF) {
3094+ code_status(c2);
3095+ }
3096+ while (p->name) {
3097+ if (p->status_func && p->score < result->score) {
3098+ result = p;
3099+ }
3100+ p++;
3101+ }
3102+ set_iconv(TRUE, result->iconv_func);
3103+ }
3104+
3105+
3106+ /** now,
3107+ ** 1) EOF is detected, or
3108+ ** 2) Code is established, or
3109+ ** 3) Buffer is FULL (but last word is pushed)
3110+ **
3111+ ** in 1) and 3) cases, we continue to use
3112+ ** Kanji codes by oconv and leave estab_f unchanged.
3113+ **/
3114+
3115+ ret = c2;
3116+ hold_index = 0;
3117+ while (hold_index < hold_count){
3118+ c1 = hold_buf[hold_index++];
3119+ if (c1 <= DEL){
3120+ (*iconv)(0, c1, 0);
3121+ continue;
3122+ }else if (iconv == s_iconv && 0xa1 <= c1 && c1 <= 0xdf){
3123+ (*iconv)(JIS_X_0201_1976_K, c1, 0);
3124+ continue;
3125+ }
3126+ if (hold_index < hold_count){
3127+ c2 = hold_buf[hold_index++];
3128+ }else{
3129+ c2 = (*i_getc)(f);
3130+ if (c2 == EOF){
3131+ c4 = EOF;
3132+ break;
3133+ }
3134+ code_status(c2);
3135+ }
3136+ c3 = 0;
3137+ switch ((*iconv)(c1, c2, 0)) { /* can be EUC/SJIS/UTF-8 */
3138+ case -2:
3139+ /* 4 bytes UTF-8 */
3140+ if (hold_index < hold_count){
3141+ c3 = hold_buf[hold_index++];
3142+ } else if ((c3 = (*i_getc)(f)) == EOF) {
3143+ ret = EOF;
3144+ break;
3145+ }
3146+ code_status(c3);
3147+ if (hold_index < hold_count){
3148+ c4 = hold_buf[hold_index++];
3149+ } else if ((c4 = (*i_getc)(f)) == EOF) {
3150+ c3 = ret = EOF;
3151+ break;
3152+ }
3153+ code_status(c4);
3154+ (*iconv)(c1, c2, (c3<<8)|c4);
3155+ break;
3156+ case -1:
3157+ /* 3 bytes EUC or UTF-8 */
3158+ if (hold_index < hold_count){
3159+ c3 = hold_buf[hold_index++];
3160+ } else if ((c3 = (*i_getc)(f)) == EOF) {
3161+ ret = EOF;
3162+ break;
3163+ } else {
3164+ code_status(c3);
3165+ }
3166+ (*iconv)(c1, c2, c3);
3167+ break;
3168+ }
3169+ if (c3 == EOF) break;
3170+ }
3171+ return ret;
3172+}
3173+
3174+/*
3175+ * Check and Ignore BOM
3176+ */
3177+static void
3178+check_bom(FILE *f)
3179+{
3180+ int c2;
3181+ switch(c2 = (*i_getc)(f)){
3182+ case 0x00:
3183+ if((c2 = (*i_getc)(f)) == 0x00){
3184+ if((c2 = (*i_getc)(f)) == 0xFE){
3185+ if((c2 = (*i_getc)(f)) == 0xFF){
3186+ if(!input_encoding){
3187+ set_iconv(TRUE, w_iconv32);
3188+ }
3189+ if (iconv == w_iconv32) {
3190+ input_endian = ENDIAN_BIG;
3191+ return;
3192+ }
3193+ (*i_ungetc)(0xFF,f);
3194+ }else (*i_ungetc)(c2,f);
3195+ (*i_ungetc)(0xFE,f);
3196+ }else if(c2 == 0xFF){
3197+ if((c2 = (*i_getc)(f)) == 0xFE){
3198+ if(!input_encoding){
3199+ set_iconv(TRUE, w_iconv32);
3200+ }
3201+ if (iconv == w_iconv32) {
3202+ input_endian = ENDIAN_2143;
3203+ return;
3204+ }
3205+ (*i_ungetc)(0xFF,f);
3206+ }else (*i_ungetc)(c2,f);
3207+ (*i_ungetc)(0xFF,f);
3208+ }else (*i_ungetc)(c2,f);
3209+ (*i_ungetc)(0x00,f);
3210+ }else (*i_ungetc)(c2,f);
3211+ (*i_ungetc)(0x00,f);
3212+ break;
3213+ case 0xEF:
3214+ if((c2 = (*i_getc)(f)) == 0xBB){
3215+ if((c2 = (*i_getc)(f)) == 0xBF){
3216+ if(!input_encoding){
3217+ set_iconv(TRUE, w_iconv);
3218+ }
3219+ if (iconv == w_iconv) {
3220+ return;
3221+ }
3222+ (*i_ungetc)(0xBF,f);
3223+ }else (*i_ungetc)(c2,f);
3224+ (*i_ungetc)(0xBB,f);
3225+ }else (*i_ungetc)(c2,f);
3226+ (*i_ungetc)(0xEF,f);
3227+ break;
3228+ case 0xFE:
3229+ if((c2 = (*i_getc)(f)) == 0xFF){
3230+ if((c2 = (*i_getc)(f)) == 0x00){
3231+ if((c2 = (*i_getc)(f)) == 0x00){
3232+ if(!input_encoding){
3233+ set_iconv(TRUE, w_iconv32);
3234+ }
3235+ if (iconv == w_iconv32) {
3236+ input_endian = ENDIAN_3412;
3237+ return;
3238+ }
3239+ (*i_ungetc)(0x00,f);
3240+ }else (*i_ungetc)(c2,f);
3241+ (*i_ungetc)(0x00,f);
3242+ }else (*i_ungetc)(c2,f);
3243+ if(!input_encoding){
3244+ set_iconv(TRUE, w_iconv16);
3245+ }
3246+ if (iconv == w_iconv16) {
3247+ input_endian = ENDIAN_BIG;
3248+ return;
3249+ }
3250+ (*i_ungetc)(0xFF,f);
3251+ }else (*i_ungetc)(c2,f);
3252+ (*i_ungetc)(0xFE,f);
3253+ break;
3254+ case 0xFF:
3255+ if((c2 = (*i_getc)(f)) == 0xFE){
3256+ if((c2 = (*i_getc)(f)) == 0x00){
3257+ if((c2 = (*i_getc)(f)) == 0x00){
3258+ if(!input_encoding){
3259+ set_iconv(TRUE, w_iconv32);
3260+ }
3261+ if (iconv == w_iconv32) {
3262+ input_endian = ENDIAN_LITTLE;
3263+ return;
3264+ }
3265+ (*i_ungetc)(0x00,f);
3266+ }else (*i_ungetc)(c2,f);
3267+ (*i_ungetc)(0x00,f);
3268+ }else (*i_ungetc)(c2,f);
3269+ if(!input_encoding){
3270+ set_iconv(TRUE, w_iconv16);
3271+ }
3272+ if (iconv == w_iconv16) {
3273+ input_endian = ENDIAN_LITTLE;
3274+ return;
3275+ }
3276+ (*i_ungetc)(0xFE,f);
3277+ }else (*i_ungetc)(c2,f);
3278+ (*i_ungetc)(0xFF,f);
3279+ break;
3280+ default:
3281+ (*i_ungetc)(c2,f);
3282+ break;
3283+ }
3284+}
3285+
3286+static nkf_char
3287+broken_getc(FILE *f)
3288+{
3289+ nkf_char c, c1;
3290+
3291+ if (!nkf_buf_empty_p(nkf_state->broken_buf)) {
3292+ return nkf_buf_pop(nkf_state->broken_buf);
3293+ }
3294+ c = (*i_bgetc)(f);
3295+ if (c=='$' && nkf_state->broken_state != ESC
3296+ && (input_mode == ASCII || input_mode == JIS_X_0201_1976_K)) {
3297+ c1= (*i_bgetc)(f);
3298+ nkf_state->broken_state = 0;
3299+ if (c1=='@'|| c1=='B') {
3300+ nkf_buf_push(nkf_state->broken_buf, c1);
3301+ nkf_buf_push(nkf_state->broken_buf, c);
3302+ return ESC;
3303+ } else {
3304+ (*i_bungetc)(c1,f);
3305+ return c;
3306+ }
3307+ } else if (c=='(' && nkf_state->broken_state != ESC
3308+ && (input_mode == JIS_X_0208 || input_mode == JIS_X_0201_1976_K)) {
3309+ c1= (*i_bgetc)(f);
3310+ nkf_state->broken_state = 0;
3311+ if (c1=='J'|| c1=='B') {
3312+ nkf_buf_push(nkf_state->broken_buf, c1);
3313+ nkf_buf_push(nkf_state->broken_buf, c);
3314+ return ESC;
3315+ } else {
3316+ (*i_bungetc)(c1,f);
3317+ return c;
3318+ }
3319+ } else {
3320+ nkf_state->broken_state = c;
3321+ return c;
3322+ }
3323+}
3324+
3325+static nkf_char
3326+broken_ungetc(nkf_char c, FILE *f)
3327+{
3328+ if (nkf_buf_length(nkf_state->broken_buf) < 2)
3329+ nkf_buf_push(nkf_state->broken_buf, c);
3330+ return c;
3331+}
3332+
3333+static void
3334+eol_conv(nkf_char c2, nkf_char c1)
3335+{
3336+ if (guess_f && input_eol != EOF) {
3337+ if (c2 == 0 && c1 == LF) {
3338+ if (!input_eol) input_eol = prev_cr ? CRLF : LF;
3339+ else if (input_eol != (prev_cr ? CRLF : LF)) input_eol = EOF;
3340+ } else if (c2 == 0 && c1 == CR && input_eol == LF) input_eol = EOF;
3341+ else if (!prev_cr);
3342+ else if (!input_eol) input_eol = CR;
3343+ else if (input_eol != CR) input_eol = EOF;
3344+ }
3345+ if (prev_cr || (c2 == 0 && c1 == LF)) {
3346+ prev_cr = 0;
3347+ if (eolmode_f != LF) (*o_eol_conv)(0, CR);
3348+ if (eolmode_f != CR) (*o_eol_conv)(0, LF);
3349+ }
3350+ if (c2 == 0 && c1 == CR) prev_cr = CR;
3351+ else if (c2 != 0 || c1 != LF) (*o_eol_conv)(c2, c1);
3352+}
3353+
3354+/*
3355+ Return value of fold_conv()
3356+
3357+ LF add newline and output char
3358+ CR add newline and output nothing
3359+ SP space
3360+ 0 skip
3361+ 1 (or else) normal output
3362+
3363+ fold state in prev (previous character)
3364+
3365+ >0x80 Japanese (X0208/X0201)
3366+ <0x80 ASCII
3367+ LF new line
3368+ SP space
3369+
3370+ This fold algorthm does not preserve heading space in a line.
3371+ This is the main difference from fmt.
3372+ */
3373+
3374+#define char_size(c2,c1) (c2?2:1)
3375+
3376+static void
3377+fold_conv(nkf_char c2, nkf_char c1)
3378+{
3379+ nkf_char prev0;
3380+ nkf_char fold_state;
3381+
3382+ if (c1== CR && !fold_preserve_f) {
3383+ fold_state=0; /* ignore cr */
3384+ }else if (c1== LF&&f_prev==CR && fold_preserve_f) {
3385+ f_prev = LF;
3386+ fold_state=0; /* ignore cr */
3387+ } else if (c1== BS) {
3388+ if (f_line>0) f_line--;
3389+ fold_state = 1;
3390+ } else if (c2==EOF && f_line != 0) { /* close open last line */
3391+ fold_state = LF;
3392+ } else if ((c1==LF && !fold_preserve_f)
3393+ || ((c1==CR||(c1==LF&&f_prev!=CR))
3394+ && fold_preserve_f)) {
3395+ /* new line */
3396+ if (fold_preserve_f) {
3397+ f_prev = c1;
3398+ f_line = 0;
3399+ fold_state = CR;
3400+ } else if ((f_prev == c1 && !fold_preserve_f)
3401+ || (f_prev == LF && fold_preserve_f)
3402+ ) { /* duplicate newline */
3403+ if (f_line) {
3404+ f_line = 0;
3405+ fold_state = LF; /* output two newline */
3406+ } else {
3407+ f_line = 0;
3408+ fold_state = 1;
3409+ }
3410+ } else {
3411+ if (f_prev&0x80) { /* Japanese? */
3412+ f_prev = c1;
3413+ fold_state = 0; /* ignore given single newline */
3414+ } else if (f_prev==SP) {
3415+ fold_state = 0;
3416+ } else {
3417+ f_prev = c1;
3418+ if (++f_line<=fold_len)
3419+ fold_state = SP;
3420+ else {
3421+ f_line = 0;
3422+ fold_state = CR; /* fold and output nothing */
3423+ }
3424+ }
3425+ }
3426+ } else if (c1=='\f') {
3427+ f_prev = LF;
3428+ f_line = 0;
3429+ fold_state = LF; /* output newline and clear */
3430+ } else if ((c2==0 && nkf_isblank(c1)) || (c2 == '!' && c1 == '!')) {
3431+ /* X0208 kankaku or ascii space */
3432+ if (f_prev == SP) {
3433+ fold_state = 0; /* remove duplicate spaces */
3434+ } else {
3435+ f_prev = SP;
3436+ if (++f_line<=fold_len)
3437+ fold_state = SP; /* output ASCII space only */
3438+ else {
3439+ f_prev = SP; f_line = 0;
3440+ fold_state = CR; /* fold and output nothing */
3441+ }
3442+ }
3443+ } else {
3444+ prev0 = f_prev; /* we still need this one... , but almost done */
3445+ f_prev = c1;
3446+ if (c2 || c2 == JIS_X_0201_1976_K)
3447+ f_prev |= 0x80; /* this is Japanese */
3448+ f_line += char_size(c2,c1);
3449+ if (f_line<=fold_len) { /* normal case */
3450+ fold_state = 1;
3451+ } else {
3452+ if (f_line>fold_len+fold_margin) { /* too many kinsoku suspension */
3453+ f_line = char_size(c2,c1);
3454+ fold_state = LF; /* We can't wait, do fold now */
3455+ } else if (c2 == JIS_X_0201_1976_K) {
3456+ /* simple kinsoku rules return 1 means no folding */
3457+ if (c1==(0xde&0x7f)) fold_state = 1; /* ゛*/
3458+ else if (c1==(0xdf&0x7f)) fold_state = 1; /* ゜*/
3459+ else if (c1==(0xa4&0x7f)) fold_state = 1; /* 。*/
3460+ else if (c1==(0xa3&0x7f)) fold_state = 1; /* ,*/
3461+ else if (c1==(0xa1&0x7f)) fold_state = 1; /* 」*/
3462+ else if (c1==(0xb0&0x7f)) fold_state = 1; /* - */
3463+ else if (SP<=c1 && c1<=(0xdf&0x7f)) { /* X0201 */
3464+ f_line = 1;
3465+ fold_state = LF;/* add one new f_line before this character */
3466+ } else {
3467+ f_line = 1;
3468+ fold_state = LF;/* add one new f_line before this character */
3469+ }
3470+ } else if (c2==0) {
3471+ /* kinsoku point in ASCII */
3472+ if ( c1==')'|| /* { [ ( */
3473+ c1==']'||
3474+ c1=='}'||
3475+ c1=='.'||
3476+ c1==','||
3477+ c1=='!'||
3478+ c1=='?'||
3479+ c1=='/'||
3480+ c1==':'||
3481+ c1==';') {
3482+ fold_state = 1;
3483+ /* just after special */
3484+ } else if (!is_alnum(prev0)) {
3485+ f_line = char_size(c2,c1);
3486+ fold_state = LF;
3487+ } else if ((prev0==SP) || /* ignored new f_line */
3488+ (prev0==LF)|| /* ignored new f_line */
3489+ (prev0&0x80)) { /* X0208 - ASCII */
3490+ f_line = char_size(c2,c1);
3491+ fold_state = LF;/* add one new f_line before this character */
3492+ } else {
3493+ fold_state = 1; /* default no fold in ASCII */
3494+ }
3495+ } else {
3496+ if (c2=='!') {
3497+ if (c1=='"') fold_state = 1; /* 、 */
3498+ else if (c1=='#') fold_state = 1; /* 。 */
3499+ else if (c1=='W') fold_state = 1; /* 」 */
3500+ else if (c1=='K') fold_state = 1; /* ) */
3501+ else if (c1=='$') fold_state = 1; /* , */
3502+ else if (c1=='%') fold_state = 1; /* . */
3503+ else if (c1=='\'') fold_state = 1; /* + */
3504+ else if (c1=='(') fold_state = 1; /* ; */
3505+ else if (c1==')') fold_state = 1; /* ? */
3506+ else if (c1=='*') fold_state = 1; /* ! */
3507+ else if (c1=='+') fold_state = 1; /* ゛ */
3508+ else if (c1==',') fold_state = 1; /* ゜ */
3509+ /* default no fold in kinsoku */
3510+ else {
3511+ fold_state = LF;
3512+ f_line = char_size(c2,c1);
3513+ /* add one new f_line before this character */
3514+ }
3515+ } else {
3516+ f_line = char_size(c2,c1);
3517+ fold_state = LF;
3518+ /* add one new f_line before this character */
3519+ }
3520+ }
3521+ }
3522+ }
3523+ /* terminator process */
3524+ switch(fold_state) {
3525+ case LF:
3526+ OCONV_NEWLINE((*o_fconv));
3527+ (*o_fconv)(c2,c1);
3528+ break;
3529+ case 0:
3530+ return;
3531+ case CR:
3532+ OCONV_NEWLINE((*o_fconv));
3533+ break;
3534+ case TAB:
3535+ case SP:
3536+ (*o_fconv)(0,SP);
3537+ break;
3538+ default:
3539+ (*o_fconv)(c2,c1);
3540+ }
3541+}
3542+
3543+static nkf_char z_prev2=0,z_prev1=0;
3544+
3545+static void
3546+z_conv(nkf_char c2, nkf_char c1)
3547+{
3548+
3549+ /* if (c2) c1 &= 0x7f; assertion */
3550+
3551+ if (c2 == JIS_X_0201_1976_K && (c1 == 0x20 || c1 == 0x7D || c1 == 0x7E)) {
3552+ (*o_zconv)(c2,c1);
3553+ return;
3554+ }
3555+
3556+ if (x0201_f) {
3557+ if (z_prev2 == JIS_X_0201_1976_K) {
3558+ if (c2 == JIS_X_0201_1976_K) {
3559+ if (c1 == (0xde&0x7f)) { /* 濁点 */
3560+ z_prev2 = 0;
3561+ (*o_zconv)(dv[(z_prev1-SP)*2], dv[(z_prev1-SP)*2+1]);
3562+ return;
3563+ } else if (c1 == (0xdf&0x7f) && ev[(z_prev1-SP)*2]) { /* 半濁点 */
3564+ z_prev2 = 0;
3565+ (*o_zconv)(ev[(z_prev1-SP)*2], ev[(z_prev1-SP)*2+1]);
3566+ return;
3567+ }
3568+ }
3569+ z_prev2 = 0;
3570+ (*o_zconv)(cv[(z_prev1-SP)*2], cv[(z_prev1-SP)*2+1]);
3571+ }
3572+ if (c2 == JIS_X_0201_1976_K) {
3573+ if (dv[(c1-SP)*2] || ev[(c1-SP)*2]) {
3574+ /* wait for 濁点 or 半濁点 */
3575+ z_prev1 = c1;
3576+ z_prev2 = c2;
3577+ return;
3578+ } else {
3579+ (*o_zconv)(cv[(c1-SP)*2], cv[(c1-SP)*2+1]);
3580+ return;
3581+ }
3582+ }
3583+ }
3584+
3585+ if (c2 == EOF) {
3586+ (*o_zconv)(c2, c1);
3587+ return;
3588+ }
3589+
3590+ if (alpha_f&1 && c2 == 0x23) {
3591+ /* JISX0208 Alphabet */
3592+ c2 = 0;
3593+ } else if (c2 == 0x21) {
3594+ /* JISX0208 Kigou */
3595+ if (0x21==c1) {
3596+ if (alpha_f&2) {
3597+ c2 = 0;
3598+ c1 = SP;
3599+ } else if (alpha_f&4) {
3600+ (*o_zconv)(0, SP);
3601+ (*o_zconv)(0, SP);
3602+ return;
3603+ }
3604+ } else if (alpha_f&1 && 0x20<c1 && c1<0x7f && fv[c1-0x20]) {
3605+ c2 = 0;
3606+ c1 = fv[c1-0x20];
3607+ }
3608+ }
3609+
3610+ if (alpha_f&8 && c2 == 0) {
3611+ /* HTML Entity */
3612+ const char *entity = 0;
3613+ switch (c1){
3614+ case '>': entity = "&gt;"; break;
3615+ case '<': entity = "&lt;"; break;
3616+ case '\"': entity = "&quot;"; break;
3617+ case '&': entity = "&amp;"; break;
3618+ }
3619+ if (entity){
3620+ while (*entity) (*o_zconv)(0, *entity++);
3621+ return;
3622+ }
3623+ }
3624+
3625+ if (alpha_f & 16) {
3626+ /* JIS X 0208 Katakana to JIS X 0201 Katakana */
3627+ if (c2 == 0x21) {
3628+ nkf_char c = 0;
3629+ switch (c1) {
3630+ case 0x23:
3631+ /* U+3002 (0x8142) Ideographic Full Stop -> U+FF61 (0xA1) Halfwidth Ideographic Full Stop */
3632+ c = 0xA1;
3633+ break;
3634+ case 0x56:
3635+ /* U+300C (0x8175) Left Corner Bracket -> U+FF62 (0xA2) Halfwidth Left Corner Bracket */
3636+ c = 0xA2;
3637+ break;
3638+ case 0x57:
3639+ /* U+300D (0x8176) Right Corner Bracket -> U+FF63 (0xA3) Halfwidth Right Corner Bracket */
3640+ c = 0xA3;
3641+ break;
3642+ case 0x22:
3643+ /* U+3001 (0x8141) Ideographic Comma -> U+FF64 (0xA4) Halfwidth Ideographic Comma */
3644+ c = 0xA4;
3645+ break;
3646+ case 0x26:
3647+ /* U+30FB (0x8145) Katakana Middle Dot -> U+FF65 (0xA5) Halfwidth Katakana Middle Dot */
3648+ c = 0xA5;
3649+ break;
3650+ case 0x3C:
3651+ /* U+30FC (0x815B) Katakana-Hiragana Prolonged Sound Mark -> U+FF70 (0xB0) Halfwidth Katakana-Hiragana Prolonged Sound Mark */
3652+ c = 0xB0;
3653+ break;
3654+ case 0x2B:
3655+ /* U+309B (0x814A) Katakana-Hiragana Voiced Sound Mark -> U+FF9E (0xDE) Halfwidth Katakana Voiced Sound Mark */
3656+ c = 0xDE;
3657+ break;
3658+ case 0x2C:
3659+ /* U+309C (0x814B) Katakana-Hiragana Semi-Voiced Sound Mark -> U+FF9F (0xDF) Halfwidth Katakana Semi-Voiced Sound Mark */
3660+ c = 0xDF;
3661+ break;
3662+ }
3663+ if (c) {
3664+ (*o_zconv)(JIS_X_0201_1976_K, c);
3665+ return;
3666+ }
3667+ } else if (c2 == 0x25) {
3668+ /* JISX0208 Katakana */
3669+ static const int fullwidth_to_halfwidth[] =
3670+ {
3671+ 0x0000, 0x2700, 0x3100, 0x2800, 0x3200, 0x2900, 0x3300, 0x2A00,
3672+ 0x3400, 0x2B00, 0x3500, 0x3600, 0x365E, 0x3700, 0x375E, 0x3800,
3673+ 0x385E, 0x3900, 0x395E, 0x3A00, 0x3A5E, 0x3B00, 0x3B5E, 0x3C00,
3674+ 0x3C5E, 0x3D00, 0x3D5E, 0x3E00, 0x3E5E, 0x3F00, 0x3F5E, 0x4000,
3675+ 0x405E, 0x4100, 0x415E, 0x2F00, 0x4200, 0x425E, 0x4300, 0x435E,
3676+ 0x4400, 0x445E, 0x4500, 0x4600, 0x4700, 0x4800, 0x4900, 0x4A00,
3677+ 0x4A5E, 0x4A5F, 0x4B00, 0x4B5E, 0x4B5F, 0x4C00, 0x4C5E, 0x4C5F,
3678+ 0x4D00, 0x4D5E, 0x4D5F, 0x4E00, 0x4E5E, 0x4E5F, 0x4F00, 0x5000,
3679+ 0x5100, 0x5200, 0x5300, 0x2C00, 0x5400, 0x2D00, 0x5500, 0x2E00,
3680+ 0x5600, 0x5700, 0x5800, 0x5900, 0x5A00, 0x5B00, 0x0000, 0x5C00,
3681+ 0x0000, 0x0000, 0x2600, 0x5D00, 0x335E, 0x0000, 0x0000, 0x0000,
3682+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
3683+ };
3684+ if (fullwidth_to_halfwidth[c1-0x20]){
3685+ c2 = fullwidth_to_halfwidth[c1-0x20];
3686+ (*o_zconv)(JIS_X_0201_1976_K, c2>>8);
3687+ if (c2 & 0xFF) {
3688+ (*o_zconv)(JIS_X_0201_1976_K, c2&0xFF);
3689+ }
3690+ return;
3691+ }
3692+ }
3693+ }
3694+ (*o_zconv)(c2,c1);
3695+}
3696+
3697+
3698+#define rot13(c) ( \
3699+ ( c < 'A') ? c: \
3700+ (c <= 'M') ? (c + 13): \
3701+ (c <= 'Z') ? (c - 13): \
3702+ (c < 'a') ? (c): \
3703+ (c <= 'm') ? (c + 13): \
3704+ (c <= 'z') ? (c - 13): \
3705+ (c) \
3706+ )
3707+
3708+#define rot47(c) ( \
3709+ ( c < '!') ? c: \
3710+ ( c <= 'O') ? (c + 47) : \
3711+ ( c <= '~') ? (c - 47) : \
3712+ c \
3713+ )
3714+
3715+static void
3716+rot_conv(nkf_char c2, nkf_char c1)
3717+{
3718+ if (c2 == 0 || c2 == JIS_X_0201_1976_K || c2 == ISO_8859_1) {
3719+ c1 = rot13(c1);
3720+ } else if (c2) {
3721+ c1 = rot47(c1);
3722+ c2 = rot47(c2);
3723+ }
3724+ (*o_rot_conv)(c2,c1);
3725+}
3726+
3727+static void
3728+hira_conv(nkf_char c2, nkf_char c1)
3729+{
3730+ if (hira_f & 1) {
3731+ if (c2 == 0x25) {
3732+ if (0x20 < c1 && c1 < 0x74) {
3733+ c2 = 0x24;
3734+ (*o_hira_conv)(c2,c1);
3735+ return;
3736+ } else if (c1 == 0x74 && nkf_enc_unicode_p(output_encoding)) {
3737+ c2 = 0;
3738+ c1 = nkf_char_unicode_new(0x3094);
3739+ (*o_hira_conv)(c2,c1);
3740+ return;
3741+ }
3742+ } else if (c2 == 0x21 && (c1 == 0x33 || c1 == 0x34)) {
3743+ c1 += 2;
3744+ (*o_hira_conv)(c2,c1);
3745+ return;
3746+ }
3747+ }
3748+ if (hira_f & 2) {
3749+ if (c2 == 0 && c1 == nkf_char_unicode_new(0x3094)) {
3750+ c2 = 0x25;
3751+ c1 = 0x74;
3752+ } else if (c2 == 0x24 && 0x20 < c1 && c1 < 0x74) {
3753+ c2 = 0x25;
3754+ } else if (c2 == 0x21 && (c1 == 0x35 || c1 == 0x36)) {
3755+ c1 -= 2;
3756+ }
3757+ }
3758+ (*o_hira_conv)(c2,c1);
3759+}
3760+
3761+
3762+static void
3763+iso2022jp_check_conv(nkf_char c2, nkf_char c1)
3764+{
3765+#define RANGE_NUM_MAX 18
3766+ static const nkf_char range[RANGE_NUM_MAX][2] = {
3767+ {0x222f, 0x2239,},
3768+ {0x2242, 0x2249,},
3769+ {0x2251, 0x225b,},
3770+ {0x226b, 0x2271,},
3771+ {0x227a, 0x227d,},
3772+ {0x2321, 0x232f,},
3773+ {0x233a, 0x2340,},
3774+ {0x235b, 0x2360,},
3775+ {0x237b, 0x237e,},
3776+ {0x2474, 0x247e,},
3777+ {0x2577, 0x257e,},
3778+ {0x2639, 0x2640,},
3779+ {0x2659, 0x267e,},
3780+ {0x2742, 0x2750,},
3781+ {0x2772, 0x277e,},
3782+ {0x2841, 0x287e,},
3783+ {0x4f54, 0x4f7e,},
3784+ {0x7425, 0x747e},
3785+ };
3786+ nkf_char i;
3787+ nkf_char start, end, c;
3788+
3789+ if(c2 >= 0x00 && c2 <= 0x20 && c1 >= 0x7f && c1 <= 0xff) {
3790+ c2 = GETA1;
3791+ c1 = GETA2;
3792+ }
3793+ if((c2 >= 0x29 && c2 <= 0x2f) || (c2 >= 0x75 && c2 <= 0x7e)) {
3794+ c2 = GETA1;
3795+ c1 = GETA2;
3796+ }
3797+
3798+ for (i = 0; i < RANGE_NUM_MAX; i++) {
3799+ start = range[i][0];
3800+ end = range[i][1];
3801+ c = (c2 << 8) + c1;
3802+ if (c >= start && c <= end) {
3803+ c2 = GETA1;
3804+ c1 = GETA2;
3805+ }
3806+ }
3807+ (*o_iso2022jp_check_conv)(c2,c1);
3808+}
3809+
3810+
3811+/* This converts =?ISO-2022-JP?B?HOGE HOGE?= */
3812+
3813+static const unsigned char *mime_pattern[] = {
3814+ (const unsigned char *)"\075?EUC-JP?B?",
3815+ (const unsigned char *)"\075?SHIFT_JIS?B?",
3816+ (const unsigned char *)"\075?ISO-8859-1?Q?",
3817+ (const unsigned char *)"\075?ISO-8859-1?B?",
3818+ (const unsigned char *)"\075?ISO-2022-JP?B?",
3819+ (const unsigned char *)"\075?ISO-2022-JP?Q?",
3820+#if defined(UTF8_INPUT_ENABLE)
3821+ (const unsigned char *)"\075?UTF-8?B?",
3822+ (const unsigned char *)"\075?UTF-8?Q?",
3823+#endif
3824+ (const unsigned char *)"\075?US-ASCII?Q?",
3825+ NULL
3826+};
3827+
3828+
3829+/* 該当するコードの優先度を上げるための目印 */
3830+nkf_char (*mime_priority_func[])(nkf_char c2, nkf_char c1, nkf_char c0) = {
3831+ e_iconv, s_iconv, 0, 0, 0, 0,
3832+#if defined(UTF8_INPUT_ENABLE)
3833+ w_iconv, w_iconv,
3834+#endif
3835+ 0,
3836+};
3837+
3838+static const nkf_char mime_encode[] = {
3839+ EUC_JP, SHIFT_JIS, ISO_8859_1, ISO_8859_1, JIS_X_0208, JIS_X_0201_1976_K,
3840+#if defined(UTF8_INPUT_ENABLE)
3841+ UTF_8, UTF_8,
3842+#endif
3843+ ASCII,
3844+ 0
3845+};
3846+
3847+static const nkf_char mime_encode_method[] = {
3848+ 'B', 'B','Q', 'B', 'B', 'Q',
3849+#if defined(UTF8_INPUT_ENABLE)
3850+ 'B', 'Q',
3851+#endif
3852+ 'Q',
3853+ 0
3854+};
3855+
3856+
3857+/* MIME preprocessor fifo */
3858+
3859+#define MIME_BUF_SIZE (1024) /* 2^n ring buffer */
3860+#define MIME_BUF_MASK (MIME_BUF_SIZE-1)
3861+#define mime_input_buf(n) mime_input_state.buf[(n)&MIME_BUF_MASK]
3862+static struct {
3863+ unsigned char buf[MIME_BUF_SIZE];
3864+ unsigned int top;
3865+ unsigned int last; /* decoded */
3866+ unsigned int input; /* undecoded */
3867+} mime_input_state;
3868+static nkf_char (*mime_iconv_back)(nkf_char c2,nkf_char c1,nkf_char c0) = NULL;
3869+
3870+#define MAXRECOVER 20
3871+
3872+static void
3873+mime_input_buf_unshift(nkf_char c)
3874+{
3875+ mime_input_buf(--mime_input_state.top) = (unsigned char)c;
3876+}
3877+
3878+static nkf_char
3879+mime_ungetc(nkf_char c, FILE *f)
3880+{
3881+ mime_input_buf_unshift(c);
3882+ return c;
3883+}
3884+
3885+static nkf_char
3886+mime_ungetc_buf(nkf_char c, FILE *f)
3887+{
3888+ if (mimebuf_f)
3889+ (*i_mungetc_buf)(c,f);
3890+ else
3891+ mime_input_buf(--mime_input_state.input) = (unsigned char)c;
3892+ return c;
3893+}
3894+
3895+static nkf_char
3896+mime_getc_buf(FILE *f)
3897+{
3898+ /* we don't keep eof of mime_input_buf, becase it contains ?= as
3899+ a terminator. It was checked in mime_integrity. */
3900+ return ((mimebuf_f)?
3901+ (*i_mgetc_buf)(f):mime_input_buf(mime_input_state.input++));
3902+}
3903+
3904+static void
3905+switch_mime_getc(void)
3906+{
3907+ if (i_getc!=mime_getc) {
3908+ i_mgetc = i_getc; i_getc = mime_getc;
3909+ i_mungetc = i_ungetc; i_ungetc = mime_ungetc;
3910+ if(mime_f==STRICT_MIME) {
3911+ i_mgetc_buf = i_mgetc; i_mgetc = mime_getc_buf;
3912+ i_mungetc_buf = i_mungetc; i_mungetc = mime_ungetc_buf;
3913+ }
3914+ }
3915+}
3916+
3917+static void
3918+unswitch_mime_getc(void)
3919+{
3920+ if(mime_f==STRICT_MIME) {
3921+ i_mgetc = i_mgetc_buf;
3922+ i_mungetc = i_mungetc_buf;
3923+ }
3924+ i_getc = i_mgetc;
3925+ i_ungetc = i_mungetc;
3926+ if(mime_iconv_back)set_iconv(FALSE, mime_iconv_back);
3927+ mime_iconv_back = NULL;
3928+}
3929+
3930+static nkf_char
3931+mime_integrity(FILE *f, const unsigned char *p)
3932+{
3933+ nkf_char c,d;
3934+ unsigned int q;
3935+ /* In buffered mode, read until =? or NL or buffer full
3936+ */
3937+ mime_input_state.input = mime_input_state.top;
3938+ mime_input_state.last = mime_input_state.top;
3939+
3940+ while(*p) mime_input_buf(mime_input_state.input++) = *p++;
3941+ d = 0;
3942+ q = mime_input_state.input;
3943+ while((c=(*i_getc)(f))!=EOF) {
3944+ if (((mime_input_state.input-mime_input_state.top)&MIME_BUF_MASK)==0) {
3945+ break; /* buffer full */
3946+ }
3947+ if (c=='=' && d=='?') {
3948+ /* checked. skip header, start decode */
3949+ mime_input_buf(mime_input_state.input++) = (unsigned char)c;
3950+ /* mime_last_input = mime_input_state.input; */
3951+ mime_input_state.input = q;
3952+ switch_mime_getc();
3953+ return 1;
3954+ }
3955+ if (!( (c=='+'||c=='/'|| c=='=' || c=='?' || is_alnum(c))))
3956+ break;
3957+ /* Should we check length mod 4? */
3958+ mime_input_buf(mime_input_state.input++) = (unsigned char)c;
3959+ d=c;
3960+ }
3961+ /* In case of Incomplete MIME, no MIME decode */
3962+ mime_input_buf(mime_input_state.input++) = (unsigned char)c;
3963+ mime_input_state.last = mime_input_state.input; /* point undecoded buffer */
3964+ mime_decode_mode = 1; /* no decode on mime_input_buf last in mime_getc */
3965+ switch_mime_getc(); /* anyway we need buffered getc */
3966+ return 1;
3967+}
3968+
3969+static nkf_char
3970+mime_begin_strict(FILE *f)
3971+{
3972+ nkf_char c1 = 0;
3973+ int i,j,k;
3974+ const unsigned char *p,*q;
3975+ nkf_char r[MAXRECOVER]; /* recovery buffer, max mime pattern length */
3976+
3977+ mime_decode_mode = FALSE;
3978+ /* =? has been checked */
3979+ j = 0;
3980+ p = mime_pattern[j];
3981+ r[0]='='; r[1]='?';
3982+
3983+ for(i=2;p[i]>SP;i++) { /* start at =? */
3984+ if (((r[i] = c1 = (*i_getc)(f))==EOF) || nkf_toupper(c1) != p[i]) {
3985+ /* pattern fails, try next one */
3986+ q = p;
3987+ while (mime_pattern[++j]) {
3988+ p = mime_pattern[j];
3989+ for(k=2;k<i;k++) /* assume length(p) > i */
3990+ if (p[k]!=q[k]) break;
3991+ if (k==i && nkf_toupper(c1)==p[k]) break;
3992+ }
3993+ p = mime_pattern[j];
3994+ if (p) continue; /* found next one, continue */
3995+ /* all fails, output from recovery buffer */
3996+ (*i_ungetc)(c1,f);
3997+ for(j=0;j<i;j++) {
3998+ (*oconv)(0,r[j]);
3999+ }
4000+ return c1;
4001+ }
4002+ }
4003+ mime_decode_mode = p[i-2];
4004+
4005+ mime_iconv_back = iconv;
4006+ set_iconv(FALSE, mime_priority_func[j]);
4007+ clr_code_score(find_inputcode_byfunc(mime_priority_func[j]), SCORE_iMIME);
4008+
4009+ if (mime_decode_mode=='B') {
4010+ mimebuf_f = unbuf_f;
4011+ if (!unbuf_f) {
4012+ /* do MIME integrity check */
4013+ return mime_integrity(f,mime_pattern[j]);
4014+ }
4015+ }
4016+ switch_mime_getc();
4017+ mimebuf_f = TRUE;
4018+ return c1;
4019+}
4020+
4021+static nkf_char
4022+mime_begin(FILE *f)
4023+{
4024+ nkf_char c1;
4025+ int i,k;
4026+
4027+ /* In NONSTRICT mode, only =? is checked. In case of failure, we */
4028+ /* re-read and convert again from mime_buffer. */
4029+
4030+ /* =? has been checked */
4031+ k = mime_input_state.last;
4032+ mime_input_buf(mime_input_state.last++)='='; mime_input_buf(mime_input_state.last++)='?';
4033+ for(i=2;i<MAXRECOVER;i++) { /* start at =? */
4034+ /* We accept any character type even if it is breaked by new lines */
4035+ c1 = (*i_getc)(f); mime_input_buf(mime_input_state.last++) = (unsigned char)c1;
4036+ if (c1==LF||c1==SP||c1==CR||
4037+ c1=='-'||c1=='_'||is_alnum(c1)) continue;
4038+ if (c1=='=') {
4039+ /* Failed. But this could be another MIME preemble */
4040+ (*i_ungetc)(c1,f);
4041+ mime_input_state.last--;
4042+ break;
4043+ }
4044+ if (c1!='?') break;
4045+ else {
4046+ /* c1=='?' */
4047+ c1 = (*i_getc)(f); mime_input_buf(mime_input_state.last++) = (unsigned char)c1;
4048+ if (!(++i<MAXRECOVER) || c1==EOF) break;
4049+ if (c1=='b'||c1=='B') {
4050+ mime_decode_mode = 'B';
4051+ } else if (c1=='q'||c1=='Q') {
4052+ mime_decode_mode = 'Q';
4053+ } else {
4054+ break;
4055+ }
4056+ c1 = (*i_getc)(f); mime_input_buf(mime_input_state.last++) = (unsigned char)c1;
4057+ if (!(++i<MAXRECOVER) || c1==EOF) break;
4058+ if (c1!='?') {
4059+ mime_decode_mode = FALSE;
4060+ }
4061+ break;
4062+ }
4063+ }
4064+ switch_mime_getc();
4065+ if (!mime_decode_mode) {
4066+ /* false MIME premble, restart from mime_buffer */
4067+ mime_decode_mode = 1; /* no decode, but read from the mime_buffer */
4068+ /* Since we are in MIME mode until buffer becomes empty, */
4069+ /* we never go into mime_begin again for a while. */
4070+ return c1;
4071+ }
4072+ /* discard mime preemble, and goto MIME mode */
4073+ mime_input_state.last = k;
4074+ /* do no MIME integrity check */
4075+ return c1; /* used only for checking EOF */
4076+}
4077+
4078+#ifdef CHECK_OPTION
4079+static void
4080+no_putc(nkf_char c)
4081+{
4082+ ;
4083+}
4084+
4085+static void
4086+debug(const char *str)
4087+{
4088+ if (debug_f){
4089+ fprintf(stderr, "%s\n", str ? str : "NULL");
4090+ }
4091+}
4092+#endif
4093+
4094+static void
4095+set_input_codename(const char *codename)
4096+{
4097+ if (!input_codename) {
4098+ input_codename = codename;
4099+ } else if (strcmp(codename, input_codename) != 0) {
4100+ input_codename = "";
4101+ }
4102+}
4103+
4104+static const char*
4105+get_guessed_code(void)
4106+{
4107+ if (input_codename && !*input_codename) {
4108+ input_codename = "BINARY";
4109+ } else {
4110+ struct input_code *p = find_inputcode_byfunc(iconv);
4111+ if (!input_codename) {
4112+ input_codename = "ASCII";
4113+ } else if (strcmp(input_codename, "Shift_JIS") == 0) {
4114+ if (p->score & (SCORE_DEPEND|SCORE_CP932))
4115+ input_codename = "CP932";
4116+ } else if (strcmp(input_codename, "EUC-JP") == 0) {
4117+ if (p->score & (SCORE_X0212))
4118+ input_codename = "EUCJP-MS";
4119+ else if (p->score & (SCORE_DEPEND|SCORE_CP932))
4120+ input_codename = "CP51932";
4121+ } else if (strcmp(input_codename, "ISO-2022-JP") == 0) {
4122+ if (p->score & (SCORE_KANA))
4123+ input_codename = "CP50221";
4124+ else if (p->score & (SCORE_DEPEND|SCORE_CP932))
4125+ input_codename = "CP50220";
4126+ }
4127+ }
4128+ return input_codename;
4129+}
4130+
4131+#if !defined(PERL_XS) && !defined(WIN32DLL)
4132+static void
4133+print_guessed_code(char *filename)
4134+{
4135+ if (filename != NULL) printf("%s: ", filename);
4136+ if (input_codename && !*input_codename) {
4137+ printf("BINARY\n");
4138+ } else {
4139+ input_codename = get_guessed_code();
4140+ if (guess_f == 1) {
4141+ printf("%s\n", input_codename);
4142+ } else {
4143+ printf("%s%s\n",
4144+ input_codename,
4145+ input_eol == CR ? " (CR)" :
4146+ input_eol == LF ? " (LF)" :
4147+ input_eol == CRLF ? " (CRLF)" :
4148+ input_eol == EOF ? " (MIXED NL)" :
4149+ "");
4150+ }
4151+ }
4152+}
4153+#endif /*WIN32DLL*/
4154+
4155+#ifdef INPUT_OPTION
4156+
4157+static nkf_char
4158+hex_getc(nkf_char ch, FILE *f, nkf_char (*g)(FILE *f), nkf_char (*u)(nkf_char c, FILE *f))
4159+{
4160+ nkf_char c1, c2, c3;
4161+ c1 = (*g)(f);
4162+ if (c1 != ch){
4163+ return c1;
4164+ }
4165+ c2 = (*g)(f);
4166+ if (!nkf_isxdigit(c2)){
4167+ (*u)(c2, f);
4168+ return c1;
4169+ }
4170+ c3 = (*g)(f);
4171+ if (!nkf_isxdigit(c3)){
4172+ (*u)(c2, f);
4173+ (*u)(c3, f);
4174+ return c1;
4175+ }
4176+ return (hex2bin(c2) << 4) | hex2bin(c3);
4177+}
4178+
4179+static nkf_char
4180+cap_getc(FILE *f)
4181+{
4182+ return hex_getc(':', f, i_cgetc, i_cungetc);
4183+}
4184+
4185+static nkf_char
4186+cap_ungetc(nkf_char c, FILE *f)
4187+{
4188+ return (*i_cungetc)(c, f);
4189+}
4190+
4191+static nkf_char
4192+url_getc(FILE *f)
4193+{
4194+ return hex_getc('%', f, i_ugetc, i_uungetc);
4195+}
4196+
4197+static nkf_char
4198+url_ungetc(nkf_char c, FILE *f)
4199+{
4200+ return (*i_uungetc)(c, f);
4201+}
4202+#endif
4203+
4204+#ifdef NUMCHAR_OPTION
4205+static nkf_char
4206+numchar_getc(FILE *f)
4207+{
4208+ nkf_char (*g)(FILE *) = i_ngetc;
4209+ nkf_char (*u)(nkf_char c ,FILE *f) = i_nungetc;
4210+ int i = 0, j;
4211+ nkf_char buf[12];
4212+ long c = -1;
4213+
4214+ buf[i] = (*g)(f);
4215+ if (buf[i] == '&'){
4216+ buf[++i] = (*g)(f);
4217+ if (buf[i] == '#'){
4218+ c = 0;
4219+ buf[++i] = (*g)(f);
4220+ if (buf[i] == 'x' || buf[i] == 'X'){
4221+ for (j = 0; j < 7; j++){
4222+ buf[++i] = (*g)(f);
4223+ if (!nkf_isxdigit(buf[i])){
4224+ if (buf[i] != ';'){
4225+ c = -1;
4226+ }
4227+ break;
4228+ }
4229+ c <<= 4;
4230+ c |= hex2bin(buf[i]);
4231+ }
4232+ }else{
4233+ for (j = 0; j < 8; j++){
4234+ if (j){
4235+ buf[++i] = (*g)(f);
4236+ }
4237+ if (!nkf_isdigit(buf[i])){
4238+ if (buf[i] != ';'){
4239+ c = -1;
4240+ }
4241+ break;
4242+ }
4243+ c *= 10;
4244+ c += hex2bin(buf[i]);
4245+ }
4246+ }
4247+ }
4248+ }
4249+ if (c != -1){
4250+ return nkf_char_unicode_new(c);
4251+ }
4252+ while (i > 0){
4253+ (*u)(buf[i], f);
4254+ --i;
4255+ }
4256+ return buf[0];
4257+}
4258+
4259+static nkf_char
4260+numchar_ungetc(nkf_char c, FILE *f)
4261+{
4262+ return (*i_nungetc)(c, f);
4263+}
4264+#endif
4265+
4266+#ifdef UNICODE_NORMALIZATION
4267+
4268+static nkf_char
4269+nfc_getc(FILE *f)
4270+{
4271+ nkf_char (*g)(FILE *f) = i_nfc_getc;
4272+ nkf_char (*u)(nkf_char c ,FILE *f) = i_nfc_ungetc;
4273+ nkf_buf_t *buf = nkf_state->nfc_buf;
4274+ const unsigned char *array;
4275+ int lower=0, upper=NORMALIZATION_TABLE_LENGTH-1;
4276+ nkf_char c = (*g)(f);
4277+
4278+ if (c == EOF || c > 0xFF || (c & 0xc0) == 0x80) return c;
4279+
4280+ nkf_buf_push(buf, c);
4281+ do {
4282+ while (lower <= upper) {
4283+ int mid = (lower+upper) / 2;
4284+ int len;
4285+ array = normalization_table[mid].nfd;
4286+ for (len=0; len < NORMALIZATION_TABLE_NFD_LENGTH && array[len]; len++) {
4287+ if (len >= nkf_buf_length(buf)) {
4288+ c = (*g)(f);
4289+ if (c == EOF) {
4290+ len = 0;
4291+ lower = 1, upper = 0;
4292+ break;
4293+ }
4294+ nkf_buf_push(buf, c);
4295+ }
4296+ if (array[len] != nkf_buf_at(buf, len)) {
4297+ if (array[len] < nkf_buf_at(buf, len)) lower = mid + 1;
4298+ else upper = mid - 1;
4299+ len = 0;
4300+ break;
4301+ }
4302+ }
4303+ if (len > 0) {
4304+ int i;
4305+ array = normalization_table[mid].nfc;
4306+ nkf_buf_clear(buf);
4307+ for (i=0; i < NORMALIZATION_TABLE_NFC_LENGTH && array[i]; i++)
4308+ nkf_buf_push(buf, array[i]);
4309+ break;
4310+ }
4311+ }
4312+ } while (lower <= upper);
4313+
4314+ while (nkf_buf_length(buf) > 1) (*u)(nkf_buf_pop(buf), f);
4315+ c = nkf_buf_pop(buf);
4316+
4317+ return c;
4318+}
4319+
4320+static nkf_char
4321+nfc_ungetc(nkf_char c, FILE *f)
4322+{
4323+ return (*i_nfc_ungetc)(c, f);
4324+}
4325+#endif /* UNICODE_NORMALIZATION */
4326+
4327+
4328+static nkf_char
4329+base64decode(nkf_char c)
4330+{
4331+ int i;
4332+ if (c > '@') {
4333+ if (c < '[') {
4334+ i = c - 'A'; /* A..Z 0-25 */
4335+ } else if (c == '_') {
4336+ i = '?' /* 63 */ ; /* _ 63 */
4337+ } else {
4338+ i = c - 'G' /* - 'a' + 26 */ ; /* a..z 26-51 */
4339+ }
4340+ } else if (c > '/') {
4341+ i = c - '0' + '4' /* - '0' + 52 */ ; /* 0..9 52-61 */
4342+ } else if (c == '+' || c == '-') {
4343+ i = '>' /* 62 */ ; /* + and - 62 */
4344+ } else {
4345+ i = '?' /* 63 */ ; /* / 63 */
4346+ }
4347+ return (i);
4348+}
4349+
4350+static nkf_char
4351+mime_getc(FILE *f)
4352+{
4353+ nkf_char c1, c2, c3, c4, cc;
4354+ nkf_char t1, t2, t3, t4, mode, exit_mode;
4355+ nkf_char lwsp_count;
4356+ char *lwsp_buf;
4357+ char *lwsp_buf_new;
4358+ nkf_char lwsp_size = 128;
4359+
4360+ if (mime_input_state.top != mime_input_state.last) { /* Something is in FIFO */
4361+ return mime_input_buf(mime_input_state.top++);
4362+ }
4363+ if (mime_decode_mode==1 ||mime_decode_mode==FALSE) {
4364+ mime_decode_mode=FALSE;
4365+ unswitch_mime_getc();
4366+ return (*i_getc)(f);
4367+ }
4368+
4369+ if (mimebuf_f == FIXED_MIME)
4370+ exit_mode = mime_decode_mode;
4371+ else
4372+ exit_mode = FALSE;
4373+ if (mime_decode_mode == 'Q') {
4374+ if ((c1 = (*i_mgetc)(f)) == EOF) return (EOF);
4375+ restart_mime_q:
4376+ if (c1=='_' && mimebuf_f != FIXED_MIME) return SP;
4377+ if (c1<=SP || DEL<=c1) {
4378+ mime_decode_mode = exit_mode; /* prepare for quit */
4379+ return c1;
4380+ }
4381+ if (c1!='=' && (c1!='?' || mimebuf_f == FIXED_MIME)) {
4382+ return c1;
4383+ }
4384+
4385+ mime_decode_mode = exit_mode; /* prepare for quit */
4386+ if ((c2 = (*i_mgetc)(f)) == EOF) return (EOF);
4387+ if (c1=='?'&&c2=='=' && mimebuf_f != FIXED_MIME) {
4388+ /* end Q encoding */
4389+ input_mode = exit_mode;
4390+ lwsp_count = 0;
4391+ lwsp_buf = nkf_xmalloc((lwsp_size+5)*sizeof(char));
4392+ while ((c1=(*i_getc)(f))!=EOF) {
4393+ switch (c1) {
4394+ case LF:
4395+ case CR:
4396+ if (c1==LF) {
4397+ if ((c1=(*i_getc)(f))!=EOF && nkf_isblank(c1)) {
4398+ i_ungetc(SP,f);
4399+ continue;
4400+ } else {
4401+ i_ungetc(c1,f);
4402+ }
4403+ c1 = LF;
4404+ } else {
4405+ if ((c1=(*i_getc)(f))!=EOF && c1 == LF) {
4406+ if ((c1=(*i_getc)(f))!=EOF && nkf_isblank(c1)) {
4407+ i_ungetc(SP,f);
4408+ continue;
4409+ } else {
4410+ i_ungetc(c1,f);
4411+ }
4412+ i_ungetc(LF,f);
4413+ } else {
4414+ i_ungetc(c1,f);
4415+ }
4416+ c1 = CR;
4417+ }
4418+ break;
4419+ case SP:
4420+ case TAB:
4421+ lwsp_buf[lwsp_count] = (unsigned char)c1;
4422+ if (lwsp_count++>lwsp_size){
4423+ lwsp_size <<= 1;
4424+ lwsp_buf_new = nkf_xrealloc(lwsp_buf, (lwsp_size+5)*sizeof(char));
4425+ lwsp_buf = lwsp_buf_new;
4426+ }
4427+ continue;
4428+ }
4429+ break;
4430+ }
4431+ if (lwsp_count > 0 && (c1 != '=' || (lwsp_buf[lwsp_count-1] != SP && lwsp_buf[lwsp_count-1] != TAB))) {
4432+ i_ungetc(c1,f);
4433+ for(lwsp_count--;lwsp_count>0;lwsp_count--)
4434+ i_ungetc(lwsp_buf[lwsp_count],f);
4435+ c1 = lwsp_buf[0];
4436+ }
4437+ nkf_xfree(lwsp_buf);
4438+ return c1;
4439+ }
4440+ if (c1=='='&&c2<SP) { /* this is soft wrap */
4441+ while((c1 = (*i_mgetc)(f)) <=SP) {
4442+ if (c1 == EOF) return (EOF);
4443+ }
4444+ mime_decode_mode = 'Q'; /* still in MIME */
4445+ goto restart_mime_q;
4446+ }
4447+ if (c1=='?') {
4448+ mime_decode_mode = 'Q'; /* still in MIME */
4449+ (*i_mungetc)(c2,f);
4450+ return c1;
4451+ }
4452+ if ((c3 = (*i_mgetc)(f)) == EOF) return (EOF);
4453+ if (c2<=SP) return c2;
4454+ mime_decode_mode = 'Q'; /* still in MIME */
4455+ return ((hex2bin(c2)<<4) + hex2bin(c3));
4456+ }
4457+
4458+ if (mime_decode_mode != 'B') {
4459+ mime_decode_mode = FALSE;
4460+ return (*i_mgetc)(f);
4461+ }
4462+
4463+
4464+ /* Base64 encoding */
4465+ /*
4466+ MIME allows line break in the middle of
4467+ Base64, but we are very pessimistic in decoding
4468+ in unbuf mode because MIME encoded code may broken by
4469+ less or editor's control sequence (such as ESC-[-K in unbuffered
4470+ mode. ignore incomplete MIME.
4471+ */
4472+ mode = mime_decode_mode;
4473+ mime_decode_mode = exit_mode; /* prepare for quit */
4474+
4475+ while ((c1 = (*i_mgetc)(f))<=SP) {
4476+ if (c1==EOF)
4477+ return (EOF);
4478+ }
4479+ mime_c2_retry:
4480+ if ((c2 = (*i_mgetc)(f))<=SP) {
4481+ if (c2==EOF)
4482+ return (EOF);
4483+ if (mime_f != STRICT_MIME) goto mime_c2_retry;
4484+ if (mimebuf_f!=FIXED_MIME) input_mode = ASCII;
4485+ return c2;
4486+ }
4487+ if ((c1 == '?') && (c2 == '=')) {
4488+ input_mode = ASCII;
4489+ lwsp_count = 0;
4490+ lwsp_buf = nkf_xmalloc((lwsp_size+5)*sizeof(char));
4491+ while ((c1=(*i_getc)(f))!=EOF) {
4492+ switch (c1) {
4493+ case LF:
4494+ case CR:
4495+ if (c1==LF) {
4496+ if ((c1=(*i_getc)(f))!=EOF && nkf_isblank(c1)) {
4497+ i_ungetc(SP,f);
4498+ continue;
4499+ } else {
4500+ i_ungetc(c1,f);
4501+ }
4502+ c1 = LF;
4503+ } else {
4504+ if ((c1=(*i_getc)(f))!=EOF) {
4505+ if (c1==SP) {
4506+ i_ungetc(SP,f);
4507+ continue;
4508+ } else if ((c1=(*i_getc)(f))!=EOF && nkf_isblank(c1)) {
4509+ i_ungetc(SP,f);
4510+ continue;
4511+ } else {
4512+ i_ungetc(c1,f);
4513+ }
4514+ i_ungetc(LF,f);
4515+ } else {
4516+ i_ungetc(c1,f);
4517+ }
4518+ c1 = CR;
4519+ }
4520+ break;
4521+ case SP:
4522+ case TAB:
4523+ lwsp_buf[lwsp_count] = (unsigned char)c1;
4524+ if (lwsp_count++>lwsp_size){
4525+ lwsp_size <<= 1;
4526+ lwsp_buf_new = nkf_xrealloc(lwsp_buf, (lwsp_size+5)*sizeof(char));
4527+ lwsp_buf = lwsp_buf_new;
4528+ }
4529+ continue;
4530+ }
4531+ break;
4532+ }
4533+ if (lwsp_count > 0 && (c1 != '=' || (lwsp_buf[lwsp_count-1] != SP && lwsp_buf[lwsp_count-1] != TAB))) {
4534+ i_ungetc(c1,f);
4535+ for(lwsp_count--;lwsp_count>0;lwsp_count--)
4536+ i_ungetc(lwsp_buf[lwsp_count],f);
4537+ c1 = lwsp_buf[0];
4538+ }
4539+ nkf_xfree(lwsp_buf);
4540+ return c1;
4541+ }
4542+ mime_c3_retry:
4543+ if ((c3 = (*i_mgetc)(f))<=SP) {
4544+ if (c3==EOF)
4545+ return (EOF);
4546+ if (mime_f != STRICT_MIME) goto mime_c3_retry;
4547+ if (mimebuf_f!=FIXED_MIME) input_mode = ASCII;
4548+ return c3;
4549+ }
4550+ mime_c4_retry:
4551+ if ((c4 = (*i_mgetc)(f))<=SP) {
4552+ if (c4==EOF)
4553+ return (EOF);
4554+ if (mime_f != STRICT_MIME) goto mime_c4_retry;
4555+ if (mimebuf_f!=FIXED_MIME) input_mode = ASCII;
4556+ return c4;
4557+ }
4558+
4559+ mime_decode_mode = mode; /* still in MIME sigh... */
4560+
4561+ /* BASE 64 decoding */
4562+
4563+ t1 = 0x3f & base64decode(c1);
4564+ t2 = 0x3f & base64decode(c2);
4565+ t3 = 0x3f & base64decode(c3);
4566+ t4 = 0x3f & base64decode(c4);
4567+ cc = ((t1 << 2) & 0x0fc) | ((t2 >> 4) & 0x03);
4568+ if (c2 != '=') {
4569+ mime_input_buf(mime_input_state.last++) = (unsigned char)cc;
4570+ cc = ((t2 << 4) & 0x0f0) | ((t3 >> 2) & 0x0f);
4571+ if (c3 != '=') {
4572+ mime_input_buf(mime_input_state.last++) = (unsigned char)cc;
4573+ cc = ((t3 << 6) & 0x0c0) | (t4 & 0x3f);
4574+ if (c4 != '=')
4575+ mime_input_buf(mime_input_state.last++) = (unsigned char)cc;
4576+ }
4577+ } else {
4578+ return c1;
4579+ }
4580+ return mime_input_buf(mime_input_state.top++);
4581+}
4582+
4583+static const char basis_64[] =
4584+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
4585+
4586+#define MIMEOUT_BUF_LENGTH 74
4587+static struct {
4588+ char buf[MIMEOUT_BUF_LENGTH+1];
4589+ int count;
4590+} mimeout_state;
4591+
4592+/*nkf_char mime_lastchar2, mime_lastchar1;*/
4593+
4594+static void
4595+open_mime(nkf_char mode)
4596+{
4597+ const unsigned char *p;
4598+ int i;
4599+ int j;
4600+ p = mime_pattern[0];
4601+ for(i=0;mime_pattern[i];i++) {
4602+ if (mode == mime_encode[i]) {
4603+ p = mime_pattern[i];
4604+ break;
4605+ }
4606+ }
4607+ mimeout_mode = mime_encode_method[i];
4608+ i = 0;
4609+ if (base64_count>45) {
4610+ if (mimeout_state.count>0 && nkf_isblank(mimeout_state.buf[i])){
4611+ (*o_mputc)(mimeout_state.buf[i]);
4612+ i++;
4613+ }
4614+ PUT_NEWLINE((*o_mputc));
4615+ (*o_mputc)(SP);
4616+ base64_count = 1;
4617+ if (mimeout_state.count>0 && nkf_isspace(mimeout_state.buf[i])) {
4618+ i++;
4619+ }
4620+ }
4621+ for (;i<mimeout_state.count;i++) {
4622+ if (nkf_isspace(mimeout_state.buf[i])) {
4623+ (*o_mputc)(mimeout_state.buf[i]);
4624+ base64_count ++;
4625+ } else {
4626+ break;
4627+ }
4628+ }
4629+ while(*p) {
4630+ (*o_mputc)(*p++);
4631+ base64_count ++;
4632+ }
4633+ j = mimeout_state.count;
4634+ mimeout_state.count = 0;
4635+ for (;i<j;i++) {
4636+ mime_putc(mimeout_state.buf[i]);
4637+ }
4638+}
4639+
4640+static void
4641+mime_prechar(nkf_char c2, nkf_char c1)
4642+{
4643+ if (mimeout_mode > 0){
4644+ if (c2 == EOF){
4645+ if (base64_count + mimeout_state.count/3*4> 73){
4646+ (*o_base64conv)(EOF,0);
4647+ OCONV_NEWLINE((*o_base64conv));
4648+ (*o_base64conv)(0,SP);
4649+ base64_count = 1;
4650+ }
4651+ } else {
4652+ if (base64_count + mimeout_state.count/3*4> 66) {
4653+ (*o_base64conv)(EOF,0);
4654+ OCONV_NEWLINE((*o_base64conv));
4655+ (*o_base64conv)(0,SP);
4656+ base64_count = 1;
4657+ mimeout_mode = -1;
4658+ }
4659+ }
4660+ } else if (c2) {
4661+ if (c2 != EOF && base64_count + mimeout_state.count/3*4> 60) {
4662+ mimeout_mode = (output_mode==ASCII ||output_mode == ISO_8859_1) ? 'Q' : 'B';
4663+ open_mime(output_mode);
4664+ (*o_base64conv)(EOF,0);
4665+ OCONV_NEWLINE((*o_base64conv));
4666+ (*o_base64conv)(0,SP);
4667+ base64_count = 1;
4668+ mimeout_mode = -1;
4669+ }
4670+ }
4671+}
4672+
4673+static void
4674+close_mime(void)
4675+{
4676+ (*o_mputc)('?');
4677+ (*o_mputc)('=');
4678+ base64_count += 2;
4679+ mimeout_mode = 0;
4680+}
4681+
4682+static void
4683+eof_mime(void)
4684+{
4685+ switch(mimeout_mode) {
4686+ case 'Q':
4687+ case 'B':
4688+ break;
4689+ case 2:
4690+ (*o_mputc)(basis_64[((nkf_state->mimeout_state & 0x3)<< 4)]);
4691+ (*o_mputc)('=');
4692+ (*o_mputc)('=');
4693+ base64_count += 3;
4694+ break;
4695+ case 1:
4696+ (*o_mputc)(basis_64[((nkf_state->mimeout_state & 0xF) << 2)]);
4697+ (*o_mputc)('=');
4698+ base64_count += 2;
4699+ break;
4700+ }
4701+ if (mimeout_mode > 0) {
4702+ if (mimeout_f!=FIXED_MIME) {
4703+ close_mime();
4704+ } else if (mimeout_mode != 'Q')
4705+ mimeout_mode = 'B';
4706+ }
4707+}
4708+
4709+static void
4710+mimeout_addchar(nkf_char c)
4711+{
4712+ switch(mimeout_mode) {
4713+ case 'Q':
4714+ if (c==CR||c==LF) {
4715+ (*o_mputc)(c);
4716+ base64_count = 0;
4717+ } else if(!nkf_isalnum(c)) {
4718+ (*o_mputc)('=');
4719+ (*o_mputc)(bin2hex(((c>>4)&0xf)));
4720+ (*o_mputc)(bin2hex((c&0xf)));
4721+ base64_count += 3;
4722+ } else {
4723+ (*o_mputc)(c);
4724+ base64_count++;
4725+ }
4726+ break;
4727+ case 'B':
4728+ nkf_state->mimeout_state=c;
4729+ (*o_mputc)(basis_64[c>>2]);
4730+ mimeout_mode=2;
4731+ base64_count ++;
4732+ break;
4733+ case 2:
4734+ (*o_mputc)(basis_64[((nkf_state->mimeout_state & 0x3)<< 4) | ((c & 0xF0) >> 4)]);
4735+ nkf_state->mimeout_state=c;
4736+ mimeout_mode=1;
4737+ base64_count ++;
4738+ break;
4739+ case 1:
4740+ (*o_mputc)(basis_64[((nkf_state->mimeout_state & 0xF) << 2) | ((c & 0xC0) >>6)]);
4741+ (*o_mputc)(basis_64[c & 0x3F]);
4742+ mimeout_mode='B';
4743+ base64_count += 2;
4744+ break;
4745+ default:
4746+ (*o_mputc)(c);
4747+ base64_count++;
4748+ break;
4749+ }
4750+}
4751+
4752+static void
4753+mime_putc(nkf_char c)
4754+{
4755+ int i, j;
4756+ nkf_char lastchar;
4757+
4758+ if (mimeout_f == FIXED_MIME){
4759+ if (mimeout_mode == 'Q'){
4760+ if (base64_count > 71){
4761+ if (c!=CR && c!=LF) {
4762+ (*o_mputc)('=');
4763+ PUT_NEWLINE((*o_mputc));
4764+ }
4765+ base64_count = 0;
4766+ }
4767+ }else{
4768+ if (base64_count > 71){
4769+ eof_mime();
4770+ PUT_NEWLINE((*o_mputc));
4771+ base64_count = 0;
4772+ }
4773+ if (c == EOF) { /* c==EOF */
4774+ eof_mime();
4775+ }
4776+ }
4777+ if (c != EOF) { /* c==EOF */
4778+ mimeout_addchar(c);
4779+ }
4780+ return;
4781+ }
4782+
4783+ /* mimeout_f != FIXED_MIME */
4784+
4785+ if (c == EOF) { /* c==EOF */
4786+ if (mimeout_mode == -1 && mimeout_state.count > 1) open_mime(output_mode);
4787+ j = mimeout_state.count;
4788+ mimeout_state.count = 0;
4789+ i = 0;
4790+ if (mimeout_mode > 0) {
4791+ if (!nkf_isblank(mimeout_state.buf[j-1])) {
4792+ for (;i<j;i++) {
4793+ if (nkf_isspace(mimeout_state.buf[i]) && base64_count < 71){
4794+ break;
4795+ }
4796+ mimeout_addchar(mimeout_state.buf[i]);
4797+ }
4798+ eof_mime();
4799+ for (;i<j;i++) {
4800+ mimeout_addchar(mimeout_state.buf[i]);
4801+ }
4802+ } else {
4803+ for (;i<j;i++) {
4804+ mimeout_addchar(mimeout_state.buf[i]);
4805+ }
4806+ eof_mime();
4807+ }
4808+ } else {
4809+ for (;i<j;i++) {
4810+ mimeout_addchar(mimeout_state.buf[i]);
4811+ }
4812+ }
4813+ return;
4814+ }
4815+
4816+ if (mimeout_state.count > 0){
4817+ lastchar = mimeout_state.buf[mimeout_state.count - 1];
4818+ }else{
4819+ lastchar = -1;
4820+ }
4821+
4822+ if (mimeout_mode=='Q') {
4823+ if (c <= DEL && (output_mode==ASCII ||output_mode == ISO_8859_1)) {
4824+ if (c == CR || c == LF) {
4825+ close_mime();
4826+ (*o_mputc)(c);
4827+ base64_count = 0;
4828+ return;
4829+ } else if (c <= SP) {
4830+ close_mime();
4831+ if (base64_count > 70) {
4832+ PUT_NEWLINE((*o_mputc));
4833+ base64_count = 0;
4834+ }
4835+ if (!nkf_isblank(c)) {
4836+ (*o_mputc)(SP);
4837+ base64_count++;
4838+ }
4839+ } else {
4840+ if (base64_count > 70) {
4841+ close_mime();
4842+ PUT_NEWLINE((*o_mputc));
4843+ (*o_mputc)(SP);
4844+ base64_count = 1;
4845+ open_mime(output_mode);
4846+ }
4847+ if (!nkf_noescape_mime(c)) {
4848+ mimeout_addchar(c);
4849+ return;
4850+ }
4851+ }
4852+ (*o_mputc)(c);
4853+ base64_count++;
4854+ }
4855+ return;
4856+ }
4857+
4858+ if (mimeout_mode <= 0) {
4859+ if (c <= DEL && (output_mode==ASCII ||output_mode == ISO_8859_1)) {
4860+ if (nkf_isspace(c)) {
4861+ int flag = 0;
4862+ if (mimeout_mode == -1) {
4863+ flag = 1;
4864+ }
4865+ if (c==CR || c==LF) {
4866+ if (flag) {
4867+ open_mime(output_mode);
4868+ output_mode = 0;
4869+ } else {
4870+ base64_count = 0;
4871+ }
4872+ }
4873+ for (i=0;i<mimeout_state.count;i++) {
4874+ (*o_mputc)(mimeout_state.buf[i]);
4875+ if (mimeout_state.buf[i] == CR || mimeout_state.buf[i] == LF){
4876+ base64_count = 0;
4877+ }else{
4878+ base64_count++;
4879+ }
4880+ }
4881+ if (flag) {
4882+ eof_mime();
4883+ base64_count = 0;
4884+ mimeout_mode = 0;
4885+ }
4886+ mimeout_state.buf[0] = (char)c;
4887+ mimeout_state.count = 1;
4888+ }else{
4889+ if (base64_count > 1
4890+ && base64_count + mimeout_state.count > 76
4891+ && mimeout_state.buf[0] != CR && mimeout_state.buf[0] != LF){
4892+ static const char *str = "boundary=\"";
4893+ static int len = 10;
4894+ i = 0;
4895+
4896+ for (; i < mimeout_state.count - len; ++i) {
4897+ if (!strncmp(mimeout_state.buf+i, str, len)) {
4898+ i += len - 2;
4899+ break;
4900+ }
4901+ }
4902+
4903+ if (i == 0 || i == mimeout_state.count - len) {
4904+ PUT_NEWLINE((*o_mputc));
4905+ base64_count = 0;
4906+ if (!nkf_isspace(mimeout_state.buf[0])){
4907+ (*o_mputc)(SP);
4908+ base64_count++;
4909+ }
4910+ }
4911+ else {
4912+ int j;
4913+ for (j = 0; j <= i; ++j) {
4914+ (*o_mputc)(mimeout_state.buf[j]);
4915+ }
4916+ PUT_NEWLINE((*o_mputc));
4917+ base64_count = 1;
4918+ for (; j <= mimeout_state.count; ++j) {
4919+ mimeout_state.buf[j - i] = mimeout_state.buf[j];
4920+ }
4921+ mimeout_state.count -= i;
4922+ }
4923+ }
4924+ mimeout_state.buf[mimeout_state.count++] = (char)c;
4925+ if (mimeout_state.count>MIMEOUT_BUF_LENGTH) {
4926+ open_mime(output_mode);
4927+ }
4928+ }
4929+ return;
4930+ }else{
4931+ if (lastchar==CR || lastchar == LF){
4932+ for (i=0;i<mimeout_state.count;i++) {
4933+ (*o_mputc)(mimeout_state.buf[i]);
4934+ }
4935+ base64_count = 0;
4936+ mimeout_state.count = 0;
4937+ }
4938+ if (lastchar==SP) {
4939+ for (i=0;i<mimeout_state.count-1;i++) {
4940+ (*o_mputc)(mimeout_state.buf[i]);
4941+ base64_count++;
4942+ }
4943+ mimeout_state.buf[0] = SP;
4944+ mimeout_state.count = 1;
4945+ }
4946+ open_mime(output_mode);
4947+ }
4948+ }else{
4949+ /* mimeout_mode == 'B', 1, 2 */
4950+ if ( c<=DEL && (output_mode==ASCII ||output_mode == ISO_8859_1)) {
4951+ if (lastchar == CR || lastchar == LF){
4952+ if (nkf_isblank(c)) {
4953+ for (i=0;i<mimeout_state.count;i++) {
4954+ mimeout_addchar(mimeout_state.buf[i]);
4955+ }
4956+ mimeout_state.count = 0;
4957+ } else if (SP<c && c<DEL) {
4958+ eof_mime();
4959+ for (i=0;i<mimeout_state.count;i++) {
4960+ (*o_mputc)(mimeout_state.buf[i]);
4961+ }
4962+ base64_count = 0;
4963+ mimeout_state.count = 0;
4964+ }
4965+ mimeout_state.buf[mimeout_state.count++] = (char)c;
4966+ return;
4967+ }
4968+ if (nkf_isspace(c)) {
4969+ for (i=0;i<mimeout_state.count;i++) {
4970+ if (SP<mimeout_state.buf[i] && mimeout_state.buf[i]<DEL) {
4971+ eof_mime();
4972+ for (i=0;i<mimeout_state.count;i++) {
4973+ (*o_mputc)(mimeout_state.buf[i]);
4974+ base64_count++;
4975+ }
4976+ mimeout_state.count = 0;
4977+ }
4978+ }
4979+ mimeout_state.buf[mimeout_state.count++] = (char)c;
4980+ if (mimeout_state.count>MIMEOUT_BUF_LENGTH) {
4981+ eof_mime();
4982+ for (i=0;i<mimeout_state.count;i++) {
4983+ (*o_mputc)(mimeout_state.buf[i]);
4984+ base64_count++;
4985+ }
4986+ mimeout_state.count = 0;
4987+ }
4988+ return;
4989+ }
4990+ if (mimeout_state.count>0 && SP<c && c!='=') {
4991+ mimeout_state.buf[mimeout_state.count++] = (char)c;
4992+ if (mimeout_state.count>MIMEOUT_BUF_LENGTH) {
4993+ j = mimeout_state.count;
4994+ mimeout_state.count = 0;
4995+ for (i=0;i<j;i++) {
4996+ mimeout_addchar(mimeout_state.buf[i]);
4997+ }
4998+ }
4999+ return;
5000+ }
5001+ }
5002+ }
5003+ if (mimeout_state.count>0) {
5004+ j = mimeout_state.count;
5005+ mimeout_state.count = 0;
5006+ for (i=0;i<j;i++) {
5007+ if (mimeout_state.buf[i]==CR || mimeout_state.buf[i]==LF)
5008+ break;
5009+ mimeout_addchar(mimeout_state.buf[i]);
5010+ }
5011+ if (i<j) {
5012+ eof_mime();
5013+ base64_count=0;
5014+ for (;i<j;i++) {
5015+ (*o_mputc)(mimeout_state.buf[i]);
5016+ }
5017+ open_mime(output_mode);
5018+ }
5019+ }
5020+ mimeout_addchar(c);
5021+}
5022+
5023+static void
5024+base64_conv(nkf_char c2, nkf_char c1)
5025+{
5026+ mime_prechar(c2, c1);
5027+ (*o_base64conv)(c2,c1);
5028+}
5029+
5030+#ifdef HAVE_ICONV_H
5031+typedef struct nkf_iconv_t {
5032+ iconv_t cd;
5033+ char *input_buffer;
5034+ size_t input_buffer_size;
5035+ char *output_buffer;
5036+ size_t output_buffer_size;
5037+}
5038+
5039+static nkf_iconv_t
5040+nkf_iconv_new(char *tocode, char *fromcode)
5041+{
5042+ nkf_iconv_t converter;
5043+
5044+ converter->input_buffer_size = IOBUF_SIZE;
5045+ converter->input_buffer = nkf_xmalloc(converter->input_buffer_size);
5046+ converter->output_buffer_size = IOBUF_SIZE * 2;
5047+ converter->output_buffer = nkf_xmalloc(converter->output_buffer_size);
5048+ converter->cd = iconv_open(tocode, fromcode);
5049+ if (converter->cd == (iconv_t)-1)
5050+ {
5051+ switch (errno) {
5052+ case EINVAL:
5053+ perror(fprintf("iconv doesn't support %s to %s conversion.", fromcode, tocode));
5054+ return -1;
5055+ default:
5056+ perror("can't iconv_open");
5057+ }
5058+ }
5059+}
5060+
5061+static size_t
5062+nkf_iconv_convert(nkf_iconv_t *converter, FILE *input)
5063+{
5064+ size_t invalid = (size_t)0;
5065+ char *input_buffer = converter->input_buffer;
5066+ size_t input_length = (size_t)0;
5067+ char *output_buffer = converter->output_buffer;
5068+ size_t output_length = converter->output_buffer_size;
5069+ int c;
5070+
5071+ do {
5072+ if (c != EOF) {
5073+ while ((c = (*i_getc)(f)) != EOF) {
5074+ input_buffer[input_length++] = c;
5075+ if (input_length < converter->input_buffer_size) break;
5076+ }
5077+ }
5078+
5079+ size_t ret = iconv(converter->cd, &input_buffer, &input_length, &output_buffer, &output_length);
5080+ while (output_length-- > 0) {
5081+ (*o_putc)(output_buffer[converter->output_buffer_size-output_length]);
5082+ }
5083+ if (ret == (size_t) - 1) {
5084+ switch (errno) {
5085+ case EINVAL:
5086+ if (input_buffer != converter->input_buffer)
5087+ memmove(converter->input_buffer, input_buffer, input_length);
5088+ break;
5089+ case E2BIG:
5090+ converter->output_buffer_size *= 2;
5091+ output_buffer = realloc(converter->outbuf, converter->output_buffer_size);
5092+ if (output_buffer == NULL) {
5093+ perror("can't realloc");
5094+ return -1;
5095+ }
5096+ converter->output_buffer = output_buffer;
5097+ break;
5098+ default:
5099+ perror("can't iconv");
5100+ return -1;
5101+ }
5102+ } else {
5103+ invalid += ret;
5104+ }
5105+ } while (1);
5106+
5107+ return invalid;
5108+}
5109+
5110+
5111+static void
5112+nkf_iconv_close(nkf_iconv_t *convert)
5113+{
5114+ nkf_xfree(converter->inbuf);
5115+ nkf_xfree(converter->outbuf);
5116+ iconv_close(converter->cd);
5117+}
5118+#endif
5119+
5120+
5121+static void
5122+reinit(void)
5123+{
5124+ {
5125+ struct input_code *p = input_code_list;
5126+ while (p->name){
5127+ status_reinit(p++);
5128+ }
5129+ }
5130+ unbuf_f = FALSE;
5131+ estab_f = FALSE;
5132+ nop_f = FALSE;
5133+ binmode_f = TRUE;
5134+ rot_f = FALSE;
5135+ hira_f = FALSE;
5136+ alpha_f = FALSE;
5137+ mime_f = MIME_DECODE_DEFAULT;
5138+ mime_decode_f = FALSE;
5139+ mimebuf_f = FALSE;
5140+ broken_f = FALSE;
5141+ iso8859_f = FALSE;
5142+ mimeout_f = FALSE;
5143+ x0201_f = X0201_DEFAULT;
5144+ iso2022jp_f = FALSE;
5145+#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
5146+ ms_ucs_map_f = UCS_MAP_ASCII;
5147+#endif
5148+#ifdef UTF8_INPUT_ENABLE
5149+ no_cp932ext_f = FALSE;
5150+ no_best_fit_chars_f = FALSE;
5151+ encode_fallback = NULL;
5152+ unicode_subchar = '?';
5153+ input_endian = ENDIAN_BIG;
5154+#endif
5155+#ifdef UTF8_OUTPUT_ENABLE
5156+ output_bom_f = FALSE;
5157+ output_endian = ENDIAN_BIG;
5158+#endif
5159+#ifdef UNICODE_NORMALIZATION
5160+ nfc_f = FALSE;
5161+#endif
5162+#ifdef INPUT_OPTION
5163+ cap_f = FALSE;
5164+ url_f = FALSE;
5165+ numchar_f = FALSE;
5166+#endif
5167+#ifdef CHECK_OPTION
5168+ noout_f = FALSE;
5169+ debug_f = FALSE;
5170+#endif
5171+ guess_f = 0;
5172+#ifdef EXEC_IO
5173+ exec_f = 0;
5174+#endif
5175+#ifdef SHIFTJIS_CP932
5176+ cp51932_f = TRUE;
5177+ cp932inv_f = TRUE;
5178+#endif
5179+#ifdef X0212_ENABLE
5180+ x0212_f = FALSE;
5181+ x0213_f = FALSE;
5182+#endif
5183+ {
5184+ int i;
5185+ for (i = 0; i < 256; i++){
5186+ prefix_table[i] = 0;
5187+ }
5188+ }
5189+ hold_count = 0;
5190+ mimeout_state.count = 0;
5191+ mimeout_mode = 0;
5192+ base64_count = 0;
5193+ f_line = 0;
5194+ f_prev = 0;
5195+ fold_preserve_f = FALSE;
5196+ fold_f = FALSE;
5197+ fold_len = 0;
5198+ kanji_intro = DEFAULT_J;
5199+ ascii_intro = DEFAULT_R;
5200+ fold_margin = FOLD_MARGIN;
5201+ o_zconv = no_connection;
5202+ o_fconv = no_connection;
5203+ o_eol_conv = no_connection;
5204+ o_rot_conv = no_connection;
5205+ o_hira_conv = no_connection;
5206+ o_base64conv = no_connection;
5207+ o_iso2022jp_check_conv = no_connection;
5208+ o_putc = std_putc;
5209+ i_getc = std_getc;
5210+ i_ungetc = std_ungetc;
5211+ i_bgetc = std_getc;
5212+ i_bungetc = std_ungetc;
5213+ o_mputc = std_putc;
5214+ i_mgetc = std_getc;
5215+ i_mungetc = std_ungetc;
5216+ i_mgetc_buf = std_getc;
5217+ i_mungetc_buf = std_ungetc;
5218+ output_mode = ASCII;
5219+ input_mode = ASCII;
5220+ mime_decode_mode = FALSE;
5221+ file_out_f = FALSE;
5222+ eolmode_f = 0;
5223+ input_eol = 0;
5224+ prev_cr = 0;
5225+ option_mode = 0;
5226+ z_prev2=0,z_prev1=0;
5227+#ifdef CHECK_OPTION
5228+ iconv_for_check = 0;
5229+#endif
5230+ input_codename = NULL;
5231+ input_encoding = NULL;
5232+ output_encoding = NULL;
5233+ nkf_state_init();
5234+#ifdef WIN32DLL
5235+ reinitdll();
5236+#endif /*WIN32DLL*/
5237+}
5238+
5239+static int
5240+module_connection(void)
5241+{
5242+ if (input_encoding) set_input_encoding(input_encoding);
5243+ if (!output_encoding) {
5244+ output_encoding = nkf_default_encoding();
5245+ }
5246+ if (!output_encoding) {
5247+ if (noout_f || guess_f) output_encoding = nkf_enc_from_index(ISO_2022_JP);
5248+ else return -1;
5249+ }
5250+ set_output_encoding(output_encoding);
5251+ oconv = nkf_enc_to_oconv(output_encoding);
5252+ o_putc = std_putc;
5253+
5254+ /* replace continucation module, from output side */
5255+
5256+ /* output redicrection */
5257+#ifdef CHECK_OPTION
5258+ if (noout_f || guess_f){
5259+ o_putc = no_putc;
5260+ }
5261+#endif
5262+ if (mimeout_f) {
5263+ o_mputc = o_putc;
5264+ o_putc = mime_putc;
5265+ if (mimeout_f == TRUE) {
5266+ o_base64conv = oconv; oconv = base64_conv;
5267+ }
5268+ /* base64_count = 0; */
5269+ }
5270+
5271+ if (eolmode_f || guess_f) {
5272+ o_eol_conv = oconv; oconv = eol_conv;
5273+ }
5274+ if (rot_f) {
5275+ o_rot_conv = oconv; oconv = rot_conv;
5276+ }
5277+ if (iso2022jp_f) {
5278+ o_iso2022jp_check_conv = oconv; oconv = iso2022jp_check_conv;
5279+ }
5280+ if (hira_f) {
5281+ o_hira_conv = oconv; oconv = hira_conv;
5282+ }
5283+ if (fold_f) {
5284+ o_fconv = oconv; oconv = fold_conv;
5285+ f_line = 0;
5286+ }
5287+ if (alpha_f || x0201_f) {
5288+ o_zconv = oconv; oconv = z_conv;
5289+ }
5290+
5291+ i_getc = std_getc;
5292+ i_ungetc = std_ungetc;
5293+ /* input redicrection */
5294+#ifdef INPUT_OPTION
5295+ if (cap_f){
5296+ i_cgetc = i_getc; i_getc = cap_getc;
5297+ i_cungetc = i_ungetc; i_ungetc= cap_ungetc;
5298+ }
5299+ if (url_f){
5300+ i_ugetc = i_getc; i_getc = url_getc;
5301+ i_uungetc = i_ungetc; i_ungetc= url_ungetc;
5302+ }
5303+#endif
5304+#ifdef NUMCHAR_OPTION
5305+ if (numchar_f){
5306+ i_ngetc = i_getc; i_getc = numchar_getc;
5307+ i_nungetc = i_ungetc; i_ungetc= numchar_ungetc;
5308+ }
5309+#endif
5310+#ifdef UNICODE_NORMALIZATION
5311+ if (nfc_f){
5312+ i_nfc_getc = i_getc; i_getc = nfc_getc;
5313+ i_nfc_ungetc = i_ungetc; i_ungetc= nfc_ungetc;
5314+ }
5315+#endif
5316+ if (mime_f && mimebuf_f==FIXED_MIME) {
5317+ i_mgetc = i_getc; i_getc = mime_getc;
5318+ i_mungetc = i_ungetc; i_ungetc = mime_ungetc;
5319+ }
5320+ if (broken_f & 1) {
5321+ i_bgetc = i_getc; i_getc = broken_getc;
5322+ i_bungetc = i_ungetc; i_ungetc = broken_ungetc;
5323+ }
5324+ if (input_encoding) {
5325+ set_iconv(-TRUE, nkf_enc_to_iconv(input_encoding));
5326+ } else {
5327+ set_iconv(FALSE, e_iconv);
5328+ }
5329+
5330+ {
5331+ struct input_code *p = input_code_list;
5332+ while (p->name){
5333+ status_reinit(p++);
5334+ }
5335+ }
5336+ return 0;
5337+}
5338+
5339+/*
5340+ Conversion main loop. Code detection only.
5341+ */
5342+
5343+#if !defined(PERL_XS) && !defined(WIN32DLL)
5344+static nkf_char
5345+noconvert(FILE *f)
5346+{
5347+ nkf_char c;
5348+
5349+ if (nop_f == 2)
5350+ module_connection();
5351+ while ((c = (*i_getc)(f)) != EOF)
5352+ (*o_putc)(c);
5353+ (*o_putc)(EOF);
5354+ return 1;
5355+}
5356+#endif
5357+
5358+#define NEXT continue /* no output, get next */
5359+#define SKIP c2=0;continue /* no output, get next */
5360+#define MORE c2=c1;continue /* need one more byte */
5361+#define SEND ; /* output c1 and c2, get next */
5362+#define LAST break /* end of loop, go closing */
5363+#define set_input_mode(mode) do { \
5364+ input_mode = mode; \
5365+ shift_mode = 0; \
5366+ set_input_codename("ISO-2022-JP"); \
5367+ debug("ISO-2022-JP"); \
5368+} while (0)
5369+
5370+static int
5371+kanji_convert(FILE *f)
5372+{
5373+ nkf_char c1=0, c2=0, c3=0, c4=0;
5374+ int shift_mode = 0; /* 0, 1, 2, 3 */
5375+ int g2 = 0;
5376+ int is_8bit = FALSE;
5377+
5378+ if (input_encoding && !nkf_enc_asciicompat(input_encoding)) {
5379+ is_8bit = TRUE;
5380+ }
5381+
5382+ input_mode = ASCII;
5383+ output_mode = ASCII;
5384+
5385+ if (module_connection() < 0) {
5386+#if !defined(PERL_XS) && !defined(WIN32DLL)
5387+ fprintf(stderr, "no output encoding given\n");
5388+#endif
5389+ return -1;
5390+ }
5391+ check_bom(f);
5392+
5393+#ifdef UTF8_INPUT_ENABLE
5394+ if(iconv == w_iconv32){
5395+ while ((c1 = (*i_getc)(f)) != EOF &&
5396+ (c2 = (*i_getc)(f)) != EOF &&
5397+ (c3 = (*i_getc)(f)) != EOF &&
5398+ (c4 = (*i_getc)(f)) != EOF) {
5399+ nkf_iconv_utf_32(c1, c2, c3, c4);
5400+ }
5401+ (*i_ungetc)(EOF, f);
5402+ }
5403+ else if (iconv == w_iconv16) {
5404+ while ((c1 = (*i_getc)(f)) != EOF &&
5405+ (c2 = (*i_getc)(f)) != EOF) {
5406+ if (nkf_iconv_utf_16(c1, c2, 0, 0) == -2 &&
5407+ (c3 = (*i_getc)(f)) != EOF &&
5408+ (c4 = (*i_getc)(f)) != EOF) {
5409+ nkf_iconv_utf_16(c1, c2, c3, c4);
5410+ }
5411+ }
5412+ (*i_ungetc)(EOF, f);
5413+ }
5414+#endif
5415+
5416+ while ((c1 = (*i_getc)(f)) != EOF) {
5417+#ifdef INPUT_CODE_FIX
5418+ if (!input_encoding)
5419+#endif
5420+ code_status(c1);
5421+ if (c2) {
5422+ /* second byte */
5423+ if (c2 > DEL) {
5424+ /* in case of 8th bit is on */
5425+ if (!estab_f&&!mime_decode_mode) {
5426+ /* in case of not established yet */
5427+ /* It is still ambiguious */
5428+ if (h_conv(f, c2, c1)==EOF) {
5429+ LAST;
5430+ }
5431+ else {
5432+ SKIP;
5433+ }
5434+ }
5435+ else {
5436+ /* in case of already established */
5437+ if (c1 < 0x40) {
5438+ /* ignore bogus code */
5439+ SKIP;
5440+ } else {
5441+ SEND;
5442+ }
5443+ }
5444+ }
5445+ else {
5446+ /* 2nd byte of 7 bit code or SJIS */
5447+ SEND;
5448+ }
5449+ }
5450+ else if (nkf_char_unicode_p(c1)) {
5451+ (*oconv)(0, c1);
5452+ NEXT;
5453+ }
5454+ else {
5455+ /* first byte */
5456+ if (input_mode == JIS_X_0208 && DEL <= c1 && c1 < 0x92) {
5457+ /* CP5022x */
5458+ MORE;
5459+ }else if (input_codename && input_codename[0] == 'I' &&
5460+ 0xA1 <= c1 && c1 <= 0xDF) {
5461+ /* JIS X 0201 Katakana in 8bit JIS */
5462+ c2 = JIS_X_0201_1976_K;
5463+ c1 &= 0x7f;
5464+ SEND;
5465+ } else if (c1 > DEL) {
5466+ /* 8 bit code */
5467+ if (!estab_f && !iso8859_f) {
5468+ /* not established yet */
5469+ MORE;
5470+ } else { /* estab_f==TRUE */
5471+ if (iso8859_f) {
5472+ c2 = ISO_8859_1;
5473+ c1 &= 0x7f;
5474+ SEND;
5475+ }
5476+ else if ((iconv == s_iconv && 0xA0 <= c1 && c1 <= 0xDF) ||
5477+ (ms_ucs_map_f == UCS_MAP_CP10001 && (c1 == 0xFD || c1 == 0xFE))) {
5478+ /* JIS X 0201 */
5479+ c2 = JIS_X_0201_1976_K;
5480+ c1 &= 0x7f;
5481+ SEND;
5482+ }
5483+ else {
5484+ /* already established */
5485+ MORE;
5486+ }
5487+ }
5488+ } else if (SP < c1 && c1 < DEL) {
5489+ /* in case of Roman characters */
5490+ if (shift_mode) {
5491+ /* output 1 shifted byte */
5492+ if (iso8859_f) {
5493+ c2 = ISO_8859_1;
5494+ SEND;
5495+ } else if (nkf_byte_jisx0201_katakana_p(c1)){
5496+ /* output 1 shifted byte */
5497+ c2 = JIS_X_0201_1976_K;
5498+ SEND;
5499+ } else {
5500+ /* look like bogus code */
5501+ SKIP;
5502+ }
5503+ } else if (input_mode == JIS_X_0208 || input_mode == JIS_X_0212 ||
5504+ input_mode == JIS_X_0213_1 || input_mode == JIS_X_0213_2) {
5505+ /* in case of Kanji shifted */
5506+ MORE;
5507+ } else if (c1 == '=' && mime_f && !mime_decode_mode) {
5508+ /* Check MIME code */
5509+ if ((c1 = (*i_getc)(f)) == EOF) {
5510+ (*oconv)(0, '=');
5511+ LAST;
5512+ } else if (c1 == '?') {
5513+ /* =? is mime conversion start sequence */
5514+ if(mime_f == STRICT_MIME) {
5515+ /* check in real detail */
5516+ if (mime_begin_strict(f) == EOF)
5517+ LAST;
5518+ SKIP;
5519+ } else if (mime_begin(f) == EOF)
5520+ LAST;
5521+ SKIP;
5522+ } else {
5523+ (*oconv)(0, '=');
5524+ (*i_ungetc)(c1,f);
5525+ SKIP;
5526+ }
5527+ } else {
5528+ /* normal ASCII code */
5529+ SEND;
5530+ }
5531+ } else if (c1 == SI && (!is_8bit || mime_decode_mode)) {
5532+ shift_mode = 0;
5533+ SKIP;
5534+ } else if (c1 == SO && (!is_8bit || mime_decode_mode)) {
5535+ shift_mode = 1;
5536+ SKIP;
5537+ } else if (c1 == ESC && (!is_8bit || mime_decode_mode)) {
5538+ if ((c1 = (*i_getc)(f)) == EOF) {
5539+ (*oconv)(0, ESC);
5540+ LAST;
5541+ }
5542+ else if (c1 == '&') {
5543+ /* IRR */
5544+ if ((c1 = (*i_getc)(f)) == EOF) {
5545+ LAST;
5546+ } else {
5547+ SKIP;
5548+ }
5549+ }
5550+ else if (c1 == '$') {
5551+ /* GZDMx */
5552+ if ((c1 = (*i_getc)(f)) == EOF) {
5553+ /* don't send bogus code
5554+ (*oconv)(0, ESC);
5555+ (*oconv)(0, '$'); */
5556+ LAST;
5557+ } else if (c1 == '@' || c1 == 'B') {
5558+ /* JIS X 0208 */
5559+ set_input_mode(JIS_X_0208);
5560+ SKIP;
5561+ } else if (c1 == '(') {
5562+ /* GZDM4 */
5563+ if ((c1 = (*i_getc)(f)) == EOF) {
5564+ /* don't send bogus code
5565+ (*oconv)(0, ESC);
5566+ (*oconv)(0, '$');
5567+ (*oconv)(0, '(');
5568+ */
5569+ LAST;
5570+ } else if (c1 == '@'|| c1 == 'B') {
5571+ /* JIS X 0208 */
5572+ set_input_mode(JIS_X_0208);
5573+ SKIP;
5574+#ifdef X0212_ENABLE
5575+ } else if (c1 == 'D'){
5576+ set_input_mode(JIS_X_0212);
5577+ SKIP;
5578+#endif /* X0212_ENABLE */
5579+ } else if (c1 == 'O' || c1 == 'Q'){
5580+ set_input_mode(JIS_X_0213_1);
5581+ SKIP;
5582+ } else if (c1 == 'P'){
5583+ set_input_mode(JIS_X_0213_2);
5584+ SKIP;
5585+ } else {
5586+ /* could be some special code */
5587+ (*oconv)(0, ESC);
5588+ (*oconv)(0, '$');
5589+ (*oconv)(0, '(');
5590+ (*oconv)(0, c1);
5591+ SKIP;
5592+ }
5593+ } else if (broken_f&0x2) {
5594+ /* accept any ESC-(-x as broken code ... */
5595+ input_mode = JIS_X_0208;
5596+ shift_mode = 0;
5597+ SKIP;
5598+ } else {
5599+ (*oconv)(0, ESC);
5600+ (*oconv)(0, '$');
5601+ (*oconv)(0, c1);
5602+ SKIP;
5603+ }
5604+ } else if (c1 == '(') {
5605+ /* GZD4 */
5606+ if ((c1 = (*i_getc)(f)) == EOF) {
5607+ /* don't send bogus code
5608+ (*oconv)(0, ESC);
5609+ (*oconv)(0, '('); */
5610+ LAST;
5611+ }
5612+ else if (c1 == 'I') {
5613+ /* JIS X 0201 Katakana */
5614+ set_input_mode(JIS_X_0201_1976_K);
5615+ SKIP;
5616+ }
5617+ else if (c1 == 'B' || c1 == 'J' || c1 == 'H') {
5618+ /* ISO-646IRV:1983 or JIS X 0201 Roman or JUNET */
5619+ set_input_mode(ASCII);
5620+ SKIP;
5621+ }
5622+ else if (broken_f&0x2) {
5623+ set_input_mode(ASCII);
5624+ SKIP;
5625+ }
5626+ else {
5627+ (*oconv)(0, ESC);
5628+ (*oconv)(0, '(');
5629+ SEND;
5630+ }
5631+ }
5632+ else if (c1 == '.') {
5633+ /* G2D6 */
5634+ if ((c1 = (*i_getc)(f)) == EOF) {
5635+ LAST;
5636+ }
5637+ else if (c1 == 'A') {
5638+ /* ISO-8859-1 */
5639+ g2 = ISO_8859_1;
5640+ SKIP;
5641+ }
5642+ else {
5643+ (*oconv)(0, ESC);
5644+ (*oconv)(0, '.');
5645+ SEND;
5646+ }
5647+ }
5648+ else if (c1 == 'N') {
5649+ /* SS2 */
5650+ c1 = (*i_getc)(f);
5651+ if (g2 == ISO_8859_1) {
5652+ c2 = ISO_8859_1;
5653+ SEND;
5654+ }else{
5655+ (*i_ungetc)(c1, f);
5656+ /* lonely ESC */
5657+ (*oconv)(0, ESC);
5658+ SEND;
5659+ }
5660+ }
5661+ else {
5662+ /* lonely ESC */
5663+ (*oconv)(0, ESC);
5664+ SEND;
5665+ }
5666+ } else if (c1 == ESC && iconv == s_iconv) {
5667+ /* ESC in Shift_JIS */
5668+ if ((c1 = (*i_getc)(f)) == EOF) {
5669+ (*oconv)(0, ESC);
5670+ LAST;
5671+ } else if (c1 == '$') {
5672+ /* J-PHONE emoji */
5673+ if ((c1 = (*i_getc)(f)) == EOF) {
5674+ LAST;
5675+ } else if (('E' <= c1 && c1 <= 'G') ||
5676+ ('O' <= c1 && c1 <= 'Q')) {
5677+ /*
5678+ NUM : 0 1 2 3 4 5
5679+ BYTE: G E F O P Q
5680+ C%7 : 1 6 0 2 3 4
5681+ C%7 : 0 1 2 3 4 5 6
5682+ NUM : 2 0 3 4 5 X 1
5683+ */
5684+ static const nkf_char jphone_emoji_first_table[7] =
5685+ {0xE1E0, 0xDFE0, 0xE2E0, 0xE3E0, 0xE4E0, 0xDFE0, 0xE0E0};
5686+ c3 = nkf_char_unicode_new(jphone_emoji_first_table[c1 % 7]);
5687+ if ((c1 = (*i_getc)(f)) == EOF) LAST;
5688+ while (SP <= c1 && c1 <= 'z') {
5689+ (*oconv)(0, c1 + c3);
5690+ if ((c1 = (*i_getc)(f)) == EOF) LAST;
5691+ }
5692+ SKIP;
5693+ }
5694+ else {
5695+ (*oconv)(0, ESC);
5696+ (*oconv)(0, '$');
5697+ SEND;
5698+ }
5699+ }
5700+ else {
5701+ /* lonely ESC */
5702+ (*oconv)(0, ESC);
5703+ SEND;
5704+ }
5705+ } else if (c1 == LF || c1 == CR) {
5706+ if (broken_f&4) {
5707+ input_mode = ASCII; set_iconv(FALSE, 0);
5708+ SEND;
5709+ } else if (mime_decode_f && !mime_decode_mode){
5710+ if (c1 == LF) {
5711+ if ((c1=(*i_getc)(f))!=EOF && c1 == SP) {
5712+ i_ungetc(SP,f);
5713+ continue;
5714+ } else {
5715+ i_ungetc(c1,f);
5716+ }
5717+ c1 = LF;
5718+ SEND;
5719+ } else { /* if (c1 == CR)*/
5720+ if ((c1=(*i_getc)(f))!=EOF) {
5721+ if (c1==SP) {
5722+ i_ungetc(SP,f);
5723+ continue;
5724+ } else if (c1 == LF && (c1=(*i_getc)(f))!=EOF && c1 == SP) {
5725+ i_ungetc(SP,f);
5726+ continue;
5727+ } else {
5728+ i_ungetc(c1,f);
5729+ }
5730+ i_ungetc(LF,f);
5731+ } else {
5732+ i_ungetc(c1,f);
5733+ }
5734+ c1 = CR;
5735+ SEND;
5736+ }
5737+ }
5738+ } else
5739+ SEND;
5740+ }
5741+ /* send: */
5742+ switch(input_mode){
5743+ case ASCII:
5744+ switch ((*iconv)(c2, c1, 0)) { /* can be EUC / SJIS / UTF-8 */
5745+ case -2:
5746+ /* 4 bytes UTF-8 */
5747+ if ((c3 = (*i_getc)(f)) != EOF) {
5748+ code_status(c3);
5749+ c3 <<= 8;
5750+ if ((c4 = (*i_getc)(f)) != EOF) {
5751+ code_status(c4);
5752+ (*iconv)(c2, c1, c3|c4);
5753+ }
5754+ }
5755+ break;
5756+ case -1:
5757+ /* 3 bytes EUC or UTF-8 */
5758+ if ((c3 = (*i_getc)(f)) != EOF) {
5759+ code_status(c3);
5760+ (*iconv)(c2, c1, c3);
5761+ }
5762+ break;
5763+ }
5764+ break;
5765+ case JIS_X_0208:
5766+ case JIS_X_0213_1:
5767+ if (ms_ucs_map_f &&
5768+ 0x7F <= c2 && c2 <= 0x92 &&
5769+ 0x21 <= c1 && c1 <= 0x7E) {
5770+ /* CP932 UDC */
5771+ c1 = nkf_char_unicode_new((c2 - 0x7F) * 94 + c1 - 0x21 + 0xE000);
5772+ c2 = 0;
5773+ }
5774+ (*oconv)(c2, c1); /* this is JIS, not SJIS/EUC case */
5775+ break;
5776+#ifdef X0212_ENABLE
5777+ case JIS_X_0212:
5778+ (*oconv)(PREFIX_EUCG3 | c2, c1);
5779+ break;
5780+#endif /* X0212_ENABLE */
5781+ case JIS_X_0213_2:
5782+ (*oconv)(PREFIX_EUCG3 | c2, c1);
5783+ break;
5784+ default:
5785+ (*oconv)(input_mode, c1); /* other special case */
5786+ }
5787+
5788+ c2 = 0;
5789+ c3 = 0;
5790+ continue;
5791+ /* goto next_word */
5792+ }
5793+
5794+ /* epilogue */
5795+ (*iconv)(EOF, 0, 0);
5796+ if (!input_codename)
5797+ {
5798+ if (is_8bit) {
5799+ struct input_code *p = input_code_list;
5800+ struct input_code *result = p;
5801+ while (p->name){
5802+ if (p->score < result->score) result = p;
5803+ ++p;
5804+ }
5805+ set_input_codename(result->name);
5806+#ifdef CHECK_OPTION
5807+ debug(result->name);
5808+#endif
5809+ }
5810+ }
5811+ return 0;
5812+}
5813+
5814+/*
5815+ * int options(unsigned char *cp)
5816+ *
5817+ * return values:
5818+ * 0: success
5819+ * -1: ArgumentError
5820+ */
5821+static int
5822+options(unsigned char *cp)
5823+{
5824+ nkf_char i, j;
5825+ unsigned char *p;
5826+ unsigned char *cp_back = NULL;
5827+ nkf_encoding *enc;
5828+
5829+ if (option_mode==1)
5830+ return 0;
5831+ while(*cp && *cp++!='-');
5832+ while (*cp || cp_back) {
5833+ if(!*cp){
5834+ cp = cp_back;
5835+ cp_back = NULL;
5836+ continue;
5837+ }
5838+ p = 0;
5839+ switch (*cp++) {
5840+ case '-': /* literal options */
5841+ if (!*cp || *cp == SP) { /* ignore the rest of arguments */
5842+ option_mode = 1;
5843+ return 0;
5844+ }
5845+ for (i=0;i<sizeof(long_option)/sizeof(long_option[0]);i++) {
5846+ p = (unsigned char *)long_option[i].name;
5847+ for (j=0;*p && *p != '=' && *p == cp[j];p++, j++);
5848+ if (*p == cp[j] || cp[j] == SP){
5849+ p = &cp[j] + 1;
5850+ break;
5851+ }
5852+ p = 0;
5853+ }
5854+ if (p == 0) {
5855+#if !defined(PERL_XS) && !defined(WIN32DLL)
5856+ fprintf(stderr, "unknown long option: --%s\n", cp);
5857+#endif
5858+ return -1;
5859+ }
5860+ while(*cp && *cp != SP && cp++);
5861+ if (long_option[i].alias[0]){
5862+ cp_back = cp;
5863+ cp = (unsigned char *)long_option[i].alias;
5864+ }else{
5865+#ifndef PERL_XS
5866+ if (strcmp(long_option[i].name, "help") == 0){
5867+ usage();
5868+ exit(EXIT_SUCCESS);
5869+ }
5870+#endif
5871+ if (strcmp(long_option[i].name, "ic=") == 0){
5872+ enc = nkf_enc_find((char *)p);
5873+ if (!enc) continue;
5874+ input_encoding = enc;
5875+ continue;
5876+ }
5877+ if (strcmp(long_option[i].name, "oc=") == 0){
5878+ enc = nkf_enc_find((char *)p);
5879+ /* if (enc <= 0) continue; */
5880+ if (!enc) continue;
5881+ output_encoding = enc;
5882+ continue;
5883+ }
5884+ if (strcmp(long_option[i].name, "guess=") == 0){
5885+ if (p[0] == '0' || p[0] == '1') {
5886+ guess_f = 1;
5887+ } else {
5888+ guess_f = 2;
5889+ }
5890+ continue;
5891+ }
5892+#ifdef OVERWRITE
5893+ if (strcmp(long_option[i].name, "overwrite") == 0){
5894+ file_out_f = TRUE;
5895+ overwrite_f = TRUE;
5896+ preserve_time_f = TRUE;
5897+ continue;
5898+ }
5899+ if (strcmp(long_option[i].name, "overwrite=") == 0){
5900+ file_out_f = TRUE;
5901+ overwrite_f = TRUE;
5902+ preserve_time_f = TRUE;
5903+ backup_f = TRUE;
5904+ backup_suffix = (char *)p;
5905+ continue;
5906+ }
5907+ if (strcmp(long_option[i].name, "in-place") == 0){
5908+ file_out_f = TRUE;
5909+ overwrite_f = TRUE;
5910+ preserve_time_f = FALSE;
5911+ continue;
5912+ }
5913+ if (strcmp(long_option[i].name, "in-place=") == 0){
5914+ file_out_f = TRUE;
5915+ overwrite_f = TRUE;
5916+ preserve_time_f = FALSE;
5917+ backup_f = TRUE;
5918+ backup_suffix = (char *)p;
5919+ continue;
5920+ }
5921+#endif
5922+#ifdef INPUT_OPTION
5923+ if (strcmp(long_option[i].name, "cap-input") == 0){
5924+ cap_f = TRUE;
5925+ continue;
5926+ }
5927+ if (strcmp(long_option[i].name, "url-input") == 0){
5928+ url_f = TRUE;
5929+ continue;
5930+ }
5931+#endif
5932+#ifdef NUMCHAR_OPTION
5933+ if (strcmp(long_option[i].name, "numchar-input") == 0){
5934+ numchar_f = TRUE;
5935+ continue;
5936+ }
5937+#endif
5938+#ifdef CHECK_OPTION
5939+ if (strcmp(long_option[i].name, "no-output") == 0){
5940+ noout_f = TRUE;
5941+ continue;
5942+ }
5943+ if (strcmp(long_option[i].name, "debug") == 0){
5944+ debug_f = TRUE;
5945+ continue;
5946+ }
5947+#endif
5948+ if (strcmp(long_option[i].name, "cp932") == 0){
5949+#ifdef SHIFTJIS_CP932
5950+ cp51932_f = TRUE;
5951+ cp932inv_f = -TRUE;
5952+#endif
5953+#ifdef UTF8_OUTPUT_ENABLE
5954+ ms_ucs_map_f = UCS_MAP_CP932;
5955+#endif
5956+ continue;
5957+ }
5958+ if (strcmp(long_option[i].name, "no-cp932") == 0){
5959+#ifdef SHIFTJIS_CP932
5960+ cp51932_f = FALSE;
5961+ cp932inv_f = FALSE;
5962+#endif
5963+#ifdef UTF8_OUTPUT_ENABLE
5964+ ms_ucs_map_f = UCS_MAP_ASCII;
5965+#endif
5966+ continue;
5967+ }
5968+#ifdef SHIFTJIS_CP932
5969+ if (strcmp(long_option[i].name, "cp932inv") == 0){
5970+ cp932inv_f = -TRUE;
5971+ continue;
5972+ }
5973+#endif
5974+
5975+#ifdef X0212_ENABLE
5976+ if (strcmp(long_option[i].name, "x0212") == 0){
5977+ x0212_f = TRUE;
5978+ continue;
5979+ }
5980+#endif
5981+
5982+#ifdef EXEC_IO
5983+ if (strcmp(long_option[i].name, "exec-in") == 0){
5984+ exec_f = 1;
5985+ return 0;
5986+ }
5987+ if (strcmp(long_option[i].name, "exec-out") == 0){
5988+ exec_f = -1;
5989+ return 0;
5990+ }
5991+#endif
5992+#if defined(UTF8_OUTPUT_ENABLE) && defined(UTF8_INPUT_ENABLE)
5993+ if (strcmp(long_option[i].name, "no-cp932ext") == 0){
5994+ no_cp932ext_f = TRUE;
5995+ continue;
5996+ }
5997+ if (strcmp(long_option[i].name, "no-best-fit-chars") == 0){
5998+ no_best_fit_chars_f = TRUE;
5999+ continue;
6000+ }
6001+ if (strcmp(long_option[i].name, "fb-skip") == 0){
6002+ encode_fallback = NULL;
6003+ continue;
6004+ }
6005+ if (strcmp(long_option[i].name, "fb-html") == 0){
6006+ encode_fallback = encode_fallback_html;
6007+ continue;
6008+ }
6009+ if (strcmp(long_option[i].name, "fb-xml") == 0){
6010+ encode_fallback = encode_fallback_xml;
6011+ continue;
6012+ }
6013+ if (strcmp(long_option[i].name, "fb-java") == 0){
6014+ encode_fallback = encode_fallback_java;
6015+ continue;
6016+ }
6017+ if (strcmp(long_option[i].name, "fb-perl") == 0){
6018+ encode_fallback = encode_fallback_perl;
6019+ continue;
6020+ }
6021+ if (strcmp(long_option[i].name, "fb-subchar") == 0){
6022+ encode_fallback = encode_fallback_subchar;
6023+ continue;
6024+ }
6025+ if (strcmp(long_option[i].name, "fb-subchar=") == 0){
6026+ encode_fallback = encode_fallback_subchar;
6027+ unicode_subchar = 0;
6028+ if (p[0] != '0'){
6029+ /* decimal number */
6030+ for (i = 0; i < 7 && nkf_isdigit(p[i]); i++){
6031+ unicode_subchar *= 10;
6032+ unicode_subchar += hex2bin(p[i]);
6033+ }
6034+ }else if(p[1] == 'x' || p[1] == 'X'){
6035+ /* hexadecimal number */
6036+ for (i = 2; i < 8 && nkf_isxdigit(p[i]); i++){
6037+ unicode_subchar <<= 4;
6038+ unicode_subchar |= hex2bin(p[i]);
6039+ }
6040+ }else{
6041+ /* octal number */
6042+ for (i = 1; i < 8 && nkf_isoctal(p[i]); i++){
6043+ unicode_subchar *= 8;
6044+ unicode_subchar += hex2bin(p[i]);
6045+ }
6046+ }
6047+ w16e_conv(unicode_subchar, &i, &j);
6048+ unicode_subchar = i<<8 | j;
6049+ continue;
6050+ }
6051+#endif
6052+#ifdef UTF8_OUTPUT_ENABLE
6053+ if (strcmp(long_option[i].name, "ms-ucs-map") == 0){
6054+ ms_ucs_map_f = UCS_MAP_MS;
6055+ continue;
6056+ }
6057+#endif
6058+#ifdef UNICODE_NORMALIZATION
6059+ if (strcmp(long_option[i].name, "utf8mac-input") == 0){
6060+ nfc_f = TRUE;
6061+ continue;
6062+ }
6063+#endif
6064+ if (strcmp(long_option[i].name, "prefix=") == 0){
6065+ if (nkf_isgraph(p[0])){
6066+ for (i = 1; nkf_isgraph(p[i]); i++){
6067+ prefix_table[p[i]] = p[0];
6068+ }
6069+ }
6070+ continue;
6071+ }
6072+#if !defined(PERL_XS) && !defined(WIN32DLL)
6073+ fprintf(stderr, "unsupported long option: --%s\n", long_option[i].name);
6074+#endif
6075+ return -1;
6076+ }
6077+ continue;
6078+ case 'b': /* buffered mode */
6079+ unbuf_f = FALSE;
6080+ continue;
6081+ case 'u': /* non bufferd mode */
6082+ unbuf_f = TRUE;
6083+ continue;
6084+ case 't': /* transparent mode */
6085+ if (*cp=='1') {
6086+ /* alias of -t */
6087+ cp++;
6088+ nop_f = TRUE;
6089+ } else if (*cp=='2') {
6090+ /*
6091+ * -t with put/get
6092+ *
6093+ * nkf -t2MB hoge.bin | nkf -t2mB | diff -s - hoge.bin
6094+ *
6095+ */
6096+ cp++;
6097+ nop_f = 2;
6098+ } else
6099+ nop_f = TRUE;
6100+ continue;
6101+ case 'j': /* JIS output */
6102+ case 'n':
6103+ output_encoding = nkf_enc_from_index(ISO_2022_JP);
6104+ continue;
6105+ case 'e': /* AT&T EUC output */
6106+ output_encoding = nkf_enc_from_index(EUCJP_NKF);
6107+ continue;
6108+ case 's': /* SJIS output */
6109+ output_encoding = nkf_enc_from_index(SHIFT_JIS);
6110+ continue;
6111+ case 'l': /* ISO8859 Latin-1 support, no conversion */
6112+ iso8859_f = TRUE; /* Only compatible with ISO-2022-JP */
6113+ input_encoding = nkf_enc_from_index(ISO_8859_1);
6114+ continue;
6115+ case 'i': /* Kanji IN ESC-$-@/B */
6116+ if (*cp=='@'||*cp=='B')
6117+ kanji_intro = *cp++;
6118+ continue;
6119+ case 'o': /* ASCII IN ESC-(-J/B/H */
6120+ /* ESC ( H was used in initial JUNET messages */
6121+ if (*cp=='J'||*cp=='B'||*cp=='H')
6122+ ascii_intro = *cp++;
6123+ continue;
6124+ case 'h':
6125+ /*
6126+ bit:1 katakana->hiragana
6127+ bit:2 hiragana->katakana
6128+ */
6129+ if ('9'>= *cp && *cp>='0')
6130+ hira_f |= (*cp++ -'0');
6131+ else
6132+ hira_f |= 1;
6133+ continue;
6134+ case 'r':
6135+ rot_f = TRUE;
6136+ continue;
6137+#if defined(MSDOS) || defined(__OS2__)
6138+ case 'T':
6139+ binmode_f = FALSE;
6140+ continue;
6141+#endif
6142+#ifndef PERL_XS
6143+ case 'V':
6144+ show_configuration();
6145+ exit(EXIT_SUCCESS);
6146+ break;
6147+ case 'v':
6148+ version();
6149+ exit(EXIT_SUCCESS);
6150+ break;
6151+#endif
6152+#ifdef UTF8_OUTPUT_ENABLE
6153+ case 'w': /* UTF-8 output */
6154+ if (cp[0] == '8') {
6155+ cp++;
6156+ if (cp[0] == '0'){
6157+ cp++;
6158+ output_encoding = nkf_enc_from_index(UTF_8N);
6159+ } else {
6160+ output_bom_f = TRUE;
6161+ output_encoding = nkf_enc_from_index(UTF_8_BOM);
6162+ }
6163+ } else {
6164+ int enc_idx;
6165+ if ('1'== cp[0] && '6'==cp[1]) {
6166+ cp += 2;
6167+ enc_idx = UTF_16;
6168+ } else if ('3'== cp[0] && '2'==cp[1]) {
6169+ cp += 2;
6170+ enc_idx = UTF_32;
6171+ } else {
6172+ output_encoding = nkf_enc_from_index(UTF_8);
6173+ continue;
6174+ }
6175+ if (cp[0]=='L') {
6176+ cp++;
6177+ output_endian = ENDIAN_LITTLE;
6178+ } else if (cp[0] == 'B') {
6179+ cp++;
6180+ }
6181+ if (cp[0] == '0'){
6182+ cp++;
6183+ enc_idx = enc_idx == UTF_16
6184+ ? (output_endian == ENDIAN_LITTLE ? UTF_16LE : UTF_16BE)
6185+ : (output_endian == ENDIAN_LITTLE ? UTF_32LE : UTF_32BE);
6186+ } else {
6187+ output_bom_f = TRUE;
6188+ enc_idx = enc_idx == UTF_16
6189+ ? (output_endian == ENDIAN_LITTLE ? UTF_16LE_BOM : UTF_16BE_BOM)
6190+ : (output_endian == ENDIAN_LITTLE ? UTF_32LE_BOM : UTF_32BE_BOM);
6191+ }
6192+ output_encoding = nkf_enc_from_index(enc_idx);
6193+ }
6194+ continue;
6195+#endif
6196+#ifdef UTF8_INPUT_ENABLE
6197+ case 'W': /* UTF input */
6198+ if (cp[0] == '8') {
6199+ cp++;
6200+ input_encoding = nkf_enc_from_index(UTF_8);
6201+ }else{
6202+ int enc_idx;
6203+ if ('1'== cp[0] && '6'==cp[1]) {
6204+ cp += 2;
6205+ input_endian = ENDIAN_BIG;
6206+ enc_idx = UTF_16;
6207+ } else if ('3'== cp[0] && '2'==cp[1]) {
6208+ cp += 2;
6209+ input_endian = ENDIAN_BIG;
6210+ enc_idx = UTF_32;
6211+ } else {
6212+ input_encoding = nkf_enc_from_index(UTF_8);
6213+ continue;
6214+ }
6215+ if (cp[0]=='L') {
6216+ cp++;
6217+ input_endian = ENDIAN_LITTLE;
6218+ } else if (cp[0] == 'B') {
6219+ cp++;
6220+ input_endian = ENDIAN_BIG;
6221+ }
6222+ enc_idx = (enc_idx == UTF_16
6223+ ? (input_endian == ENDIAN_LITTLE ? UTF_16LE : UTF_16BE)
6224+ : (input_endian == ENDIAN_LITTLE ? UTF_32LE : UTF_32BE));
6225+ input_encoding = nkf_enc_from_index(enc_idx);
6226+ }
6227+ continue;
6228+#endif
6229+ /* Input code assumption */
6230+ case 'J': /* ISO-2022-JP input */
6231+ input_encoding = nkf_enc_from_index(ISO_2022_JP);
6232+ continue;
6233+ case 'E': /* EUC-JP input */
6234+ input_encoding = nkf_enc_from_index(EUCJP_NKF);
6235+ continue;
6236+ case 'S': /* Shift_JIS input */
6237+ input_encoding = nkf_enc_from_index(SHIFT_JIS);
6238+ continue;
6239+ case 'Z': /* Convert X0208 alphabet to asii */
6240+ /* alpha_f
6241+ bit:0 Convert JIS X 0208 Alphabet to ASCII
6242+ bit:1 Convert Kankaku to one space
6243+ bit:2 Convert Kankaku to two spaces
6244+ bit:3 Convert HTML Entity
6245+ bit:4 Convert JIS X 0208 Katakana to JIS X 0201 Katakana
6246+ */
6247+ while ('0'<= *cp && *cp <='4') {
6248+ alpha_f |= 1 << (*cp++ - '0');
6249+ }
6250+ alpha_f |= 1;
6251+ continue;
6252+ case 'x': /* Convert X0201 kana to X0208 or X0201 Conversion */
6253+ x0201_f = FALSE; /* No X0201->X0208 conversion */
6254+ /* accept X0201
6255+ ESC-(-I in JIS, EUC, MS Kanji
6256+ SI/SO in JIS, EUC, MS Kanji
6257+ SS2 in EUC, JIS, not in MS Kanji
6258+ MS Kanji (0xa0-0xdf)
6259+ output X0201
6260+ ESC-(-I in JIS (0x20-0x5f)
6261+ SS2 in EUC (0xa0-0xdf)
6262+ 0xa0-0xd in MS Kanji (0xa0-0xdf)
6263+ */
6264+ continue;
6265+ case 'X': /* Convert X0201 kana to X0208 */
6266+ x0201_f = TRUE;
6267+ continue;
6268+ case 'F': /* prserve new lines */
6269+ fold_preserve_f = TRUE;
6270+ case 'f': /* folding -f60 or -f */
6271+ fold_f = TRUE;
6272+ fold_len = 0;
6273+ while('0'<= *cp && *cp <='9') { /* we don't use atoi here */
6274+ fold_len *= 10;
6275+ fold_len += *cp++ - '0';
6276+ }
6277+ if (!(0<fold_len && fold_len<BUFSIZ))
6278+ fold_len = DEFAULT_FOLD;
6279+ if (*cp=='-') {
6280+ fold_margin = 0;
6281+ cp++;
6282+ while('0'<= *cp && *cp <='9') { /* we don't use atoi here */
6283+ fold_margin *= 10;
6284+ fold_margin += *cp++ - '0';
6285+ }
6286+ }
6287+ continue;
6288+ case 'm': /* MIME support */
6289+ /* mime_decode_f = TRUE; */ /* this has too large side effects... */
6290+ if (*cp=='B'||*cp=='Q') {
6291+ mime_decode_mode = *cp++;
6292+ mimebuf_f = FIXED_MIME;
6293+ } else if (*cp=='N') {
6294+ mime_f = TRUE; cp++;
6295+ } else if (*cp=='S') {
6296+ mime_f = STRICT_MIME; cp++;
6297+ } else if (*cp=='0') {
6298+ mime_decode_f = FALSE;
6299+ mime_f = FALSE; cp++;
6300+ } else {
6301+ mime_f = STRICT_MIME;
6302+ }
6303+ continue;
6304+ case 'M': /* MIME output */
6305+ if (*cp=='B') {
6306+ mimeout_mode = 'B';
6307+ mimeout_f = FIXED_MIME; cp++;
6308+ } else if (*cp=='Q') {
6309+ mimeout_mode = 'Q';
6310+ mimeout_f = FIXED_MIME; cp++;
6311+ } else {
6312+ mimeout_f = TRUE;
6313+ }
6314+ continue;
6315+ case 'B': /* Broken JIS support */
6316+ /* bit:0 no ESC JIS
6317+ bit:1 allow any x on ESC-(-x or ESC-$-x
6318+ bit:2 reset to ascii on NL
6319+ */
6320+ if ('9'>= *cp && *cp>='0')
6321+ broken_f |= 1<<(*cp++ -'0');
6322+ else
6323+ broken_f |= TRUE;
6324+ continue;
6325+#ifndef PERL_XS
6326+ case 'O':/* for Output file */
6327+ file_out_f = TRUE;
6328+ continue;
6329+#endif
6330+ case 'c':/* add cr code */
6331+ eolmode_f = CRLF;
6332+ continue;
6333+ case 'd':/* delete cr code */
6334+ eolmode_f = LF;
6335+ continue;
6336+ case 'I': /* ISO-2022-JP output */
6337+ iso2022jp_f = TRUE;
6338+ continue;
6339+ case 'L': /* line mode */
6340+ if (*cp=='u') { /* unix */
6341+ eolmode_f = LF; cp++;
6342+ } else if (*cp=='m') { /* mac */
6343+ eolmode_f = CR; cp++;
6344+ } else if (*cp=='w') { /* windows */
6345+ eolmode_f = CRLF; cp++;
6346+ } else if (*cp=='0') { /* no conversion */
6347+ eolmode_f = 0; cp++;
6348+ }
6349+ continue;
6350+#ifndef PERL_XS
6351+ case 'g':
6352+ if ('2' <= *cp && *cp <= '9') {
6353+ guess_f = 2;
6354+ cp++;
6355+ } else if (*cp == '0' || *cp == '1') {
6356+ guess_f = 1;
6357+ cp++;
6358+ } else {
6359+ guess_f = 1;
6360+ }
6361+ continue;
6362+#endif
6363+ case SP:
6364+ /* module muliple options in a string are allowed for Perl moudle */
6365+ while(*cp && *cp++!='-');
6366+ continue;
6367+ default:
6368+#if !defined(PERL_XS) && !defined(WIN32DLL)
6369+ fprintf(stderr, "unknown option: -%c\n", *(cp-1));
6370+#endif
6371+ /* bogus option but ignored */
6372+ return -1;
6373+ }
6374+ }
6375+ return 0;
6376+}
6377+
6378+#ifdef WIN32DLL
6379+#include "nkf32dll.c"
6380+#elif defined(PERL_XS)
6381+#else /* WIN32DLL */
6382+int
6383+main(int argc, char **argv)
6384+{
6385+ FILE *fin;
6386+ unsigned char *cp;
6387+
6388+ char *outfname = NULL;
6389+ char *origfname;
6390+
6391+#ifdef EASYWIN /*Easy Win */
6392+ _BufferSize.y = 400;/*Set Scroll Buffer Size*/
6393+#endif
6394+#ifdef DEFAULT_CODE_LOCALE
6395+ setlocale(LC_CTYPE, "");
6396+#endif
6397+ nkf_state_init();
6398+
6399+ for (argc--,argv++; (argc > 0) && **argv == '-'; argc--, argv++) {
6400+ cp = (unsigned char *)*argv;
6401+ options(cp);
6402+#ifdef EXEC_IO
6403+ if (exec_f){
6404+ int fds[2], pid;
6405+ if (pipe(fds) < 0 || (pid = fork()) < 0){
6406+ abort();
6407+ }
6408+ if (pid == 0){
6409+ if (exec_f > 0){
6410+ close(fds[0]);
6411+ dup2(fds[1], 1);
6412+ }else{
6413+ close(fds[1]);
6414+ dup2(fds[0], 0);
6415+ }
6416+ execvp(argv[1], &argv[1]);
6417+ }
6418+ if (exec_f > 0){
6419+ close(fds[1]);
6420+ dup2(fds[0], 0);
6421+ }else{
6422+ close(fds[0]);
6423+ dup2(fds[1], 1);
6424+ }
6425+ argc = 0;
6426+ break;
6427+ }
6428+#endif
6429+ }
6430+
6431+ if (guess_f) {
6432+#ifdef CHECK_OPTION
6433+ int debug_f_back = debug_f;
6434+#endif
6435+#ifdef EXEC_IO
6436+ int exec_f_back = exec_f;
6437+#endif
6438+#ifdef X0212_ENABLE
6439+ int x0212_f_back = x0212_f;
6440+#endif
6441+ int x0213_f_back = x0213_f;
6442+ int guess_f_back = guess_f;
6443+ reinit();
6444+ guess_f = guess_f_back;
6445+ mime_f = FALSE;
6446+#ifdef CHECK_OPTION
6447+ debug_f = debug_f_back;
6448+#endif
6449+#ifdef EXEC_IO
6450+ exec_f = exec_f_back;
6451+#endif
6452+ x0212_f = x0212_f_back;
6453+ x0213_f = x0213_f_back;
6454+ }
6455+
6456+ if (binmode_f == TRUE)
6457+#if defined(__OS2__) && (defined(__IBMC__) || defined(__IBMCPP__))
6458+ if (freopen("","wb",stdout) == NULL)
6459+ return (-1);
6460+#else
6461+ setbinmode(stdout);
6462+#endif
6463+
6464+ if (unbuf_f)
6465+ setbuf(stdout, (char *) NULL);
6466+ else
6467+ setvbuffer(stdout, (char *) stdobuf, IOBUF_SIZE);
6468+
6469+ if (argc == 0) {
6470+ if (binmode_f == TRUE)
6471+#if defined(__OS2__) && (defined(__IBMC__) || defined(__IBMCPP__))
6472+ if (freopen("","rb",stdin) == NULL) return (-1);
6473+#else
6474+ setbinmode(stdin);
6475+#endif
6476+ setvbuffer(stdin, (char *) stdibuf, IOBUF_SIZE);
6477+ if (nop_f)
6478+ noconvert(stdin);
6479+ else {
6480+ kanji_convert(stdin);
6481+ if (guess_f) print_guessed_code(NULL);
6482+ }
6483+ } else {
6484+ int nfiles = argc;
6485+ int is_argument_error = FALSE;
6486+ while (argc--) {
6487+ input_codename = NULL;
6488+ input_eol = 0;
6489+#ifdef CHECK_OPTION
6490+ iconv_for_check = 0;
6491+#endif
6492+ if ((fin = fopen((origfname = *argv++), "r")) == NULL) {
6493+ perror(*(argv-1));
6494+ is_argument_error = TRUE;
6495+ continue;
6496+ } else {
6497+#ifdef OVERWRITE
6498+ int fd = 0;
6499+ int fd_backup = 0;
6500+#endif
6501+
6502+ /* reopen file for stdout */
6503+ if (file_out_f == TRUE) {
6504+#ifdef OVERWRITE
6505+ if (overwrite_f){
6506+ outfname = nkf_xmalloc(strlen(origfname)
6507+ + strlen(".nkftmpXXXXXX")
6508+ + 1);
6509+ strcpy(outfname, origfname);
6510+#ifdef MSDOS
6511+ {
6512+ int i;
6513+ for (i = strlen(outfname); i; --i){
6514+ if (outfname[i - 1] == '/'
6515+ || outfname[i - 1] == '\\'){
6516+ break;
6517+ }
6518+ }
6519+ outfname[i] = '\0';
6520+ }
6521+ strcat(outfname, "ntXXXXXX");
6522+ mktemp(outfname);
6523+ fd = open(outfname, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL,
6524+ S_IREAD | S_IWRITE);
6525+#else
6526+ strcat(outfname, ".nkftmpXXXXXX");
6527+ fd = mkstemp(outfname);
6528+#endif
6529+ if (fd < 0
6530+ || (fd_backup = dup(fileno(stdout))) < 0
6531+ || dup2(fd, fileno(stdout)) < 0
6532+ ){
6533+ perror(origfname);
6534+ return -1;
6535+ }
6536+ }else
6537+#endif
6538+ if(argc == 1) {
6539+ outfname = *argv++;
6540+ argc--;
6541+ } else {
6542+ outfname = "nkf.out";
6543+ }
6544+
6545+ if(freopen(outfname, "w", stdout) == NULL) {
6546+ perror (outfname);
6547+ return (-1);
6548+ }
6549+ if (binmode_f == TRUE) {
6550+#if defined(__OS2__) && (defined(__IBMC__) || defined(__IBMCPP__))
6551+ if (freopen("","wb",stdout) == NULL)
6552+ return (-1);
6553+#else
6554+ setbinmode(stdout);
6555+#endif
6556+ }
6557+ }
6558+ if (binmode_f == TRUE)
6559+#if defined(__OS2__) && (defined(__IBMC__) || defined(__IBMCPP__))
6560+ if (freopen("","rb",fin) == NULL)
6561+ return (-1);
6562+#else
6563+ setbinmode(fin);
6564+#endif
6565+ setvbuffer(fin, (char *) stdibuf, IOBUF_SIZE);
6566+ if (nop_f)
6567+ noconvert(fin);
6568+ else {
6569+ char *filename = NULL;
6570+ kanji_convert(fin);
6571+ if (nfiles > 1) filename = origfname;
6572+ if (guess_f) print_guessed_code(filename);
6573+ }
6574+ fclose(fin);
6575+#ifdef OVERWRITE
6576+ if (overwrite_f) {
6577+ struct stat sb;
6578+#if defined(MSDOS) && !defined(__MINGW32__) && !defined(__WIN32__) && !defined(__WATCOMC__) && !defined(__EMX__) && !defined(__OS2__) && !defined(__DJGPP__)
6579+ time_t tb[2];
6580+#else
6581+ struct utimbuf tb;
6582+#endif
6583+
6584+ fflush(stdout);
6585+ close(fd);
6586+ if (dup2(fd_backup, fileno(stdout)) < 0){
6587+ perror("dup2");
6588+ }
6589+ if (stat(origfname, &sb)) {
6590+ fprintf(stderr, "Can't stat %s\n", origfname);
6591+ }
6592+ /* パーミッションを復元 */
6593+ if (chmod(outfname, sb.st_mode)) {
6594+ fprintf(stderr, "Can't set permission %s\n", outfname);
6595+ }
6596+
6597+ /* タイムスタンプを復元 */
6598+ if(preserve_time_f){
6599+#if defined(MSDOS) && !defined(__MINGW32__) && !defined(__WIN32__) && !defined(__WATCOMC__) && !defined(__EMX__) && !defined(__OS2__) && !defined(__DJGPP__)
6600+ tb[0] = tb[1] = sb.st_mtime;
6601+ if (utime(outfname, tb)) {
6602+ fprintf(stderr, "Can't set timestamp %s\n", outfname);
6603+ }
6604+#else
6605+ tb.actime = sb.st_atime;
6606+ tb.modtime = sb.st_mtime;
6607+ if (utime(outfname, &tb)) {
6608+ fprintf(stderr, "Can't set timestamp %s\n", outfname);
6609+ }
6610+#endif
6611+ }
6612+ if(backup_f){
6613+ char *backup_filename = get_backup_filename(backup_suffix, origfname);
6614+#ifdef MSDOS
6615+ unlink(backup_filename);
6616+#endif
6617+ if (rename(origfname, backup_filename)) {
6618+ perror(backup_filename);
6619+ fprintf(stderr, "Can't rename %s to %s\n",
6620+ origfname, backup_filename);
6621+ }
6622+ nkf_xfree(backup_filename);
6623+ }else{
6624+#ifdef MSDOS
6625+ if (unlink(origfname)){
6626+ perror(origfname);
6627+ }
6628+#endif
6629+ }
6630+ if (rename(outfname, origfname)) {
6631+ perror(origfname);
6632+ fprintf(stderr, "Can't rename %s to %s\n",
6633+ outfname, origfname);
6634+ }
6635+ nkf_xfree(outfname);
6636+ }
6637+#endif
6638+ }
6639+ }
6640+ if (is_argument_error)
6641+ return(-1);
6642+ }
6643+#ifdef EASYWIN /*Easy Win */
6644+ if (file_out_f == FALSE)
6645+ scanf("%d",&end_check);
6646+ else
6647+ fclose(stdout);
6648+#else /* for Other OS */
6649+ if (file_out_f == TRUE)
6650+ fclose(stdout);
6651+#endif /*Easy Win */
6652+ return (0);
6653+}
6654+#endif /* WIN32DLL */
--- /dev/null
+++ b/nkf/utf8tbl.c
@@ -0,0 +1,8754 @@
1+/*
2+ * utf8tbl.c - Convertion Table for nkf
3+ *
4+ * $Id: utf8tbl.c,v 1.23 2008/02/07 19:25:29 naruse Exp $
5+ */
6+
7+#include "config.h"
8+#include "utf8tbl.h"
9+
10+#ifdef UTF8_OUTPUT_ENABLE
11+static const unsigned short euc_to_utf8_A1[] = {
12+ 0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A,
13+ 0xFF1B, 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8,
14+ 0xFF3E, 0x203E, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003,
15+ 0x4EDD, 0x3005, 0x3006, 0x3007, 0x30FC, 0x2014, 0x2010, 0xFF0F,
16+ 0xFF3C, 0x301C, 0x2016, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019,
17+ 0x201C, 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D,
18+ 0xFF5B, 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D,
19+ 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B, 0x2212, 0x00B1, 0x00D7,
20+ 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E,
21+ 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0x00A5,
22+ 0xFF04, 0x00A2, 0x00A3, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20,
23+ 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7,
24+};
25+
26+/* Microsoft UCS Mapping Compatible */
27+static const unsigned short euc_to_utf8_A1_ms[] = {
28+ 0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A,
29+ 0xFF1B, 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8,
30+ 0xFF3E, 0xFFE3, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003,
31+ 0x4EDD, 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F,
32+ 0xFF3C, 0xFF5E, 0x2225, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019,
33+ 0x201C, 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D,
34+ 0xFF5B, 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D,
35+ 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B, 0xFF0D, 0x00B1, 0x00D7,
36+ 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E,
37+ 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5,
38+ 0xFF04, 0xFFE0, 0xFFE1, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20,
39+ 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7,
40+};
41+static const unsigned short euc_to_utf8_A2[] = {
42+ 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC,
43+ 0x203B, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0,
44+ 0, 0, 0, 0, 0, 0, 0, 0,
45+ 0, 0, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283,
46+ 0x222A, 0x2229, 0, 0, 0, 0, 0, 0,
47+ 0, 0, 0x2227, 0x2228, 0x00AC, 0x21D2, 0x21D4, 0x2200,
48+ 0x2203, 0, 0, 0, 0, 0, 0, 0,
49+ 0, 0, 0, 0, 0x2220, 0x22A5, 0x2312, 0x2202,
50+ 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D,
51+ 0x2235, 0x222B, 0x222C, 0, 0, 0, 0, 0,
52+ 0, 0, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020,
53+ 0x2021, 0x00B6, 0, 0, 0, 0, 0x25EF,
54+};
55+
56+/* Microsoft UCS Mapping Compatible */
57+static const unsigned short euc_to_utf8_A2_ms[] = {
58+ 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC,
59+ 0x203B, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0,
60+ 0, 0, 0, 0, 0, 0, 0, 0,
61+ 0, 0, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283,
62+ 0x222A, 0x2229, 0, 0, 0, 0, 0, 0,
63+ 0, 0, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200,
64+ 0x2203, 0, 0, 0, 0, 0, 0, 0,
65+ 0, 0, 0, 0, 0x2220, 0x22A5, 0x2312, 0x2202,
66+ 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D,
67+ 0x2235, 0x222B, 0x222C, 0, 0, 0, 0, 0,
68+ 0, 0, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020,
69+ 0x2021, 0x00B6, 0, 0, 0, 0, 0x25EF,
70+};
71+static const unsigned short euc_to_utf8_A3[] = {
72+ 0, 0, 0, 0, 0, 0, 0,
73+ 0, 0, 0, 0, 0, 0, 0, 0,
74+ 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17,
75+ 0xFF18, 0xFF19, 0, 0, 0, 0, 0, 0,
76+ 0, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27,
77+ 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
78+ 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37,
79+ 0xFF38, 0xFF39, 0xFF3A, 0, 0, 0, 0, 0,
80+ 0, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,
81+ 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
82+ 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57,
83+ 0xFF58, 0xFF59, 0xFF5A, 0, 0, 0, 0,
84+};
85+static const unsigned short euc_to_utf8_A4[] = {
86+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
87+ 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F,
88+ 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
89+ 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F,
90+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
91+ 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F,
92+ 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
93+ 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F,
94+ 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
95+ 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F,
96+ 0x3090, 0x3091, 0x3092, 0x3093, 0, 0, 0, 0,
97+ 0, 0, 0, 0, 0, 0, 0,
98+};
99+static const unsigned short euc_to_utf8_A5[] = {
100+ 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7,
101+ 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF,
102+ 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7,
103+ 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF,
104+ 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7,
105+ 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF,
106+ 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7,
107+ 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF,
108+ 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7,
109+ 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF,
110+ 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0,
111+ 0, 0, 0, 0, 0, 0, 0,
112+};
113+static const unsigned short euc_to_utf8_A6[] = {
114+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
115+ 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
116+ 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8,
117+ 0x03A9, 0, 0, 0, 0, 0, 0, 0,
118+ 0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
119+ 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
120+ 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8,
121+ 0x03C9, 0, 0, 0, 0, 0, 0, 0,
122+ 0, 0, 0, 0, 0, 0, 0, 0,
123+ 0, 0, 0, 0, 0, 0, 0, 0,
124+ 0, 0, 0, 0, 0, 0, 0, 0,
125+ 0, 0, 0, 0, 0, 0, 0,
126+};
127+static const unsigned short euc_to_utf8_A7[] = {
128+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
129+ 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D,
130+ 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
131+ 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D,
132+ 0x042E, 0x042F, 0, 0, 0, 0, 0, 0,
133+ 0, 0, 0, 0, 0, 0, 0, 0,
134+ 0, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
135+ 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
136+ 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
137+ 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D,
138+ 0x044E, 0x044F, 0, 0, 0, 0, 0, 0,
139+ 0, 0, 0, 0, 0, 0, 0,
140+};
141+static const unsigned short euc_to_utf8_A8[] = {
142+ 0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C,
143+ 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513,
144+ 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520,
145+ 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538,
146+ 0x2542, 0, 0, 0, 0, 0, 0, 0,
147+ 0, 0, 0, 0, 0, 0, 0, 0,
148+ 0, 0, 0, 0, 0, 0, 0, 0,
149+ 0, 0, 0, 0, 0, 0, 0, 0,
150+ 0, 0, 0, 0, 0, 0, 0, 0,
151+ 0, 0, 0, 0, 0, 0, 0, 0,
152+ 0, 0, 0, 0, 0, 0, 0, 0,
153+ 0, 0, 0, 0, 0, 0, 0,
154+};
155+static const unsigned short euc_to_utf8_A9[] = {
156+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
157+ 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E,
158+ 0x246F, 0x2470, 0x2471, 0x2472, 0x2473, 0, 0, 0,
159+ 0, 0, 0, 0, 0, 0, 0, 0x2474,
160+ 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C,
161+ 0x247D, 0x247E, 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484,
162+ 0x2485, 0x2486, 0x2487, 0, 0, 0, 0, 0,
163+ 0, 0, 0, 0, 0, 0x2776, 0x2777, 0x2778,
164+ 0x2779, 0x277A, 0x277B, 0x277C, 0x277D, 0x277E, 0, 0,
165+ 0, 0, 0, 0, 0, 0, 0, 0,
166+ 0, 0, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D,
167+ 0x248E, 0x248F, 0x2490, 0, 0, 0, 0,
168+};
169+static const unsigned short euc_to_utf8_AA[] = {
170+ 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
171+ 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0, 0, 0,
172+ 0, 0, 0, 0, 0, 0x2170, 0x2171, 0x2172,
173+ 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A,
174+ 0x217B, 0, 0, 0, 0, 0, 0, 0,
175+ 0, 0, 0, 0, 0, 0, 0, 0,
176+ 0, 0, 0, 0, 0, 0, 0, 0,
177+ 0, 0, 0, 0, 0, 0x249C, 0x249D, 0x249E,
178+ 0x249F, 0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4, 0x24A5, 0x24A6,
179+ 0x24A7, 0x24A8, 0x24A9, 0x24AA, 0x24AB, 0x24AC, 0x24AD, 0x24AE,
180+ 0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0,
181+ 0, 0, 0, 0, 0, 0, 0,
182+};
183+static const unsigned short euc_to_utf8_AB[] = {
184+ 0x339C, 0x339F, 0x339D, 0x33A0, 0x33A4, 0, 0x33A1,
185+ 0x33A5, 0x339E, 0x33A2, 0x338E, 0, 0x338F, 0x33C4, 0x3396,
186+ 0x3397, 0x2113, 0x3398, 0x33B3, 0x33B2, 0x33B1, 0x33B0, 0x2109,
187+ 0x33D4, 0x33CB, 0x3390, 0x3385, 0x3386, 0x3387, 0, 0,
188+ 0, 0, 0, 0, 0, 0, 0, 0,
189+ 0, 0, 0, 0, 0, 0, 0, 0,
190+ 0, 0, 0, 0, 0, 0, 0, 0,
191+ 0, 0, 0, 0, 0, 0, 0, 0,
192+ 0, 0, 0, 0, 0, 0, 0, 0,
193+ 0, 0, 0, 0, 0, 0, 0, 0,
194+ 0, 0, 0, 0, 0, 0, 0, 0,
195+ 0, 0, 0, 0x2116, 0x33CD, 0x2121, 0,
196+};
197+static const unsigned short euc_to_utf8_AC[] = {
198+ 0x2664, 0x2667, 0x2661, 0x2662, 0x2660, 0x2663, 0x2665,
199+ 0x2666, 0, 0, 0, 0, 0, 0, 0,
200+ 0, 0, 0, 0, 0, 0x3020, 0x260E, 0x3004,
201+ 0, 0, 0, 0, 0, 0, 0, 0,
202+ 0, 0, 0, 0, 0, 0, 0, 0,
203+ 0, 0x261E, 0x261C, 0x261D, 0x261F, 0x21C6, 0x21C4, 0x21C5,
204+ 0, 0x21E8, 0x21E6, 0x21E7, 0x21E9, 0, 0, 0,
205+ 0, 0, 0, 0, 0, 0, 0, 0,
206+ 0, 0, 0, 0, 0, 0, 0, 0,
207+ 0, 0, 0, 0, 0, 0, 0, 0,
208+ 0, 0, 0, 0, 0, 0, 0, 0,
209+ 0, 0, 0, 0, 0, 0, 0,
210+};
211+static const unsigned short euc_to_utf8_AC_mac[] = {
212+ 0x2664, 0x2667, 0x2661, 0x2662, 0x2660, 0x2663, 0x2665,
213+ 0x2666, 0, 0, 0, 0, 0, 0, 0,
214+ 0, 0, 0, 0, 0, 0x3020, 0x260E, 0x3004,
215+ 0, 0, 0, 0, 0, 0, 0, 0,
216+ 0, 0, 0, 0, 0, 0, 0, 0,
217+ 0, 0x261E, 0x261C, 0x261D, 0x261F, 0x21C6, 0x21C4, 0x21C5,
218+ 0, 0x21E8, 0x21E6, 0x21E7, 0x21E9, 0x2192, 0x2190, 0x2191,
219+ 0x2193, 0, 0, 0, 0, 0, 0, 0,
220+ 0, 0, 0, 0, 0, 0, 0, 0,
221+ 0, 0, 0, 0, 0, 0, 0, 0,
222+ 0, 0, 0, 0, 0, 0, 0, 0,
223+ 0, 0, 0, 0, 0, 0, 0,
224+};
225+static const unsigned short euc_to_utf8_AD[] = {
226+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
227+ 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E,
228+ 0x246F, 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162,
229+ 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0,
230+ 0x3349, 0x3314, 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, 0x3336,
231+ 0x3351, 0x3357, 0x330D, 0x3326, 0x3323, 0x332B, 0x334A, 0x333B,
232+ 0x339C, 0x339D, 0x339E, 0x338E, 0x338F, 0x33C4, 0x33A1, 0,
233+ 0, 0, 0, 0, 0, 0, 0, 0x337B,
234+ 0x301D, 0x301F, 0x2116, 0x33CD, 0x2121, 0x32A4, 0x32A5, 0x32A6,
235+ 0x32A7, 0x32A8, 0x3231, 0x3232, 0x3239, 0x337E, 0x337D, 0x337C,
236+ 0x2252, 0x2261, 0x222B, 0x222E, 0x2211, 0x221A, 0x22A5, 0x2220,
237+ 0x221F, 0x22BF, 0x2235, 0x2229, 0x222A, 0, 0x3299,
238+};
239+static const unsigned short euc_to_utf8_AD_mac[] = {
240+ 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F,
241+ 0x796D, 0x795D, 0x81EA, 0x81F3, 0x3239, 0x547C, 0x3231, 0x8CC7,
242+ 0x540D, 0x3232, 0x5B66, 0x8CA1, 0x793E, 0x7279, 0x76E3, 0x4F01,
243+ 0x5354, 0x52B4, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0,
244+ 0x3349, 0x3314, 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, 0x3336,
245+ 0x3351, 0x3357, 0x330D, 0x3326, 0x3323, 0x332B, 0x334A, 0x333B,
246+ 0x339C, 0x339D, 0x339E, 0x338E, 0x338F, 0x33C4, 0x33A1, 0,
247+ 0, 0, 0, 0, 0, 0, 0, 0x337B,
248+ 0x301D, 0x301F, 0x2116, 0x33CD, 0x2121, 0x32A4, 0x32A5, 0x32A6,
249+ 0x32A7, 0x32A8, 0x3231, 0x3232, 0x3239, 0x337E, 0x337D, 0x337C,
250+ 0x2252, 0x5927, 0x5C0F, 0x32A4, 0x32A5, 0x32A6, 0x32A7, 0x32A8,
251+ 0x533B, 0x8CA1, 0x512A, 0x52B4, 0x5370, 0x63A7, 0x79D8,
252+};
253+static const unsigned short euc_to_utf8_AE[] = {
254+ 0x3349, 0x3322, 0x334D, 0x3314, 0x3316, 0x3305, 0x3333,
255+ 0x334E, 0x3303, 0x3336, 0x3318, 0x3315, 0x3327, 0x3351, 0x334A,
256+ 0x3339, 0x3357, 0x330D, 0x3342, 0x3323, 0x3326, 0x333B, 0x332B,
257+ 0, 0, 0, 0, 0, 0, 0, 0x3300,
258+ 0x331E, 0x332A, 0x3331, 0x3347, 0, 0, 0, 0,
259+ 0, 0, 0, 0, 0, 0, 0, 0,
260+ 0, 0, 0, 0, 0, 0, 0, 0,
261+ 0, 0, 0, 0, 0, 0, 0, 0,
262+ 0, 0, 0, 0, 0, 0, 0, 0x337E,
263+ 0x337D, 0x337C, 0x337B, 0, 0, 0, 0, 0,
264+ 0, 0, 0, 0, 0, 0, 0, 0,
265+ 0, 0, 0, 0, 0x337F, 0, 0,
266+};
267+static const unsigned short euc_to_utf8_AF[] = {
268+ 0x222E, 0x221F, 0x22BF, 0, 0, 0, 0,
269+ 0, 0, 0, 0, 0, 0, 0, 0,
270+ 0, 0, 0, 0, 0, 0x301D, 0x301F, 0,
271+ 0, 0, 0, 0, 0, 0, 0, 0,
272+ 0, 0, 0, 0, 0, 0, 0, 0,
273+ 0, 0x3094, 0, 0x30F7, 0x30F8, 0x30F9, 0x30FA, 0,
274+ 0, 0, 0, 0, 0, 0, 0, 0,
275+ 0, 0, 0, 0, 0, 0, 0, 0,
276+ 0, 0, 0, 0, 0, 0, 0, 0,
277+ 0, 0, 0, 0, 0, 0, 0, 0,
278+ 0, 0, 0, 0, 0, 0, 0, 0,
279+ 0, 0, 0, 0, 0, 0, 0,
280+};
281+static const unsigned short euc_to_utf8_B0[] = {
282+ 0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328,
283+ 0x59F6, 0x9022, 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25,
284+ 0x65ED, 0x8466, 0x82A6, 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271,
285+ 0x5B9B, 0x59D0, 0x867B, 0x98F4, 0x7D62, 0x7DBE, 0x9B8E, 0x6216,
286+ 0x7C9F, 0x88B7, 0x5B89, 0x5EB5, 0x6309, 0x6697, 0x6848, 0x95C7,
287+ 0x978D, 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, 0x5049, 0x56F2,
288+ 0x5937, 0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, 0x6613,
289+ 0x6905, 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3,
290+ 0x840E, 0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5,
291+ 0x57DF, 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038,
292+ 0x7A32, 0x8328, 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1,
293+ 0x56E0, 0x59FB, 0x5F15, 0x98F2, 0x6DEB, 0x80E4, 0x852D,
294+};
295+static const unsigned short euc_to_utf8_B1[] = {
296+ 0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, 0x53F3, 0x5B87,
297+ 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, 0x4E11,
298+ 0x7893, 0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B,
299+ 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B,
300+ 0x96F2, 0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620,
301+ 0x66F3, 0x6804, 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E,
302+ 0x9834, 0x82F1, 0x885B, 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA,
303+ 0x99C5, 0x60A6, 0x8B01, 0x8D8A, 0x95B2, 0x698E, 0x53AD, 0x5186,
304+ 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, 0x6028, 0x63A9, 0x63F4,
305+ 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, 0x733F, 0x7E01,
306+ 0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, 0x65BC,
307+ 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC,
308+};
309+static const unsigned short euc_to_utf8_B2[] = {
310+ 0x62BC, 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1,
311+ 0x8956, 0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104,
312+ 0x5C4B, 0x61B6, 0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, 0x5378,
313+ 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, 0x5316, 0x4EEE, 0x4F55,
314+ 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, 0x590F, 0x5AC1,
315+ 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, 0x6CB3,
316+ 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB,
317+ 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8,
318+ 0x8FE6, 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259,
319+ 0x753B, 0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5,
320+ 0x4ECB, 0x4F1A, 0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB,
321+ 0x602A, 0x6094, 0x6062, 0x61D0, 0x6212, 0x62D0, 0x6539,
322+};
323+static const unsigned short euc_to_utf8_B3[] = {
324+ 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686,
325+ 0x7D75, 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE,
326+ 0x5916, 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D,
327+ 0x84CB, 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9,
328+ 0x57A3, 0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3,
329+ 0x62E1, 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B,
330+ 0x899A, 0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, 0x9769,
331+ 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B,
332+ 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC,
333+ 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39,
334+ 0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2,
335+ 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431,
336+};
337+static const unsigned short euc_to_utf8_B4[] = {
338+ 0x7CA5, 0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0,
339+ 0x5BD2, 0x520A, 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6,
340+ 0x5B8C, 0x5B98, 0x5BDB, 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163,
341+ 0x61BE, 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53,
342+ 0x6C57, 0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B,
343+ 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266,
344+ 0x839E, 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591,
345+ 0x95A2, 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8,
346+ 0x5DCC, 0x73A9, 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1,
347+ 0x9811, 0x9854, 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668,
348+ 0x57FA, 0x5947, 0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC,
349+ 0x63EE, 0x673A, 0x65D7, 0x65E2, 0x671F, 0x68CB, 0x68C4,
350+};
351+static const unsigned short euc_to_utf8_B5[] = {
352+ 0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948,
353+ 0x5B63, 0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77,
354+ 0x8ECC, 0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100,
355+ 0x5993, 0x5B9C, 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591,
356+ 0x7947, 0x7FA9, 0x87FB, 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0,
357+ 0x5409, 0x5403, 0x55AB, 0x6854, 0x6A58, 0x8A70, 0x7827, 0x6775,
358+ 0x9ECD, 0x5374, 0x5BA2, 0x811A, 0x8650, 0x9006, 0x4E18, 0x4E45,
359+ 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, 0x6025, 0x6551,
360+ 0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE,
361+ 0x7B08, 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45,
362+ 0x5DE8, 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD,
363+ 0x92F8, 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC,
364+};
365+static const unsigned short euc_to_utf8_B6[] = {
366+ 0x4F9B, 0x4FA0, 0x50D1, 0x5147, 0x7AF6, 0x5171, 0x51F6,
367+ 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC, 0x5883, 0x5CE1, 0x5F37,
368+ 0x5F4A, 0x602F, 0x6050, 0x606D, 0x631F, 0x6559, 0x6A4B, 0x6CC1,
369+ 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, 0x90F7,
370+ 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681,
371+ 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5,
372+ 0x52E4, 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434,
373+ 0x7981, 0x79BD, 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F,
374+ 0x8B39, 0x8FD1, 0x91D1, 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5,
375+ 0x533A, 0x72D7, 0x7396, 0x77E9, 0x82E6, 0x8EAF, 0x99C6, 0x99C8,
376+ 0x99D2, 0x5177, 0x611A, 0x865E, 0x55B0, 0x7A7A, 0x5076, 0x5BD3,
377+ 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, 0x5C48,
378+};
379+static const unsigned short euc_to_utf8_B7[] = {
380+ 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A,
381+ 0x9688, 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B,
382+ 0x85AB, 0x8A13, 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941,
383+ 0x4FC2, 0x50BE, 0x5211, 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B,
384+ 0x5951, 0x5F62, 0x5F84, 0x6075, 0x6176, 0x6167, 0x61A9, 0x63B2,
385+ 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, 0x7566, 0x7A3D, 0x7CFB,
386+ 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD, 0x8A08,
387+ 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, 0x9BE8,
388+ 0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20,
389+ 0x6C7A, 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6,
390+ 0x5039, 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F,
391+ 0x5805, 0x5ACC, 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372,
392+};
393+static const unsigned short euc_to_utf8_B8[] = {
394+ 0x691C, 0x6A29, 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F,
395+ 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063,
396+ 0x9375, 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3,
397+ 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237,
398+ 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA,
399+ 0x59D1, 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF,
400+ 0x6E56, 0x72D0, 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E,
401+ 0x8A87, 0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92,
402+ 0x4F0D, 0x5348, 0x5449, 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F,
403+ 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190,
404+ 0x4E5E, 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149,
405+ 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411,
406+};
407+static const unsigned short euc_to_utf8_B9[] = {
408+ 0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D,
409+ 0x5B8F, 0x5DE5, 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7,
410+ 0x5F18, 0x6052, 0x614C, 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602,
411+ 0x6643, 0x66F4, 0x676D, 0x6821, 0x6897, 0x69CB, 0x6C5F, 0x6D2A,
412+ 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687, 0x786C, 0x7A3F, 0x7CE0,
413+ 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, 0x80AF, 0x80B1,
414+ 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, 0x8CA2,
415+ 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D,
416+ 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408,
417+ 0x58D5, 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B,
418+ 0x544A, 0x56FD, 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09,
419+ 0x8170, 0x7511, 0x5FFD, 0x60DA, 0x9AA8, 0x72DB, 0x8FBC,
420+};
421+static const unsigned short euc_to_utf8_BA[] = {
422+ 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A,
423+ 0x6068, 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5,
424+ 0x7D3A, 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F,
425+ 0x5DE6, 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396,
426+ 0x88DF, 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700,
427+ 0x54C9, 0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D,
428+ 0x6B73, 0x6E08, 0x707D, 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D,
429+ 0x658E, 0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728,
430+ 0x6750, 0x7F6A, 0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A,
431+ 0x80B4, 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A,
432+ 0x548B, 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22,
433+ 0x932F, 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237,
434+};
435+static const unsigned short euc_to_utf8_BB[] = {
436+ 0x5BDF, 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9,
437+ 0x96D1, 0x7690, 0x9BD6, 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652,
438+ 0x4E09, 0x5098, 0x53C2, 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F,
439+ 0x71E6, 0x73CA, 0x7523, 0x7B97, 0x7E82, 0x8695, 0x8B83, 0x8CDB,
440+ 0x9178, 0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, 0x4ED4, 0x4F3A,
441+ 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, 0x59CB,
442+ 0x59C9, 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D,
443+ 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62,
444+ 0x6B7B, 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B,
445+ 0x80A2, 0x8102, 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C,
446+ 0x8AEE, 0x8CC7, 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C,
447+ 0x4F8D, 0x5150, 0x5B57, 0x5BFA, 0x6148, 0x6301, 0x6642,
448+};
449+static const unsigned short euc_to_utf8_BC[] = {
450+ 0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, 0x78C1,
451+ 0x793A, 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F,
452+ 0x5F0F, 0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03,
453+ 0x53F1, 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06,
454+ 0x75BE, 0x8CEA, 0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D,
455+ 0x5C61, 0x854A, 0x7E1E, 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66,
456+ 0x659C, 0x716E, 0x793E, 0x7D17, 0x8005, 0x8B1D, 0x8ECA, 0x906E,
457+ 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A, 0x6753, 0x707C, 0x7235,
458+ 0x914C, 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, 0x60F9, 0x4E3B,
459+ 0x53D6, 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, 0x7A2E,
460+ 0x816B, 0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF,
461+ 0x6388, 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468,
462+};
463+static const unsigned short euc_to_utf8_BD[] = {
464+ 0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32,
465+ 0x79C0, 0x79CB, 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, 0x821F, 0x8490,
466+ 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F, 0x9031, 0x914B, 0x916C,
467+ 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, 0x5F93, 0x620E,
468+ 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, 0x53D4,
469+ 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F,
470+ 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3,
471+ 0x821C, 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3,
472+ 0x6E96, 0x6F64, 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806,
473+ 0x51E6, 0x521D, 0x6240, 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2,
474+ 0x7F72, 0x66F8, 0x85AF, 0x85F7, 0x8AF8, 0x52A9, 0x53D9, 0x5973,
475+ 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, 0x50B7, 0x511F,
476+};
477+static const unsigned short euc_to_utf8_BE[] = {
478+ 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531,
479+ 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11,
480+ 0x5C1A, 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB,
481+ 0x638C, 0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2,
482+ 0x6A1F, 0x6A35, 0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126,
483+ 0x7167, 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, 0x7AE0,
484+ 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, 0x885D,
485+ 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, 0x91A4,
486+ 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, 0x4E1E,
487+ 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38,
488+ 0x60C5, 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63,
489+ 0x84B8, 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE,
490+};
491+static const unsigned short euc_to_utf8_BF[] = {
492+ 0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272,
493+ 0x89E6, 0x98DF, 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5,
494+ 0x5507, 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0,
495+ 0x664B, 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F,
496+ 0x795E, 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A,
497+ 0x8EAB, 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203,
498+ 0x5875, 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5,
499+ 0x9663, 0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8,
500+ 0x9017, 0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761,
501+ 0x7C8B, 0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F,
502+ 0x745E, 0x9AC4, 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB,
503+ 0x636E, 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE,
504+};
505+static const unsigned short euc_to_utf8_C0[] = {
506+ 0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F,
507+ 0x51C4, 0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F,
508+ 0x6574, 0x661F, 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272,
509+ 0x751F, 0x76DB, 0x7CBE, 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0,
510+ 0x8A93, 0x8ACB, 0x901D, 0x9192, 0x9752, 0x9759, 0x6589, 0x7A0E,
511+ 0x8106, 0x96BB, 0x5E2D, 0x60DC, 0x621A, 0x65A5, 0x6614, 0x6790,
512+ 0x77F3, 0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, 0x8D64, 0x8DE1,
513+ 0x8E5F, 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D,
514+ 0x7A83, 0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9,
515+ 0x5148, 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226,
516+ 0x6247, 0x64B0, 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3,
517+ 0x6F5C, 0x714E, 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA,
518+};
519+static const unsigned short euc_to_utf8_C1[] = {
520+ 0x7E4A, 0x7FA8, 0x817A, 0x821B, 0x8239, 0x85A6, 0x8A6E,
521+ 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, 0x9583, 0x9BAE,
522+ 0x524D, 0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55, 0x81B3,
523+ 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A,
524+ 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20,
525+ 0x7D44, 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275,
526+ 0x53CC, 0x53E2, 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B,
527+ 0x5C64, 0x531D, 0x60E3, 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB,
528+ 0x64CD, 0x65E9, 0x66F9, 0x5DE3, 0x69CD, 0x69FD, 0x6F15, 0x71E5,
529+ 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF, 0x7DCF, 0x7D9C, 0x8061,
530+ 0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5, 0x8D70, 0x9001,
531+ 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E,
532+};
533+static const unsigned short euc_to_utf8_C2[] = {
534+ 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247,
535+ 0x5373, 0x606F, 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7,
536+ 0x5C5E, 0x8CCA, 0x65CF, 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3,
537+ 0x5B58, 0x5B6B, 0x5C0A, 0x640D, 0x6751, 0x905C, 0x4ED6, 0x591A,
538+ 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815, 0x59A5, 0x60F0, 0x6253,
539+ 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, 0x4F53, 0x5806,
540+ 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, 0x6234,
541+ 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8,
542+ 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927,
543+ 0x7B2C, 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544,
544+ 0x5B85, 0x6258, 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17,
545+ 0x9438, 0x6FC1, 0x8AFE, 0x8338, 0x51E7, 0x86F8, 0x53EA,
546+};
547+static const unsigned short euc_to_utf8_C3[] = {
548+ 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD,
549+ 0x7AEA, 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0,
550+ 0x4E39, 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E,
551+ 0x6DE1, 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D,
552+ 0x80C6, 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD,
553+ 0x6696, 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730,
554+ 0x5F1B, 0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4,
555+ 0x8718, 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4,
556+ 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2,
557+ 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877,
558+ 0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7,
559+ 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5,
560+};
561+static const unsigned short euc_to_utf8_C4[] = {
562+ 0x5E16, 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4,
563+ 0x61F2, 0x6311, 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A,
564+ 0x8074, 0x8139, 0x8178, 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3,
565+ 0x929A, 0x9577, 0x9802, 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715,
566+ 0x6C88, 0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E,
567+ 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4,
568+ 0x69FB, 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354,
569+ 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A,
570+ 0x91E3, 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E,
571+ 0x5448, 0x5824, 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F,
572+ 0x608C, 0x62B5, 0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E,
573+ 0x7A0B, 0x7DE0, 0x8247, 0x8A02, 0x8AE6, 0x8E44, 0x9013,
574+};
575+static const unsigned short euc_to_utf8_C5[] = {
576+ 0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, 0x64E2,
577+ 0x6575, 0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2,
578+ 0x5FB9, 0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929,
579+ 0x5C55, 0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B,
580+ 0x70B9, 0x4F1D, 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410,
581+ 0x5835, 0x5857, 0x59AC, 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21,
582+ 0x767B, 0x83DF, 0x8CED, 0x9014, 0x90FD, 0x934D, 0x7825, 0x783A,
583+ 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012, 0x5012, 0x515A, 0x51AC,
584+ 0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6,
585+ 0x5D8B, 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF,
586+ 0x76D7, 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8,
587+ 0x7977, 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230,
588+};
589+static const unsigned short euc_to_utf8_C6[] = {
590+ 0x8463, 0x8569, 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F,
591+ 0x9003, 0x900F, 0x9419, 0x9676, 0x982D, 0x9A30, 0x95D8, 0x50CD,
592+ 0x52D5, 0x540C, 0x5802, 0x5C0E, 0x61A7, 0x649E, 0x6D1E, 0x77B3,
593+ 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, 0x9D07, 0x533F,
594+ 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, 0x6BD2,
595+ 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A,
596+ 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7,
597+ 0x6566, 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D,
598+ 0x5948, 0x90A3, 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058,
599+ 0x637A, 0x934B, 0x6962, 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960,
600+ 0x8EDF, 0x96E3, 0x6C5D, 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, 0x5302,
601+ 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5, 0x4E73, 0x5165,
602+};
603+static const unsigned short euc_to_utf8_C7[] = {
604+ 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D,
605+ 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74,
606+ 0x5FF5, 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B,
607+ 0x57DC, 0x56A2, 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF,
608+ 0x8FB2, 0x8997, 0x86A4, 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777,
609+ 0x6CE2, 0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75, 0x82AD, 0x99AC,
610+ 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3, 0x724C,
611+ 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, 0x6885,
612+ 0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, 0x9019,
613+ 0x877F, 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD,
614+ 0x67CF, 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB,
615+ 0x66DD, 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6,
616+};
617+static const unsigned short euc_to_utf8_C8[] = {
618+ 0x51FD, 0x7BB1, 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8,
619+ 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A,
620+ 0x9197, 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9,
621+ 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, 0x53CD,
622+ 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248,
623+ 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4,
624+ 0x91C6, 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4,
625+ 0x78D0, 0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87,
626+ 0x5F7C, 0x60B2, 0x6249, 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC,
627+ 0x75B2, 0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB,
628+ 0x8AB9, 0x8CBB, 0x907F, 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099,
629+ 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, 0x7F8E,
630+};
631+static const unsigned short euc_to_utf8_C9[] = {
632+ 0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66,
633+ 0x819D, 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C,
634+ 0x6867, 0x59EB, 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A,
635+ 0x6A19, 0x6C37, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79,
636+ 0x5EDF, 0x63CF, 0x75C5, 0x79D2, 0x82D7, 0x9328, 0x92F2, 0x849C,
637+ 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, 0x6D5C, 0x7015, 0x8CA7,
638+ 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0, 0x592B,
639+ 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577,
640+ 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299,
641+ 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB,
642+ 0x6B66, 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8,
643+ 0x847A, 0x8557, 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D,
644+};
645+static const unsigned short euc_to_utf8_CA[] = {
646+ 0x798F, 0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255,
647+ 0x6CB8, 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3,
648+ 0x61A4, 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0,
649+ 0x6587, 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73,
650+ 0x5F0A, 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801,
651+ 0x50FB, 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86,
652+ 0x504F, 0x5909, 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D,
653+ 0x4FBF, 0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA,
654+ 0x5703, 0x6355, 0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF,
655+ 0x5893, 0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023,
656+ 0x4FF8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF,
657+ 0x5D29, 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B,
658+};
659+static const unsigned short euc_to_utf8_CB[] = {
660+ 0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3,
661+ 0x840C, 0x84EC, 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2,
662+ 0x98FD, 0x9CF3, 0x9D6C, 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A,
663+ 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x66B4, 0x671B, 0x67D0,
664+ 0x68D2, 0x5192, 0x7D21, 0x80AA, 0x81A8, 0x8B00, 0x8C8C, 0x8CBF,
665+ 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, 0x535C, 0x58A8,
666+ 0x64B2, 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, 0x6CA1,
667+ 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6,
668+ 0x6469, 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A,
669+ 0x6BCE, 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE,
670+ 0x9C52, 0x685D, 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB,
671+ 0x8FC4, 0x4FAD, 0x7E6D, 0x9EBF, 0x4E07, 0x6162, 0x6E80,
672+};
673+static const unsigned short euc_to_utf8_CC[] = {
674+ 0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, 0x5DF3, 0x7B95,
675+ 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, 0x5999,
676+ 0x7C8D, 0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB,
677+ 0x9727, 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D,
678+ 0x660E, 0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5,
679+ 0x514D, 0x68C9, 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21,
680+ 0x8302, 0x5984, 0x5B5F, 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017,
681+ 0x8499, 0x5132, 0x6728, 0x9ED9, 0x76EE, 0x6762, 0x52FF, 0x9905,
682+ 0x5C24, 0x623B, 0x7C7E, 0x8CB0, 0x554F, 0x60B6, 0x7D0B, 0x9580,
683+ 0x5301, 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, 0x91CE, 0x5F25,
684+ 0x77E2, 0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, 0x9756,
685+ 0x67F3, 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652,
686+};
687+static const unsigned short euc_to_utf8_CD[] = {
688+ 0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB,
689+ 0x5BA5, 0x5E7D, 0x60A0, 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67,
690+ 0x6D8C, 0x7336, 0x7337, 0x7531, 0x7950, 0x88D5, 0x8A98, 0x904A,
691+ 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, 0x4E88, 0x4F59, 0x4E0E,
692+ 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, 0x5BB9, 0x5EB8,
693+ 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, 0x6EB6,
694+ 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981,
695+ 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32,
696+ 0x6C83, 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8,
697+ 0x6765, 0x83B1, 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A,
698+ 0x4E71, 0x5375, 0x5D50, 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7,
699+ 0x5229, 0x540F, 0x5C65, 0x674E, 0x68A8, 0x7406, 0x7483,
700+};
701+static const unsigned short euc_to_utf8_CE[] = {
702+ 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, 0x5F8B,
703+ 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C,
704+ 0x7409, 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6,
705+ 0x616E, 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC,
706+ 0x5BEE, 0x6599, 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C,
707+ 0x7CE7, 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B,
708+ 0x7DD1, 0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, 0x81E8,
709+ 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, 0x7D2F,
710+ 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, 0x601C,
711+ 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, 0x9E97,
712+ 0x9F62, 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9,
713+ 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F,
714+};
715+static const unsigned short euc_to_utf8_CF[] = {
716+ 0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089,
717+ 0x8CC2, 0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717,
718+ 0x697C, 0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001,
719+ 0x807E, 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332,
720+ 0x8AD6, 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1,
721+ 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568,
722+ 0x6900, 0x6E7E, 0x7897, 0x8155, 0, 0, 0, 0,
723+ 0, 0, 0, 0, 0, 0, 0, 0,
724+ 0, 0, 0, 0, 0, 0, 0, 0,
725+ 0, 0, 0, 0, 0, 0, 0, 0,
726+ 0, 0, 0, 0, 0, 0, 0, 0,
727+ 0, 0, 0, 0, 0, 0, 0,
728+};
729+static const unsigned short euc_to_utf8_D0[] = {
730+ 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C,
731+ 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A,
732+ 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0,
733+ 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7,
734+ 0x4EDE, 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B,
735+ 0x4F5D, 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B,
736+ 0x4F69, 0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4,
737+ 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4,
738+ 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, 0x5025, 0x5005, 0x4F1C,
739+ 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, 0x5011, 0x5006,
740+ 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, 0x5056,
741+ 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2,
742+};
743+static const unsigned short euc_to_utf8_D1[] = {
744+ 0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5,
745+ 0x50ED, 0x50E3, 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102,
746+ 0x5116, 0x5115, 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C,
747+ 0x513B, 0x513F, 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8,
748+ 0x5169, 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189,
749+ 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2,
750+ 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5,
751+ 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED,
752+ 0x51F0, 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227,
753+ 0x522A, 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C,
754+ 0x525E, 0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D,
755+ 0x528D, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8,
756+};
757+static const unsigned short euc_to_utf8_D2[] = {
758+ 0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD,
759+ 0x52D7, 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5,
760+ 0x52F8, 0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F,
761+ 0x5315, 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340,
762+ 0x5346, 0x5345, 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369,
763+ 0x536E, 0x5918, 0x537B, 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6,
764+ 0x53A5, 0x53AE, 0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF,
765+ 0x66FC, 0x71EE, 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D,
766+ 0x5440, 0x542C, 0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D,
767+ 0x544E, 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470,
768+ 0x5492, 0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7,
769+ 0x54A2, 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8,
770+};
771+static const unsigned short euc_to_utf8_D3[] = {
772+ 0x54AB, 0x54C2, 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5,
773+ 0x54E6, 0x550F, 0x5514, 0x54FD, 0x54EE, 0x54ED, 0x54FA, 0x54E2,
774+ 0x5539, 0x5540, 0x5563, 0x554C, 0x552E, 0x555C, 0x5545, 0x5556,
775+ 0x5557, 0x5538, 0x5533, 0x555D, 0x5599, 0x5580, 0x54AF, 0x558A,
776+ 0x559F, 0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C, 0x5583,
777+ 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC,
778+ 0x55E4, 0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B,
779+ 0x55F9, 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638,
780+ 0x566B, 0x5664, 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A,
781+ 0x56A0, 0x5694, 0x568F, 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2,
782+ 0x56BC, 0x56C1, 0x56C3, 0x56C0, 0x56C8, 0x56CE, 0x56D1, 0x56D3,
783+ 0x56D7, 0x56EE, 0x56F9, 0x5700, 0x56FF, 0x5704, 0x5709,
784+};
785+static const unsigned short euc_to_utf8_D4[] = {
786+ 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7,
787+ 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F,
788+ 0x5769, 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0,
789+ 0x57B3, 0x57A4, 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2,
790+ 0x57D3, 0x580A, 0x57D6, 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872,
791+ 0x5821, 0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852, 0x583D, 0x5879,
792+ 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA, 0x58DE, 0x58BB, 0x58B8,
793+ 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, 0x58D8, 0x58E5,
794+ 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, 0x58FC,
795+ 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C,
796+ 0x592D, 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E,
797+ 0x595A, 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969,
798+};
799+static const unsigned short euc_to_utf8_D5[] = {
800+ 0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2,
801+ 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F,
802+ 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35,
803+ 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2,
804+ 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB,
805+ 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E,
806+ 0x5B43, 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65,
807+ 0x5B69, 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80,
808+ 0x5B83, 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0,
809+ 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6,
810+ 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, 0x5C22,
811+ 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, 0x5C53,
812+};
813+static const unsigned short euc_to_utf8_D6[] = {
814+ 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76,
815+ 0x5C79, 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6,
816+ 0x5CBC, 0x5CB7, 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD,
817+ 0x5CFA, 0x5CED, 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C,
818+ 0x5D1F, 0x5D1B, 0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, 0x5D18,
819+ 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, 0x5D87,
820+ 0x5D84, 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, 0x5D90,
821+ 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB,
822+ 0x5DEB, 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B,
823+ 0x5E36, 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54,
824+ 0x5E5F, 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC,
825+ 0x5E7F, 0x5EA0, 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF,
826+};
827+static const unsigned short euc_to_utf8_D7[] = {
828+ 0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1,
829+ 0x5EE8, 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8,
830+ 0x5EFE, 0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16,
831+ 0x5F29, 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F,
832+ 0x5F51, 0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77,
833+ 0x5F83, 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E,
834+ 0x5F99, 0x5F98, 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB,
835+ 0x5FE4, 0x5FF8, 0x5FF1, 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060,
836+ 0x6019, 0x6010, 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B,
837+ 0x6026, 0x600F, 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F,
838+ 0x604A, 0x6046, 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C,
839+ 0x606B, 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A,
840+};
841+static const unsigned short euc_to_utf8_D8[] = {
842+ 0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B,
843+ 0x60E1, 0x60B8, 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6,
844+ 0x60B5, 0x60D8, 0x614D, 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100,
845+ 0x60F4, 0x60FA, 0x6103, 0x6121, 0x60FB, 0x60F1, 0x610D, 0x610E,
846+ 0x6147, 0x613E, 0x6128, 0x6127, 0x614A, 0x613F, 0x613C, 0x612C,
847+ 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159,
848+ 0x615A, 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F, 0x615D,
849+ 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A,
850+ 0x618A, 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7,
851+ 0x61C8, 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6,
852+ 0x61E3, 0x61F6, 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE,
853+ 0x6200, 0x6208, 0x6209, 0x620D, 0x620C, 0x6214, 0x621B,
854+};
855+static const unsigned short euc_to_utf8_D9[] = {
856+ 0x621E, 0x6221, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233,
857+ 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, 0x627C,
858+ 0x6282, 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283,
859+ 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4,
860+ 0x62C8, 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9,
861+ 0x630C, 0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5,
862+ 0x6350, 0x633E, 0x634D, 0x641C, 0x634F, 0x6396, 0x638E, 0x6380,
863+ 0x63AB, 0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, 0x63B5, 0x636B,
864+ 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2,
865+ 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436,
866+ 0x651D, 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, 0x644E,
867+ 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC,
868+};
869+static const unsigned short euc_to_utf8_DA[] = {
870+ 0x64DA, 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2,
871+ 0x64F1, 0x64E7, 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF,
872+ 0x652C, 0x64F6, 0x64F4, 0x64F2, 0x64FA, 0x6500, 0x64FD, 0x6518,
873+ 0x651C, 0x6505, 0x6524, 0x6523, 0x652B, 0x6534, 0x6535, 0x6537,
874+ 0x6536, 0x6538, 0x754B, 0x6548, 0x6556, 0x6555, 0x654D, 0x6558,
875+ 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, 0x659B,
876+ 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC,
877+ 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A,
878+ 0x6603, 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F,
879+ 0x6644, 0x6649, 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668,
880+ 0x665F, 0x6662, 0x6670, 0x6683, 0x6688, 0x668E, 0x6689, 0x6684,
881+ 0x6698, 0x669D, 0x66C1, 0x66B9, 0x66C9, 0x66BE, 0x66BC,
882+};
883+static const unsigned short euc_to_utf8_DB[] = {
884+ 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, 0x66E6,
885+ 0x66E9, 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726,
886+ 0x6727, 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737,
887+ 0x6746, 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770,
888+ 0x67A9, 0x677C, 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785,
889+ 0x67B7, 0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4,
890+ 0x67DE, 0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6, 0x67E7,
891+ 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, 0x684E,
892+ 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, 0x689F, 0x688F,
893+ 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, 0x6874,
894+ 0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA,
895+ 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD,
896+};
897+static const unsigned short euc_to_utf8_DC[] = {
898+ 0x68D4, 0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7,
899+ 0x68E3, 0x6925, 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A,
900+ 0x6923, 0x6921, 0x68C6, 0x6979, 0x6977, 0x695C, 0x6978, 0x696B,
901+ 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, 0x6959, 0x6930,
902+ 0x6961, 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, 0x69D0,
903+ 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD,
904+ 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995,
905+ 0x69B4, 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9,
906+ 0x69F2, 0x69E7, 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB,
907+ 0x6A0A, 0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72,
908+ 0x6A36, 0x6A78, 0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38,
909+ 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3,
910+};
911+static const unsigned short euc_to_utf8_DD[] = {
912+ 0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3,
913+ 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB,
914+ 0x6B05, 0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38,
915+ 0x6B37, 0x76DC, 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50,
916+ 0x6B59, 0x6B54, 0x6B5B, 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F,
917+ 0x6B80, 0x6B84, 0x6B83, 0x6B8D, 0x6B98, 0x6B95, 0x6B9E, 0x6BA4,
918+ 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC,
919+ 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF,
920+ 0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E,
921+ 0x6C55, 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B,
922+ 0x6C7E, 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3,
923+ 0x6CBD, 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE,
924+};
925+static const unsigned short euc_to_utf8_DE[] = {
926+ 0x6CBA, 0x6CDB, 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D,
927+ 0x6D36, 0x6D2B, 0x6D3D, 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12,
928+ 0x6D0C, 0x6D63, 0x6D93, 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E,
929+ 0x6D95, 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7,
930+ 0x6DE6, 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2,
931+ 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D,
932+ 0x6E6E, 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B,
933+ 0x6E2B, 0x6E76, 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24,
934+ 0x6EFF, 0x6E1D, 0x6E38, 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7,
935+ 0x6ED3, 0x6EBD, 0x6EAF, 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F,
936+ 0x6EA5, 0x6EC2, 0x6E9F, 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8,
937+ 0x6EFE, 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, 0x6ECC,
938+};
939+static const unsigned short euc_to_utf8_DF[] = {
940+ 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81,
941+ 0x6F80, 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58,
942+ 0x6F8E, 0x6F91, 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4,
943+ 0x6FB9, 0x6FC6, 0x6FAA, 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8,
944+ 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, 0x700B, 0x6FFA, 0x7011, 0x7001,
945+ 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, 0x701D, 0x7018, 0x701F,
946+ 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70AF,
947+ 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, 0x70DD,
948+ 0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188,
949+ 0x7166, 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184,
950+ 0x7195, 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9,
951+ 0x71D4, 0x71CE, 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC,
952+};
953+static const unsigned short euc_to_utf8_E0[] = {
954+ 0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, 0x7228, 0x722D,
955+ 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, 0x7240, 0x7246,
956+ 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287, 0x7292,
957+ 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4,
958+ 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F,
959+ 0x7317, 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329,
960+ 0x7325, 0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368,
961+ 0x7370, 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE,
962+ 0x73BB, 0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, 0x7405, 0x746F,
963+ 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, 0x745F, 0x7459,
964+ 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, 0x7476, 0x747E,
965+ 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1,
966+};
967+static const unsigned short euc_to_utf8_E1[] = {
968+ 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0,
969+ 0x74F1, 0x74F8, 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E,
970+ 0x750D, 0x7515, 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544,
971+ 0x754D, 0x754A, 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564,
972+ 0x7567, 0x756B, 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574,
973+ 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3,
974+ 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1,
975+ 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF,
976+ 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D,
977+ 0x7609, 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634,
978+ 0x7630, 0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661,
979+ 0x7662, 0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670,
980+};
981+static const unsigned short euc_to_utf8_E2[] = {
982+ 0x7672, 0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688,
983+ 0x768B, 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4,
984+ 0x76B8, 0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE,
985+ 0x76E1, 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707,
986+ 0x7704, 0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737,
987+ 0x7738, 0x7747, 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F,
988+ 0x777E, 0x7779, 0x778E, 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0,
989+ 0x77B6, 0x77B9, 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD,
990+ 0x77D7, 0x77DA, 0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812,
991+ 0x7926, 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C,
992+ 0x789A, 0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6,
993+ 0x78CB, 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC,
994+};
995+static const unsigned short euc_to_utf8_E3[] = {
996+ 0x78E7, 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911,
997+ 0x7919, 0x792C, 0x792B, 0x7940, 0x7960, 0x7957, 0x795F, 0x795A,
998+ 0x7955, 0x7953, 0x797A, 0x797F, 0x798A, 0x799D, 0x79A7, 0x9F4B,
999+ 0x79AA, 0x79AE, 0x79B3, 0x79B9, 0x79BA, 0x79C9, 0x79D5, 0x79E7,
1000+ 0x79EC, 0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18, 0x7A19, 0x7A20,
1001+ 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, 0x7A57,
1002+ 0x7A49, 0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D,
1003+ 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0,
1004+ 0x7AB6, 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD,
1005+ 0x7ACF, 0x7AD5, 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2,
1006+ 0x7AE6, 0x7AED, 0x7AF0, 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33,
1007+ 0x7B18, 0x7B19, 0x7B1E, 0x7B35, 0x7B28, 0x7B36, 0x7B50,
1008+};
1009+static const unsigned short euc_to_utf8_E4[] = {
1010+ 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, 0x7B75,
1011+ 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D,
1012+ 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F,
1013+ 0x7B5D, 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6,
1014+ 0x7BDD, 0x7BE9, 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00,
1015+ 0x7C07, 0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23,
1016+ 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43,
1017+ 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, 0x7C64, 0x7C56,
1018+ 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, 0x7CAD, 0x7CA2,
1019+ 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, 0x7CB9,
1020+ 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2,
1021+ 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06,
1022+};
1023+static const unsigned short euc_to_utf8_E5[] = {
1024+ 0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E,
1025+ 0x7D32, 0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72,
1026+ 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F,
1027+ 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD,
1028+ 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, 0x7DB0,
1029+ 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05,
1030+ 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B,
1031+ 0x7E22, 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37,
1032+ 0x7E32, 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A,
1033+ 0x7E79, 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D,
1034+ 0x8FAE, 0x7E7F, 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, 0x7E93,
1035+ 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A,
1036+};
1037+static const unsigned short euc_to_utf8_E6[] = {
1038+ 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55,
1039+ 0x7F54, 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78,
1040+ 0x7F82, 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E,
1041+ 0x7F9D, 0x7F9A, 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6,
1042+ 0x7FB8, 0x8B71, 0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1,
1043+ 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, 0x800B,
1044+ 0x8012, 0x8018, 0x8019, 0x801C, 0x8021, 0x8028, 0x803F, 0x803B,
1045+ 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068,
1046+ 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084,
1047+ 0x8086, 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC,
1048+ 0x80DB, 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109,
1049+ 0x80EF, 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B,
1050+};
1051+static const unsigned short euc_to_utf8_E7[] = {
1052+ 0x968B, 0x8146, 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171,
1053+ 0x816E, 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818A, 0x8180,
1054+ 0x8182, 0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9,
1055+ 0x81B0, 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, 0x81BA,
1056+ 0x81C9, 0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF,
1057+ 0x81E0, 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205,
1058+ 0x8207, 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238,
1059+ 0x8233, 0x8240, 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264,
1060+ 0x8262, 0x8268, 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278,
1061+ 0x827E, 0x828D, 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1,
1062+ 0x82E3, 0x82DF, 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303,
1063+ 0x82FB, 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, 0x82D9,
1064+};
1065+static const unsigned short euc_to_utf8_E8[] = {
1066+ 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339,
1067+ 0x8350, 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A,
1068+ 0x83AA, 0x839F, 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A,
1069+ 0x837C, 0x83B5, 0x8373, 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4,
1070+ 0x8413, 0x83EB, 0x83CE, 0x83FD, 0x8403, 0x83D8, 0x840B, 0x83C1,
1071+ 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D, 0x8422, 0x8420, 0x83BD,
1072+ 0x8438, 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, 0x855A, 0x8484,
1073+ 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, 0x842C,
1074+ 0x846F, 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F,
1075+ 0x84D9, 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6,
1076+ 0x84A1, 0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F,
1077+ 0x8515, 0x8514, 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548,
1078+};
1079+static const unsigned short euc_to_utf8_E9[] = {
1080+ 0x8541, 0x8602, 0x854B, 0x8555, 0x8580, 0x85A4, 0x8588,
1081+ 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, 0x85EA, 0x8587,
1082+ 0x859C, 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, 0x85B9,
1083+ 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613,
1084+ 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F,
1085+ 0x864D, 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3,
1086+ 0x86A9, 0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6,
1087+ 0x86B0, 0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC,
1088+ 0x86DF, 0x86DB, 0x86EF, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703,
1089+ 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F,
1090+ 0x8737, 0x873B, 0x8725, 0x8729, 0x871A, 0x8760, 0x875F, 0x8778,
1091+ 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759,
1092+};
1093+static const unsigned short euc_to_utf8_EA[] = {
1094+ 0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782,
1095+ 0x87AF, 0x87CB, 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4,
1096+ 0x87B3, 0x87C7, 0x87C6, 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F,
1097+ 0x880D, 0x87FE, 0x87F6, 0x87F7, 0x880E, 0x87D2, 0x8811, 0x8816,
1098+ 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883B,
1099+ 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862, 0x886B, 0x8881,
1100+ 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, 0x8897,
1101+ 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF,
1102+ 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9,
1103+ 0x8902, 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A,
1104+ 0x8913, 0x8943, 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944,
1105+ 0x893B, 0x8936, 0x8938, 0x894C, 0x891D, 0x8960, 0x895E,
1106+};
1107+static const unsigned short euc_to_utf8_EB[] = {
1108+ 0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, 0x8977,
1109+ 0x897E, 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, 0x89A9,
1110+ 0x89A6, 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0,
1111+ 0x89DA, 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16,
1112+ 0x8A10, 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B,
1113+ 0x8A52, 0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85,
1114+ 0x8A82, 0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A,
1115+ 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7,
1116+ 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB,
1117+ 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, 0x8B17, 0x8B20,
1118+ 0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, 0x8B4C,
1119+ 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B,
1120+};
1121+static const unsigned short euc_to_utf8_EC[] = {
1122+ 0x8B5F, 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C,
1123+ 0x8B8E, 0x8B92, 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41,
1124+ 0x8C3F, 0x8C48, 0x8C4C, 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C,
1125+ 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E,
1126+ 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, 0x8CBD, 0x8CB2,
1127+ 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, 0x8CDA,
1128+ 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F,
1129+ 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67,
1130+ 0x8D6D, 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA,
1131+ 0x8DCF, 0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB,
1132+ 0x8DDF, 0x8DE3, 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E,
1133+ 0x8E10, 0x8E1F, 0x8E42, 0x8E35, 0x8E30, 0x8E34, 0x8E4A,
1134+};
1135+static const unsigned short euc_to_utf8_ED[] = {
1136+ 0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64,
1137+ 0x8E60, 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81,
1138+ 0x8E87, 0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94,
1139+ 0x8E99, 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE,
1140+ 0x8EC5, 0x8EC8, 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB,
1141+ 0x8EFE, 0x8F0A, 0x8F05, 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C,
1142+ 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39, 0x8F45,
1143+ 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C,
1144+ 0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF,
1145+ 0x8FB7, 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4,
1146+ 0x9005, 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E,
1147+ 0x9016, 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8,
1148+};
1149+static const unsigned short euc_to_utf8_EE[] = {
1150+ 0x904F, 0x9050, 0x9051, 0x9052, 0x900E, 0x9049, 0x903E,
1151+ 0x9056, 0x9058, 0x905E, 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072,
1152+ 0x9082, 0x907D, 0x9081, 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8,
1153+ 0x90AF, 0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248, 0x90DB, 0x9102,
1154+ 0x9112, 0x9119, 0x9132, 0x9130, 0x914A, 0x9156, 0x9158, 0x9163,
1155+ 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2,
1156+ 0x91AB, 0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1,
1157+ 0x91C9, 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC,
1158+ 0x91F5, 0x91F6, 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211,
1159+ 0x925E, 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923F,
1160+ 0x924B, 0x9250, 0x929C, 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF,
1161+ 0x92B9, 0x92B7, 0x92E9, 0x930F, 0x92FA, 0x9344, 0x932E,
1162+};
1163+static const unsigned short euc_to_utf8_EF[] = {
1164+ 0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B,
1165+ 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD,
1166+ 0x9394, 0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3,
1167+ 0x93DD, 0x93D0, 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403,
1168+ 0x9407, 0x9410, 0x9436, 0x942B, 0x9435, 0x9421, 0x943A, 0x9441,
1169+ 0x9452, 0x9444, 0x945B, 0x9460, 0x9462, 0x945E, 0x946A, 0x9229,
1170+ 0x9470, 0x9475, 0x9477, 0x947D, 0x945A, 0x947C, 0x947E, 0x9481,
1171+ 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, 0x9598, 0x9599,
1172+ 0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, 0x95BE,
1173+ 0x95CA, 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6,
1174+ 0x95DC, 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F,
1175+ 0x9642, 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E,
1176+};
1177+static const unsigned short euc_to_utf8_F0[] = {
1178+ 0x965D, 0x965F, 0x9666, 0x9672, 0x966C, 0x968D, 0x9698,
1179+ 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, 0x96B0, 0x96B4,
1180+ 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, 0x96CD, 0x894D,
1181+ 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, 0x9713,
1182+ 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730,
1183+ 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749,
1184+ 0x975C, 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771,
1185+ 0x9779, 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F,
1186+ 0x9790, 0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3,
1187+ 0x97C6, 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, 0x97F2, 0x7ADF,
1188+ 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838, 0x9824, 0x9821, 0x9837,
1189+ 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, 0x9870,
1190+};
1191+static const unsigned short euc_to_utf8_F1[] = {
1192+ 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6,
1193+ 0x98C4, 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912,
1194+ 0x9914, 0x9918, 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C,
1195+ 0x992E, 0x993D, 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B,
1196+ 0x9951, 0x9952, 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD,
1197+ 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED,
1198+ 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05,
1199+ 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43,
1200+ 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65,
1201+ 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0,
1202+ 0x9ACF, 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3,
1203+ 0x9AE6, 0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7,
1204+};
1205+static const unsigned short euc_to_utf8_F2[] = {
1206+ 0x9AFB, 0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23,
1207+ 0x9B25, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32,
1208+ 0x9B44, 0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74,
1209+ 0x9B93, 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8,
1210+ 0x9BB4, 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2,
1211+ 0x9BE3, 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1,
1212+ 0x9BF0, 0x9C15, 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08,
1213+ 0x9C12, 0x9C0A, 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21,
1214+ 0x9C30, 0x9C47, 0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67,
1215+ 0x9C76, 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB,
1216+ 0x9D03, 0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44,
1217+ 0x9D15, 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48,
1218+};
1219+static const unsigned short euc_to_utf8_F3[] = {
1220+ 0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72,
1221+ 0x9D89, 0x9D87, 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9,
1222+ 0x9DB2, 0x9DC4, 0x9DC1, 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF,
1223+ 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8, 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD,
1224+ 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79, 0x9E7D, 0x9E81, 0x9E88,
1225+ 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D, 0x9EA5, 0x9EA9,
1226+ 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, 0x9ED0,
1227+ 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF,
1228+ 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07,
1229+ 0x9F08, 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52,
1230+ 0x9F54, 0x9F63, 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C,
1231+ 0x9F6A, 0x9F77, 0x9F72, 0x9F76, 0x9F95, 0x9F9C, 0x9FA0,
1232+};
1233+static const unsigned short euc_to_utf8_F4[] = {
1234+ 0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, 0x7199, 0,
1235+ 0, 0, 0, 0, 0, 0, 0, 0,
1236+ 0, 0, 0, 0, 0, 0, 0, 0,
1237+ 0, 0, 0, 0, 0, 0, 0, 0,
1238+ 0, 0, 0, 0, 0, 0, 0, 0,
1239+ 0, 0, 0, 0, 0, 0, 0, 0,
1240+ 0, 0, 0, 0, 0, 0, 0, 0,
1241+ 0, 0, 0, 0, 0, 0, 0, 0,
1242+ 0, 0, 0, 0, 0, 0, 0, 0,
1243+ 0, 0, 0, 0, 0, 0, 0, 0,
1244+ 0, 0, 0, 0, 0, 0, 0, 0,
1245+ 0, 0, 0, 0, 0, 0, 0,
1246+};
1247+static const unsigned short euc_to_utf8_F5[] = {
1248+ 0, 0, 0, 0, 0, 0, 0,
1249+ 0, 0, 0, 0, 0, 0, 0, 0,
1250+ 0, 0, 0xFE33, 0, 0, 0, 0, 0,
1251+ 0, 0, 0, 0, 0, 0xFE31, 0, 0,
1252+ 0, 0, 0, 0, 0, 0xFE30, 0, 0,
1253+ 0, 0, 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0, 0,
1254+ 0xFE37, 0xFE38, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, 0xFE41, 0xFE42,
1255+ 0xFE43, 0xFE44, 0xFE3B, 0xFE3C, 0, 0, 0, 0,
1256+ 0, 0, 0, 0, 0, 0, 0, 0,
1257+ 0, 0, 0, 0, 0, 0, 0, 0,
1258+ 0, 0, 0, 0, 0, 0, 0, 0,
1259+ 0, 0, 0, 0, 0, 0, 0,
1260+};
1261+static const unsigned short euc_to_utf8_F9[] = {
1262+ 0x7E8A, 0x891C, 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB,
1263+ 0x6631, 0x68C8, 0x92F9, 0x66FB, 0x5F45, 0x4E28, 0x4EE1, 0x4EFC,
1264+ 0x4F00, 0x4F03, 0x4F39, 0x4F56, 0x4F92, 0x4F8A, 0x4F9A, 0x4F94,
1265+ 0x4FCD, 0x5040, 0x5022, 0x4FFF, 0x501E, 0x5046, 0x5070, 0x5042,
1266+ 0x5094, 0x50F4, 0x50D8, 0x514A, 0x5164, 0x519D, 0x51BE, 0x51EC,
1267+ 0x5215, 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324,
1268+ 0x5372, 0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9,
1269+ 0x54FF, 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F,
1270+ 0xFA10, 0x589E, 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, 0x5963,
1271+ 0x59A4, 0x59BA, 0x5B56, 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, 0x5C1E,
1272+ 0x5CA6, 0x5CBA, 0x5CF5, 0x5D27, 0x5D53, 0xFA11, 0x5D42, 0x5D6D,
1273+ 0x5DB8, 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, 0x5F67, 0x5FB7,
1274+};
1275+static const unsigned short euc_to_utf8_FA[] = {
1276+ 0x5FDE, 0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120,
1277+ 0x60F2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5,
1278+ 0x6460, 0x649D, 0x64CE, 0x654E, 0x6600, 0x6615, 0x663B, 0x6609,
1279+ 0x662E, 0x661E, 0x6624, 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673,
1280+ 0x6699, 0x66A0, 0x66B2, 0x66BF, 0x66FA, 0x670E, 0xF929, 0x6766,
1281+ 0x67BB, 0x6852, 0x67C0, 0x6801, 0x6844, 0x68CF, 0xFA13, 0x6968,
1282+ 0xFA14, 0x6998, 0x69E2, 0x6A30, 0x6A6B, 0x6A46, 0x6A73, 0x6A7E,
1283+ 0x6AE2, 0x6AE4, 0x6BD6, 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F, 0x6CDA,
1284+ 0x6D04, 0x6D87, 0x6D6F, 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2,
1285+ 0x6DFC, 0x6E39, 0x6E5C, 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5,
1286+ 0x6FF5, 0x7005, 0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104,
1287+ 0x715C, 0x7146, 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1,
1288+};
1289+static const unsigned short euc_to_utf8_FB[] = {
1290+ 0x72BE, 0x7324, 0xFA16, 0x7377, 0x73BD, 0x73C9, 0x73D6,
1291+ 0x73E3, 0x73D2, 0x7407, 0x73F5, 0x7426, 0x742A, 0x7429, 0x742E,
1292+ 0x7462, 0x7489, 0x749F, 0x7501, 0x756F, 0x7682, 0x769C, 0x769E,
1293+ 0x769B, 0x76A6, 0xFA17, 0x7746, 0x52AF, 0x7821, 0x784E, 0x7864,
1294+ 0x787A, 0x7930, 0xFA18, 0xFA19, 0xFA1A, 0x7994, 0xFA1B, 0x799B,
1295+ 0x7AD1, 0x7AE7, 0xFA1C, 0x7AEB, 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C,
1296+ 0x7DB7, 0x7DA0, 0x7DD6, 0x7E52, 0x7F47, 0x7FA1, 0xFA1E, 0x8301,
1297+ 0x8362, 0x837F, 0x83C7, 0x83F6, 0x8448, 0x84B4, 0x8553, 0x8559,
1298+ 0x856B, 0xFA1F, 0x85B0, 0xFA20, 0xFA21, 0x8807, 0x88F5, 0x8A12,
1299+ 0x8A37, 0x8A79, 0x8AA7, 0x8ABE, 0x8ADF, 0xFA22, 0x8AF6, 0x8B53,
1300+ 0x8B7F, 0x8CF0, 0x8CF4, 0x8D12, 0x8D76, 0xFA23, 0x8ECF, 0xFA24,
1301+ 0xFA25, 0x9067, 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA,
1302+};
1303+static const unsigned short euc_to_utf8_FC[] = {
1304+ 0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206,
1305+ 0x9210, 0x920A, 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251,
1306+ 0x9239, 0x9267, 0x92A7, 0x9277, 0x9278, 0x92E7, 0x92D7, 0x92D9,
1307+ 0x92D0, 0xFA27, 0x92D5, 0x92E0, 0x92D3, 0x9325, 0x9321, 0x92FB,
1308+ 0xFA28, 0x931E, 0x92FF, 0x931D, 0x9302, 0x9370, 0x9357, 0x93A4,
1309+ 0x93C6, 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448, 0x9592, 0xF9DC,
1310+ 0xFA29, 0x969D, 0x96AF, 0x9733, 0x973B, 0x9743, 0x974D, 0x974F,
1311+ 0x9751, 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, 0x9927, 0xFA2C,
1312+ 0x999E, 0x9A4E, 0x9AD9, 0x9ADC, 0x9B75, 0x9B72, 0x9B8F, 0x9BB1,
1313+ 0x9BBB, 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, 0x9ED1, 0,
1314+ 0, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
1315+ 0x2177, 0x2178, 0x2179, 0xFFE2, 0x00A6, 0xFF07, 0xFF02,
1316+};
1317+
1318+/* Microsoft UCS Mapping Compatible */
1319+static const unsigned short euc_to_utf8_FC_ms[] = {
1320+ 0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206,
1321+ 0x9210, 0x920A, 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251,
1322+ 0x9239, 0x9267, 0x92A7, 0x9277, 0x9278, 0x92E7, 0x92D7, 0x92D9,
1323+ 0x92D0, 0xFA27, 0x92D5, 0x92E0, 0x92D3, 0x9325, 0x9321, 0x92FB,
1324+ 0xFA28, 0x931E, 0x92FF, 0x931D, 0x9302, 0x9370, 0x9357, 0x93A4,
1325+ 0x93C6, 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448, 0x9592, 0xF9DC,
1326+ 0xFA29, 0x969D, 0x96AF, 0x9733, 0x973B, 0x9743, 0x974D, 0x974F,
1327+ 0x9751, 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, 0x9927, 0xFA2C,
1328+ 0x999E, 0x9A4E, 0x9AD9, 0x9ADC, 0x9B75, 0x9B72, 0x9B8F, 0x9BB1,
1329+ 0x9BBB, 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, 0x9ED1, 0,
1330+ 0, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
1331+ 0x2177, 0x2178, 0x2179, 0xFFE2, 0xFFE4, 0xFF07, 0xFF02,
1332+};
1333+
1334+#ifdef X0212_ENABLE
1335+static const unsigned short euc_to_utf8_8FA2[] = {
1336+ 0, 0, 0, 0, 0, 0, 0,
1337+ 0, 0, 0, 0, 0, 0, 0, 0x02D8,
1338+ 0x02C7, 0x00B8, 0x02D9, 0x02DD, 0x00AF, 0x02DB, 0x02DA, 0xFF5E,
1339+ 0x0384, 0x0385, 0, 0, 0, 0, 0, 0,
1340+ 0, 0, 0x00A1, 0xFFE4, 0x00BF, 0, 0, 0,
1341+ 0, 0, 0, 0, 0, 0, 0, 0,
1342+ 0, 0, 0, 0, 0, 0, 0, 0,
1343+ 0, 0, 0, 0, 0, 0, 0, 0,
1344+ 0, 0, 0, 0, 0, 0, 0, 0,
1345+ 0, 0, 0, 0x00BA, 0x00AA, 0x00A9, 0x00AE, 0x2122,
1346+ 0x00A4, 0x2116, 0, 0, 0, 0, 0, 0,
1347+ 0, 0, 0, 0, 0, 0, 0,
1348+};
1349+static const unsigned short euc_to_utf8_8FA6[] = {
1350+ 0, 0, 0, 0, 0, 0, 0,
1351+ 0, 0, 0, 0, 0, 0, 0, 0,
1352+ 0, 0, 0, 0, 0, 0, 0, 0,
1353+ 0, 0, 0, 0, 0, 0, 0, 0,
1354+ 0, 0, 0, 0, 0, 0, 0, 0,
1355+ 0, 0, 0, 0, 0, 0, 0, 0,
1356+ 0, 0, 0, 0, 0, 0, 0, 0,
1357+ 0, 0, 0, 0, 0, 0, 0, 0,
1358+ 0, 0x0386, 0x0388, 0x0389, 0x038A, 0x03AA, 0, 0x038C,
1359+ 0, 0x038E, 0x03AB, 0, 0x038F, 0, 0, 0,
1360+ 0, 0x03AC, 0x03AD, 0x03AE, 0x03AF, 0x03CA, 0x0390, 0x03CC,
1361+ 0x03C2, 0x03CD, 0x03CB, 0x03B0, 0x03CE, 0, 0,
1362+};
1363+static const unsigned short euc_to_utf8_8FA7[] = {
1364+ 0, 0, 0, 0, 0, 0, 0,
1365+ 0, 0, 0, 0, 0, 0, 0, 0,
1366+ 0, 0, 0, 0, 0, 0, 0, 0,
1367+ 0, 0, 0, 0, 0, 0, 0, 0,
1368+ 0, 0, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
1369+ 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x040E, 0x040F, 0,
1370+ 0, 0, 0, 0, 0, 0, 0, 0,
1371+ 0, 0, 0, 0, 0, 0, 0, 0,
1372+ 0, 0, 0, 0, 0, 0, 0, 0,
1373+ 0, 0, 0, 0, 0, 0, 0, 0,
1374+ 0, 0, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
1375+ 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x045E, 0x045F,
1376+};
1377+static const unsigned short euc_to_utf8_8FA9[] = {
1378+ 0x00C6, 0x0110, 0, 0x0126, 0, 0x0132, 0,
1379+ 0x0141, 0x013F, 0, 0x014A, 0x00D8, 0x0152, 0, 0x0166,
1380+ 0x00DE, 0, 0, 0, 0, 0, 0, 0,
1381+ 0, 0, 0, 0, 0, 0, 0, 0,
1382+ 0, 0x00E6, 0x0111, 0x00F0, 0x0127, 0x0131, 0x0133, 0x0138,
1383+ 0x0142, 0x0140, 0x0149, 0x014B, 0x00F8, 0x0153, 0x00DF, 0x0167,
1384+ 0x00FE, 0, 0, 0, 0, 0, 0, 0,
1385+ 0, 0, 0, 0, 0, 0, 0, 0,
1386+ 0, 0, 0, 0, 0, 0, 0, 0,
1387+ 0, 0, 0, 0, 0, 0, 0, 0,
1388+ 0, 0, 0, 0, 0, 0, 0, 0,
1389+ 0, 0, 0, 0, 0, 0, 0,
1390+};
1391+static const unsigned short euc_to_utf8_8FAA[] = {
1392+ 0x00C1, 0x00C0, 0x00C4, 0x00C2, 0x0102, 0x01CD, 0x0100,
1393+ 0x0104, 0x00C5, 0x00C3, 0x0106, 0x0108, 0x010C, 0x00C7, 0x010A,
1394+ 0x010E, 0x00C9, 0x00C8, 0x00CB, 0x00CA, 0x011A, 0x0116, 0x0112,
1395+ 0x0118, 0, 0x011C, 0x011E, 0x0122, 0x0120, 0x0124, 0x00CD,
1396+ 0x00CC, 0x00CF, 0x00CE, 0x01CF, 0x0130, 0x012A, 0x012E, 0x0128,
1397+ 0x0134, 0x0136, 0x0139, 0x013D, 0x013B, 0x0143, 0x0147, 0x0145,
1398+ 0x00D1, 0x00D3, 0x00D2, 0x00D6, 0x00D4, 0x01D1, 0x0150, 0x014C,
1399+ 0x00D5, 0x0154, 0x0158, 0x0156, 0x015A, 0x015C, 0x0160, 0x015E,
1400+ 0x0164, 0x0162, 0x00DA, 0x00D9, 0x00DC, 0x00DB, 0x016C, 0x01D3,
1401+ 0x0170, 0x016A, 0x0172, 0x016E, 0x0168, 0x01D7, 0x01DB, 0x01D9,
1402+ 0x01D5, 0x0174, 0x00DD, 0x0178, 0x0176, 0x0179, 0x017D, 0x017B,
1403+ 0, 0, 0, 0, 0, 0, 0,
1404+};
1405+static const unsigned short euc_to_utf8_8FAB[] = {
1406+ 0x00E1, 0x00E0, 0x00E4, 0x00E2, 0x0103, 0x01CE, 0x0101,
1407+ 0x0105, 0x00E5, 0x00E3, 0x0107, 0x0109, 0x010D, 0x00E7, 0x010B,
1408+ 0x010F, 0x00E9, 0x00E8, 0x00EB, 0x00EA, 0x011B, 0x0117, 0x0113,
1409+ 0x0119, 0x01F5, 0x011D, 0x011F, 0, 0x0121, 0x0125, 0x00ED,
1410+ 0x00EC, 0x00EF, 0x00EE, 0x01D0, 0, 0x012B, 0x012F, 0x0129,
1411+ 0x0135, 0x0137, 0x013A, 0x013E, 0x013C, 0x0144, 0x0148, 0x0146,
1412+ 0x00F1, 0x00F3, 0x00F2, 0x00F6, 0x00F4, 0x01D2, 0x0151, 0x014D,
1413+ 0x00F5, 0x0155, 0x0159, 0x0157, 0x015B, 0x015D, 0x0161, 0x015F,
1414+ 0x0165, 0x0163, 0x00FA, 0x00F9, 0x00FC, 0x00FB, 0x016D, 0x01D4,
1415+ 0x0171, 0x016B, 0x0173, 0x016F, 0x0169, 0x01D8, 0x01DC, 0x01DA,
1416+ 0x01D6, 0x0175, 0x00FD, 0x00FF, 0x0177, 0x017A, 0x017E, 0x017C,
1417+ 0, 0, 0, 0, 0, 0, 0,
1418+};
1419+static const unsigned short euc_to_utf8_8FB0[] = {
1420+ 0x4E02, 0x4E04, 0x4E05, 0x4E0C, 0x4E12, 0x4E1F, 0x4E23,
1421+ 0x4E24, 0x4E28, 0x4E2B, 0x4E2E, 0x4E2F, 0x4E30, 0x4E35, 0x4E40,
1422+ 0x4E41, 0x4E44, 0x4E47, 0x4E51, 0x4E5A, 0x4E5C, 0x4E63, 0x4E68,
1423+ 0x4E69, 0x4E74, 0x4E75, 0x4E79, 0x4E7F, 0x4E8D, 0x4E96, 0x4E97,
1424+ 0x4E9D, 0x4EAF, 0x4EB9, 0x4EC3, 0x4ED0, 0x4EDA, 0x4EDB, 0x4EE0,
1425+ 0x4EE1, 0x4EE2, 0x4EE8, 0x4EEF, 0x4EF1, 0x4EF3, 0x4EF5, 0x4EFD,
1426+ 0x4EFE, 0x4EFF, 0x4F00, 0x4F02, 0x4F03, 0x4F08, 0x4F0B, 0x4F0C,
1427+ 0x4F12, 0x4F15, 0x4F16, 0x4F17, 0x4F19, 0x4F2E, 0x4F31, 0x4F60,
1428+ 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B, 0x4F3E, 0x4F40, 0x4F42,
1429+ 0x4F48, 0x4F49, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, 0x4F56, 0x4F58,
1430+ 0x4F5F, 0x4F63, 0x4F6A, 0x4F6C, 0x4F6E, 0x4F71, 0x4F77, 0x4F78,
1431+ 0x4F79, 0x4F7A, 0x4F7D, 0x4F7E, 0x4F81, 0x4F82, 0x4F84,
1432+};
1433+static const unsigned short euc_to_utf8_8FB1[] = {
1434+ 0x4F85, 0x4F89, 0x4F8A, 0x4F8C, 0x4F8E, 0x4F90, 0x4F92,
1435+ 0x4F93, 0x4F94, 0x4F97, 0x4F99, 0x4F9A, 0x4F9E, 0x4F9F, 0x4FB2,
1436+ 0x4FB7, 0x4FB9, 0x4FBB, 0x4FBC, 0x4FBD, 0x4FBE, 0x4FC0, 0x4FC1,
1437+ 0x4FC5, 0x4FC6, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC, 0x4FCD, 0x4FCF,
1438+ 0x4FD2, 0x4FDC, 0x4FE0, 0x4FE2, 0x4FF0, 0x4FF2, 0x4FFC, 0x4FFD,
1439+ 0x4FFF, 0x5000, 0x5001, 0x5004, 0x5007, 0x500A, 0x500C, 0x500E,
1440+ 0x5010, 0x5013, 0x5017, 0x5018, 0x501B, 0x501C, 0x501D, 0x501E,
1441+ 0x5022, 0x5027, 0x502E, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040,
1442+ 0x5041, 0x5042, 0x5045, 0x5046, 0x504A, 0x504C, 0x504E, 0x5051,
1443+ 0x5052, 0x5053, 0x5057, 0x5059, 0x505F, 0x5060, 0x5062, 0x5063,
1444+ 0x5066, 0x5067, 0x506A, 0x506D, 0x5070, 0x5071, 0x503B, 0x5081,
1445+ 0x5083, 0x5084, 0x5086, 0x508A, 0x508E, 0x508F, 0x5090,
1446+};
1447+static const unsigned short euc_to_utf8_8FB2[] = {
1448+ 0x5092, 0x5093, 0x5094, 0x5096, 0x509B, 0x509C, 0x509E,
1449+ 0x509F, 0x50A0, 0x50A1, 0x50A2, 0x50AA, 0x50AF, 0x50B0, 0x50B9,
1450+ 0x50BA, 0x50BD, 0x50C0, 0x50C3, 0x50C4, 0x50C7, 0x50CC, 0x50CE,
1451+ 0x50D0, 0x50D3, 0x50D4, 0x50D8, 0x50DC, 0x50DD, 0x50DF, 0x50E2,
1452+ 0x50E4, 0x50E6, 0x50E8, 0x50E9, 0x50EF, 0x50F1, 0x50F6, 0x50FA,
1453+ 0x50FE, 0x5103, 0x5106, 0x5107, 0x5108, 0x510B, 0x510C, 0x510D,
1454+ 0x510E, 0x50F2, 0x5110, 0x5117, 0x5119, 0x511B, 0x511C, 0x511D,
1455+ 0x511E, 0x5123, 0x5127, 0x5128, 0x512C, 0x512D, 0x512F, 0x5131,
1456+ 0x5133, 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514A, 0x514F,
1457+ 0x5153, 0x5155, 0x5157, 0x5158, 0x515F, 0x5164, 0x5166, 0x517E,
1458+ 0x5183, 0x5184, 0x518B, 0x518E, 0x5198, 0x519D, 0x51A1, 0x51A3,
1459+ 0x51AD, 0x51B8, 0x51BA, 0x51BC, 0x51BE, 0x51BF, 0x51C2,
1460+};
1461+static const unsigned short euc_to_utf8_8FB3[] = {
1462+ 0x51C8, 0x51CF, 0x51D1, 0x51D2, 0x51D3, 0x51D5, 0x51D8,
1463+ 0x51DE, 0x51E2, 0x51E5, 0x51EE, 0x51F2, 0x51F3, 0x51F4, 0x51F7,
1464+ 0x5201, 0x5202, 0x5205, 0x5212, 0x5213, 0x5215, 0x5216, 0x5218,
1465+ 0x5222, 0x5228, 0x5231, 0x5232, 0x5235, 0x523C, 0x5245, 0x5249,
1466+ 0x5255, 0x5257, 0x5258, 0x525A, 0x525C, 0x525F, 0x5260, 0x5261,
1467+ 0x5266, 0x526E, 0x5277, 0x5278, 0x5279, 0x5280, 0x5282, 0x5285,
1468+ 0x528A, 0x528C, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298, 0x529A,
1469+ 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, 0x52AF, 0x52B0, 0x52B6,
1470+ 0x52B7, 0x52B8, 0x52BA, 0x52BB, 0x52BD, 0x52C0, 0x52C4, 0x52C6,
1471+ 0x52C8, 0x52CC, 0x52CF, 0x52D1, 0x52D4, 0x52D6, 0x52DB, 0x52DC,
1472+ 0x52E1, 0x52E5, 0x52E8, 0x52E9, 0x52EA, 0x52EC, 0x52F0, 0x52F1,
1473+ 0x52F4, 0x52F6, 0x52F7, 0x5300, 0x5303, 0x530A, 0x530B,
1474+};
1475+static const unsigned short euc_to_utf8_8FB4[] = {
1476+ 0x530C, 0x5311, 0x5313, 0x5318, 0x531B, 0x531C, 0x531E,
1477+ 0x531F, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B, 0x532C, 0x532D,
1478+ 0x5330, 0x5332, 0x5335, 0x533C, 0x533D, 0x533E, 0x5342, 0x534C,
1479+ 0x534B, 0x5359, 0x535B, 0x5361, 0x5363, 0x5365, 0x536C, 0x536D,
1480+ 0x5372, 0x5379, 0x537E, 0x5383, 0x5387, 0x5388, 0x538E, 0x5393,
1481+ 0x5394, 0x5399, 0x539D, 0x53A1, 0x53A4, 0x53AA, 0x53AB, 0x53AF,
1482+ 0x53B2, 0x53B4, 0x53B5, 0x53B7, 0x53B8, 0x53BA, 0x53BD, 0x53C0,
1483+ 0x53C5, 0x53CF, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DD, 0x53DE,
1484+ 0x53E0, 0x53E6, 0x53E7, 0x53F5, 0x5402, 0x5413, 0x541A, 0x5421,
1485+ 0x5427, 0x5428, 0x542A, 0x542F, 0x5431, 0x5434, 0x5435, 0x5443,
1486+ 0x5444, 0x5447, 0x544D, 0x544F, 0x545E, 0x5462, 0x5464, 0x5466,
1487+ 0x5467, 0x5469, 0x546B, 0x546D, 0x546E, 0x5474, 0x547F,
1488+};
1489+static const unsigned short euc_to_utf8_8FB5[] = {
1490+ 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548D, 0x5491,
1491+ 0x5495, 0x5496, 0x549C, 0x549F, 0x54A1, 0x54A6, 0x54A7, 0x54A9,
1492+ 0x54AA, 0x54AD, 0x54AE, 0x54B1, 0x54B7, 0x54B9, 0x54BA, 0x54BB,
1493+ 0x54BF, 0x54C6, 0x54CA, 0x54CD, 0x54CE, 0x54E0, 0x54EA, 0x54EC,
1494+ 0x54EF, 0x54F6, 0x54FC, 0x54FE, 0x54FF, 0x5500, 0x5501, 0x5505,
1495+ 0x5508, 0x5509, 0x550C, 0x550D, 0x550E, 0x5515, 0x552A, 0x552B,
1496+ 0x5532, 0x5535, 0x5536, 0x553B, 0x553C, 0x553D, 0x5541, 0x5547,
1497+ 0x5549, 0x554A, 0x554D, 0x5550, 0x5551, 0x5558, 0x555A, 0x555B,
1498+ 0x555E, 0x5560, 0x5561, 0x5564, 0x5566, 0x557F, 0x5581, 0x5582,
1499+ 0x5586, 0x5588, 0x558E, 0x558F, 0x5591, 0x5592, 0x5593, 0x5594,
1500+ 0x5597, 0x55A3, 0x55A4, 0x55AD, 0x55B2, 0x55BF, 0x55C1, 0x55C3,
1501+ 0x55C6, 0x55C9, 0x55CB, 0x55CC, 0x55CE, 0x55D1, 0x55D2,
1502+};
1503+static const unsigned short euc_to_utf8_8FB6[] = {
1504+ 0x55D3, 0x55D7, 0x55D8, 0x55DB, 0x55DE, 0x55E2, 0x55E9,
1505+ 0x55F6, 0x55FF, 0x5605, 0x5608, 0x560A, 0x560D, 0x560E, 0x560F,
1506+ 0x5610, 0x5611, 0x5612, 0x5619, 0x562C, 0x5630, 0x5633, 0x5635,
1507+ 0x5637, 0x5639, 0x563B, 0x563C, 0x563D, 0x563F, 0x5640, 0x5641,
1508+ 0x5643, 0x5644, 0x5646, 0x5649, 0x564B, 0x564D, 0x564F, 0x5654,
1509+ 0x565E, 0x5660, 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566D,
1510+ 0x566F, 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568B,
1511+ 0x568C, 0x5695, 0x5699, 0x569A, 0x569D, 0x569E, 0x569F, 0x56A6,
1512+ 0x56A7, 0x56A8, 0x56A9, 0x56AB, 0x56AC, 0x56AD, 0x56B1, 0x56B3,
1513+ 0x56B7, 0x56BE, 0x56C5, 0x56C9, 0x56CA, 0x56CB, 0x56CF, 0x56D0,
1514+ 0x56CC, 0x56CD, 0x56D9, 0x56DC, 0x56DD, 0x56DF, 0x56E1, 0x56E4,
1515+ 0x56E5, 0x56E6, 0x56E7, 0x56E8, 0x56F1, 0x56EB, 0x56ED,
1516+};
1517+static const unsigned short euc_to_utf8_8FB7[] = {
1518+ 0x56F6, 0x56F7, 0x5701, 0x5702, 0x5707, 0x570A, 0x570C,
1519+ 0x5711, 0x5715, 0x571A, 0x571B, 0x571D, 0x5720, 0x5722, 0x5723,
1520+ 0x5724, 0x5725, 0x5729, 0x572A, 0x572C, 0x572E, 0x572F, 0x5733,
1521+ 0x5734, 0x573D, 0x573E, 0x573F, 0x5745, 0x5746, 0x574C, 0x574D,
1522+ 0x5752, 0x5762, 0x5765, 0x5767, 0x5768, 0x576B, 0x576D, 0x576E,
1523+ 0x576F, 0x5770, 0x5771, 0x5773, 0x5774, 0x5775, 0x5777, 0x5779,
1524+ 0x577A, 0x577B, 0x577C, 0x577E, 0x5781, 0x5783, 0x578C, 0x5794,
1525+ 0x5797, 0x5799, 0x579A, 0x579C, 0x579D, 0x579E, 0x579F, 0x57A1,
1526+ 0x5795, 0x57A7, 0x57A8, 0x57A9, 0x57AC, 0x57B8, 0x57BD, 0x57C7,
1527+ 0x57C8, 0x57CC, 0x57CF, 0x57D5, 0x57DD, 0x57DE, 0x57E4, 0x57E6,
1528+ 0x57E7, 0x57E9, 0x57ED, 0x57F0, 0x57F5, 0x57F6, 0x57F8, 0x57FD,
1529+ 0x57FE, 0x57FF, 0x5803, 0x5804, 0x5808, 0x5809, 0x57E1,
1530+};
1531+static const unsigned short euc_to_utf8_8FB8[] = {
1532+ 0x580C, 0x580D, 0x581B, 0x581E, 0x581F, 0x5820, 0x5826,
1533+ 0x5827, 0x582D, 0x5832, 0x5839, 0x583F, 0x5849, 0x584C, 0x584D,
1534+ 0x584F, 0x5850, 0x5855, 0x585F, 0x5861, 0x5864, 0x5867, 0x5868,
1535+ 0x5878, 0x587C, 0x587F, 0x5880, 0x5881, 0x5887, 0x5888, 0x5889,
1536+ 0x588A, 0x588C, 0x588D, 0x588F, 0x5890, 0x5894, 0x5896, 0x589D,
1537+ 0x58A0, 0x58A1, 0x58A2, 0x58A6, 0x58A9, 0x58B1, 0x58B2, 0x58C4,
1538+ 0x58BC, 0x58C2, 0x58C8, 0x58CD, 0x58CE, 0x58D0, 0x58D2, 0x58D4,
1539+ 0x58D6, 0x58DA, 0x58DD, 0x58E1, 0x58E2, 0x58E9, 0x58F3, 0x5905,
1540+ 0x5906, 0x590B, 0x590C, 0x5912, 0x5913, 0x5914, 0x8641, 0x591D,
1541+ 0x5921, 0x5923, 0x5924, 0x5928, 0x592F, 0x5930, 0x5933, 0x5935,
1542+ 0x5936, 0x593F, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595B,
1543+ 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, 0x596B, 0x596D,
1544+};
1545+static const unsigned short euc_to_utf8_8FB9[] = {
1546+ 0x596F, 0x5972, 0x5975, 0x5976, 0x5979, 0x597B, 0x597C,
1547+ 0x598B, 0x598C, 0x598E, 0x5992, 0x5995, 0x5997, 0x599F, 0x59A4,
1548+ 0x59A7, 0x59AD, 0x59AE, 0x59AF, 0x59B0, 0x59B3, 0x59B7, 0x59BA,
1549+ 0x59BC, 0x59C1, 0x59C3, 0x59C4, 0x59C8, 0x59CA, 0x59CD, 0x59D2,
1550+ 0x59DD, 0x59DE, 0x59DF, 0x59E3, 0x59E4, 0x59E7, 0x59EE, 0x59EF,
1551+ 0x59F1, 0x59F2, 0x59F4, 0x59F7, 0x5A00, 0x5A04, 0x5A0C, 0x5A0D,
1552+ 0x5A0E, 0x5A12, 0x5A13, 0x5A1E, 0x5A23, 0x5A24, 0x5A27, 0x5A28,
1553+ 0x5A2A, 0x5A2D, 0x5A30, 0x5A44, 0x5A45, 0x5A47, 0x5A48, 0x5A4C,
1554+ 0x5A50, 0x5A55, 0x5A5E, 0x5A63, 0x5A65, 0x5A67, 0x5A6D, 0x5A77,
1555+ 0x5A7A, 0x5A7B, 0x5A7E, 0x5A8B, 0x5A90, 0x5A93, 0x5A96, 0x5A99,
1556+ 0x5A9C, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA2, 0x5AA7, 0x5AAC, 0x5AB1,
1557+ 0x5AB2, 0x5AB3, 0x5AB5, 0x5AB8, 0x5ABA, 0x5ABB, 0x5ABF,
1558+};
1559+static const unsigned short euc_to_utf8_8FBA[] = {
1560+ 0x5AC4, 0x5AC6, 0x5AC8, 0x5ACF, 0x5ADA, 0x5ADC, 0x5AE0,
1561+ 0x5AE5, 0x5AEA, 0x5AEE, 0x5AF5, 0x5AF6, 0x5AFD, 0x5B00, 0x5B01,
1562+ 0x5B08, 0x5B17, 0x5B34, 0x5B19, 0x5B1B, 0x5B1D, 0x5B21, 0x5B25,
1563+ 0x5B2D, 0x5B38, 0x5B41, 0x5B4B, 0x5B4C, 0x5B52, 0x5B56, 0x5B5E,
1564+ 0x5B68, 0x5B6E, 0x5B6F, 0x5B7C, 0x5B7D, 0x5B7E, 0x5B7F, 0x5B81,
1565+ 0x5B84, 0x5B86, 0x5B8A, 0x5B8E, 0x5B90, 0x5B91, 0x5B93, 0x5B94,
1566+ 0x5B96, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAF, 0x5BB1, 0x5BB2,
1567+ 0x5BB7, 0x5BBA, 0x5BBC, 0x5BC0, 0x5BC1, 0x5BCD, 0x5BCF, 0x5BD6,
1568+ 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA, 0x5BE0, 0x5BEF, 0x5BF1, 0x5BF4,
1569+ 0x5BFD, 0x5C0C, 0x5C17, 0x5C1E, 0x5C1F, 0x5C23, 0x5C26, 0x5C29,
1570+ 0x5C2B, 0x5C2C, 0x5C2E, 0x5C30, 0x5C32, 0x5C35, 0x5C36, 0x5C59,
1571+ 0x5C5A, 0x5C5C, 0x5C62, 0x5C63, 0x5C67, 0x5C68, 0x5C69,
1572+};
1573+static const unsigned short euc_to_utf8_8FBB[] = {
1574+ 0x5C6D, 0x5C70, 0x5C74, 0x5C75, 0x5C7A, 0x5C7B, 0x5C7C,
1575+ 0x5C7D, 0x5C87, 0x5C88, 0x5C8A, 0x5C8F, 0x5C92, 0x5C9D, 0x5C9F,
1576+ 0x5CA0, 0x5CA2, 0x5CA3, 0x5CA6, 0x5CAA, 0x5CB2, 0x5CB4, 0x5CB5,
1577+ 0x5CBA, 0x5CC9, 0x5CCB, 0x5CD2, 0x5CDD, 0x5CD7, 0x5CEE, 0x5CF1,
1578+ 0x5CF2, 0x5CF4, 0x5D01, 0x5D06, 0x5D0D, 0x5D12, 0x5D2B, 0x5D23,
1579+ 0x5D24, 0x5D26, 0x5D27, 0x5D31, 0x5D34, 0x5D39, 0x5D3D, 0x5D3F,
1580+ 0x5D42, 0x5D43, 0x5D46, 0x5D48, 0x5D55, 0x5D51, 0x5D59, 0x5D4A,
1581+ 0x5D5F, 0x5D60, 0x5D61, 0x5D62, 0x5D64, 0x5D6A, 0x5D6D, 0x5D70,
1582+ 0x5D79, 0x5D7A, 0x5D7E, 0x5D7F, 0x5D81, 0x5D83, 0x5D88, 0x5D8A,
1583+ 0x5D92, 0x5D93, 0x5D94, 0x5D95, 0x5D99, 0x5D9B, 0x5D9F, 0x5DA0,
1584+ 0x5DA7, 0x5DAB, 0x5DB0, 0x5DB4, 0x5DB8, 0x5DB9, 0x5DC3, 0x5DC7,
1585+ 0x5DCB, 0x5DD0, 0x5DCE, 0x5DD8, 0x5DD9, 0x5DE0, 0x5DE4,
1586+};
1587+static const unsigned short euc_to_utf8_8FBC[] = {
1588+ 0x5DE9, 0x5DF8, 0x5DF9, 0x5E00, 0x5E07, 0x5E0D, 0x5E12,
1589+ 0x5E14, 0x5E15, 0x5E18, 0x5E1F, 0x5E20, 0x5E2E, 0x5E28, 0x5E32,
1590+ 0x5E35, 0x5E3E, 0x5E4B, 0x5E50, 0x5E49, 0x5E51, 0x5E56, 0x5E58,
1591+ 0x5E5B, 0x5E5C, 0x5E5E, 0x5E68, 0x5E6A, 0x5E6B, 0x5E6C, 0x5E6D,
1592+ 0x5E6E, 0x5E70, 0x5E80, 0x5E8B, 0x5E8E, 0x5EA2, 0x5EA4, 0x5EA5,
1593+ 0x5EA8, 0x5EAA, 0x5EAC, 0x5EB1, 0x5EB3, 0x5EBD, 0x5EBE, 0x5EBF,
1594+ 0x5EC6, 0x5ECC, 0x5ECB, 0x5ECE, 0x5ED1, 0x5ED2, 0x5ED4, 0x5ED5,
1595+ 0x5EDC, 0x5EDE, 0x5EE5, 0x5EEB, 0x5F02, 0x5F06, 0x5F07, 0x5F08,
1596+ 0x5F0E, 0x5F19, 0x5F1C, 0x5F1D, 0x5F21, 0x5F22, 0x5F23, 0x5F24,
1597+ 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30, 0x5F34, 0x5F36, 0x5F3B,
1598+ 0x5F3D, 0x5F3F, 0x5F40, 0x5F44, 0x5F45, 0x5F47, 0x5F4D, 0x5F50,
1599+ 0x5F54, 0x5F58, 0x5F5B, 0x5F60, 0x5F63, 0x5F64, 0x5F67,
1600+};
1601+static const unsigned short euc_to_utf8_8FBD[] = {
1602+ 0x5F6F, 0x5F72, 0x5F74, 0x5F75, 0x5F78, 0x5F7A, 0x5F7D,
1603+ 0x5F7E, 0x5F89, 0x5F8D, 0x5F8F, 0x5F96, 0x5F9C, 0x5F9D, 0x5FA2,
1604+ 0x5FA7, 0x5FAB, 0x5FA4, 0x5FAC, 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB8,
1605+ 0x5FC4, 0x5FC7, 0x5FC8, 0x5FC9, 0x5FCB, 0x5FD0, 0x5FD1, 0x5FD2,
1606+ 0x5FD3, 0x5FD4, 0x5FDE, 0x5FE1, 0x5FE2, 0x5FE8, 0x5FE9, 0x5FEA,
1607+ 0x5FEC, 0x5FED, 0x5FEE, 0x5FEF, 0x5FF2, 0x5FF3, 0x5FF6, 0x5FFA,
1608+ 0x5FFC, 0x6007, 0x600A, 0x600D, 0x6013, 0x6014, 0x6017, 0x6018,
1609+ 0x601A, 0x601F, 0x6024, 0x602D, 0x6033, 0x6035, 0x6040, 0x6047,
1610+ 0x6048, 0x6049, 0x604C, 0x6051, 0x6054, 0x6056, 0x6057, 0x605D,
1611+ 0x6061, 0x6067, 0x6071, 0x607E, 0x607F, 0x6082, 0x6086, 0x6088,
1612+ 0x608A, 0x608E, 0x6091, 0x6093, 0x6095, 0x6098, 0x609D, 0x609E,
1613+ 0x60A2, 0x60A4, 0x60A5, 0x60A8, 0x60B0, 0x60B1, 0x60B7,
1614+};
1615+static const unsigned short euc_to_utf8_8FBE[] = {
1616+ 0x60BB, 0x60BE, 0x60C2, 0x60C4, 0x60C8, 0x60C9, 0x60CA,
1617+ 0x60CB, 0x60CE, 0x60CF, 0x60D4, 0x60D5, 0x60D9, 0x60DB, 0x60DD,
1618+ 0x60DE, 0x60E2, 0x60E5, 0x60F2, 0x60F5, 0x60F8, 0x60FC, 0x60FD,
1619+ 0x6102, 0x6107, 0x610A, 0x610C, 0x6110, 0x6111, 0x6112, 0x6113,
1620+ 0x6114, 0x6116, 0x6117, 0x6119, 0x611C, 0x611E, 0x6122, 0x612A,
1621+ 0x612B, 0x6130, 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141,
1622+ 0x6145, 0x6146, 0x6149, 0x615E, 0x6160, 0x616C, 0x6172, 0x6178,
1623+ 0x617B, 0x617C, 0x617F, 0x6180, 0x6181, 0x6183, 0x6184, 0x618B,
1624+ 0x618D, 0x6192, 0x6193, 0x6197, 0x6198, 0x619C, 0x619D, 0x619F,
1625+ 0x61A0, 0x61A5, 0x61A8, 0x61AA, 0x61AD, 0x61B8, 0x61B9, 0x61BC,
1626+ 0x61C0, 0x61C1, 0x61C2, 0x61CE, 0x61CF, 0x61D5, 0x61DC, 0x61DD,
1627+ 0x61DE, 0x61DF, 0x61E1, 0x61E2, 0x61E7, 0x61E9, 0x61E5,
1628+};
1629+static const unsigned short euc_to_utf8_8FBF[] = {
1630+ 0x61EC, 0x61ED, 0x61EF, 0x6201, 0x6203, 0x6204, 0x6207,
1631+ 0x6213, 0x6215, 0x621C, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229,
1632+ 0x622B, 0x6239, 0x623D, 0x6242, 0x6243, 0x6244, 0x6246, 0x624C,
1633+ 0x6250, 0x6251, 0x6252, 0x6254, 0x6256, 0x625A, 0x625C, 0x6264,
1634+ 0x626D, 0x626F, 0x6273, 0x627A, 0x627D, 0x628D, 0x628E, 0x628F,
1635+ 0x6290, 0x62A6, 0x62A8, 0x62B3, 0x62B6, 0x62B7, 0x62BA, 0x62BE,
1636+ 0x62BF, 0x62C4, 0x62CE, 0x62D5, 0x62D6, 0x62DA, 0x62EA, 0x62F2,
1637+ 0x62F4, 0x62FC, 0x62FD, 0x6303, 0x6304, 0x630A, 0x630B, 0x630D,
1638+ 0x6310, 0x6313, 0x6316, 0x6318, 0x6329, 0x632A, 0x632D, 0x6335,
1639+ 0x6336, 0x6339, 0x633C, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346,
1640+ 0x634A, 0x634B, 0x634E, 0x6352, 0x6353, 0x6354, 0x6358, 0x635B,
1641+ 0x6365, 0x6366, 0x636C, 0x636D, 0x6371, 0x6374, 0x6375,
1642+};
1643+static const unsigned short euc_to_utf8_8FC0[] = {
1644+ 0x6378, 0x637C, 0x637D, 0x637F, 0x6382, 0x6384, 0x6387,
1645+ 0x638A, 0x6390, 0x6394, 0x6395, 0x6399, 0x639A, 0x639E, 0x63A4,
1646+ 0x63A6, 0x63AD, 0x63AE, 0x63AF, 0x63BD, 0x63C1, 0x63C5, 0x63C8,
1647+ 0x63CE, 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63DC, 0x63E0, 0x63E5,
1648+ 0x63EA, 0x63EC, 0x63F2, 0x63F3, 0x63F5, 0x63F8, 0x63F9, 0x6409,
1649+ 0x640A, 0x6410, 0x6412, 0x6414, 0x6418, 0x641E, 0x6420, 0x6422,
1650+ 0x6424, 0x6425, 0x6429, 0x642A, 0x642F, 0x6430, 0x6435, 0x643D,
1651+ 0x643F, 0x644B, 0x644F, 0x6451, 0x6452, 0x6453, 0x6454, 0x645A,
1652+ 0x645B, 0x645C, 0x645D, 0x645F, 0x6460, 0x6461, 0x6463, 0x646D,
1653+ 0x6473, 0x6474, 0x647B, 0x647D, 0x6485, 0x6487, 0x648F, 0x6490,
1654+ 0x6491, 0x6498, 0x6499, 0x649B, 0x649D, 0x649F, 0x64A1, 0x64A3,
1655+ 0x64A6, 0x64A8, 0x64AC, 0x64B3, 0x64BD, 0x64BE, 0x64BF,
1656+};
1657+static const unsigned short euc_to_utf8_8FC1[] = {
1658+ 0x64C4, 0x64C9, 0x64CA, 0x64CB, 0x64CC, 0x64CE, 0x64D0,
1659+ 0x64D1, 0x64D5, 0x64D7, 0x64E4, 0x64E5, 0x64E9, 0x64EA, 0x64ED,
1660+ 0x64F0, 0x64F5, 0x64F7, 0x64FB, 0x64FF, 0x6501, 0x6504, 0x6508,
1661+ 0x6509, 0x650A, 0x650F, 0x6513, 0x6514, 0x6516, 0x6519, 0x651B,
1662+ 0x651E, 0x651F, 0x6522, 0x6526, 0x6529, 0x652E, 0x6531, 0x653A,
1663+ 0x653C, 0x653D, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554,
1664+ 0x655F, 0x6560, 0x6567, 0x656B, 0x657A, 0x657D, 0x6581, 0x6585,
1665+ 0x658A, 0x6592, 0x6595, 0x6598, 0x659D, 0x65A0, 0x65A3, 0x65A6,
1666+ 0x65AE, 0x65B2, 0x65B3, 0x65B4, 0x65BF, 0x65C2, 0x65C8, 0x65C9,
1667+ 0x65CE, 0x65D0, 0x65D4, 0x65D6, 0x65D8, 0x65DF, 0x65F0, 0x65F2,
1668+ 0x65F4, 0x65F5, 0x65F9, 0x65FE, 0x65FF, 0x6600, 0x6604, 0x6608,
1669+ 0x6609, 0x660D, 0x6611, 0x6612, 0x6615, 0x6616, 0x661D,
1670+};
1671+static const unsigned short euc_to_utf8_8FC2[] = {
1672+ 0x661E, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629,
1673+ 0x662A, 0x662B, 0x662C, 0x662E, 0x6630, 0x6631, 0x6633, 0x6639,
1674+ 0x6637, 0x6640, 0x6645, 0x6646, 0x664A, 0x664C, 0x6651, 0x664E,
1675+ 0x6657, 0x6658, 0x6659, 0x665B, 0x665C, 0x6660, 0x6661, 0x66FB,
1676+ 0x666A, 0x666B, 0x666C, 0x667E, 0x6673, 0x6675, 0x667F, 0x6677,
1677+ 0x6678, 0x6679, 0x667B, 0x6680, 0x667C, 0x668B, 0x668C, 0x668D,
1678+ 0x6690, 0x6692, 0x6699, 0x669A, 0x669B, 0x669C, 0x669F, 0x66A0,
1679+ 0x66A4, 0x66AD, 0x66B1, 0x66B2, 0x66B5, 0x66BB, 0x66BF, 0x66C0,
1680+ 0x66C2, 0x66C3, 0x66C8, 0x66CC, 0x66CE, 0x66CF, 0x66D4, 0x66DB,
1681+ 0x66DF, 0x66E8, 0x66EB, 0x66EC, 0x66EE, 0x66FA, 0x6705, 0x6707,
1682+ 0x670E, 0x6713, 0x6719, 0x671C, 0x6720, 0x6722, 0x6733, 0x673E,
1683+ 0x6745, 0x6747, 0x6748, 0x674C, 0x6754, 0x6755, 0x675D,
1684+};
1685+static const unsigned short euc_to_utf8_8FC3[] = {
1686+ 0x6766, 0x676C, 0x676E, 0x6774, 0x6776, 0x677B, 0x6781,
1687+ 0x6784, 0x678E, 0x678F, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799,
1688+ 0x679B, 0x67B0, 0x67B1, 0x67B2, 0x67B5, 0x67BB, 0x67BC, 0x67BD,
1689+ 0x67F9, 0x67C0, 0x67C2, 0x67C3, 0x67C5, 0x67C8, 0x67C9, 0x67D2,
1690+ 0x67D7, 0x67D9, 0x67DC, 0x67E1, 0x67E6, 0x67F0, 0x67F2, 0x67F6,
1691+ 0x67F7, 0x6852, 0x6814, 0x6819, 0x681D, 0x681F, 0x6828, 0x6827,
1692+ 0x682C, 0x682D, 0x682F, 0x6830, 0x6831, 0x6833, 0x683B, 0x683F,
1693+ 0x6844, 0x6845, 0x684A, 0x684C, 0x6855, 0x6857, 0x6858, 0x685B,
1694+ 0x686B, 0x686E, 0x686F, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879,
1695+ 0x687A, 0x687B, 0x687C, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896,
1696+ 0x6898, 0x689A, 0x689C, 0x68A1, 0x68A3, 0x68A5, 0x68A9, 0x68AA,
1697+ 0x68AE, 0x68B2, 0x68BB, 0x68C5, 0x68C8, 0x68CC, 0x68CF,
1698+};
1699+static const unsigned short euc_to_utf8_8FC4[] = {
1700+ 0x68D0, 0x68D1, 0x68D3, 0x68D6, 0x68D9, 0x68DC, 0x68DD,
1701+ 0x68E5, 0x68E8, 0x68EA, 0x68EB, 0x68EC, 0x68ED, 0x68F0, 0x68F1,
1702+ 0x68F5, 0x68F6, 0x68FB, 0x68FC, 0x68FD, 0x6906, 0x6909, 0x690A,
1703+ 0x6910, 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, 0x6935,
1704+ 0x6938, 0x693B, 0x6942, 0x6945, 0x6949, 0x694E, 0x6957, 0x695B,
1705+ 0x6963, 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696C, 0x6970,
1706+ 0x6971, 0x6972, 0x697A, 0x697B, 0x697F, 0x6980, 0x698D, 0x6992,
1707+ 0x6996, 0x6998, 0x69A1, 0x69A5, 0x69A6, 0x69A8, 0x69AB, 0x69AD,
1708+ 0x69AF, 0x69B7, 0x69B8, 0x69BA, 0x69BC, 0x69C5, 0x69C8, 0x69D1,
1709+ 0x69D6, 0x69D7, 0x69E2, 0x69E5, 0x69EE, 0x69EF, 0x69F1, 0x69F3,
1710+ 0x69F5, 0x69FE, 0x6A00, 0x6A01, 0x6A03, 0x6A0F, 0x6A11, 0x6A15,
1711+ 0x6A1A, 0x6A1D, 0x6A20, 0x6A24, 0x6A28, 0x6A30, 0x6A32,
1712+};
1713+static const unsigned short euc_to_utf8_8FC5[] = {
1714+ 0x6A34, 0x6A37, 0x6A3B, 0x6A3E, 0x6A3F, 0x6A45, 0x6A46,
1715+ 0x6A49, 0x6A4A, 0x6A4E, 0x6A50, 0x6A51, 0x6A52, 0x6A55, 0x6A56,
1716+ 0x6A5B, 0x6A64, 0x6A67, 0x6A6A, 0x6A71, 0x6A73, 0x6A7E, 0x6A81,
1717+ 0x6A83, 0x6A86, 0x6A87, 0x6A89, 0x6A8B, 0x6A91, 0x6A9B, 0x6A9D,
1718+ 0x6A9E, 0x6A9F, 0x6AA5, 0x6AAB, 0x6AAF, 0x6AB0, 0x6AB1, 0x6AB4,
1719+ 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC6, 0x6AC9, 0x6AC8, 0x6ACC, 0x6AD0,
1720+ 0x6AD4, 0x6AD5, 0x6AD6, 0x6ADC, 0x6ADD, 0x6AE4, 0x6AE7, 0x6AEC,
1721+ 0x6AF0, 0x6AF1, 0x6AF2, 0x6AFC, 0x6AFD, 0x6B02, 0x6B03, 0x6B06,
1722+ 0x6B07, 0x6B09, 0x6B0F, 0x6B10, 0x6B11, 0x6B17, 0x6B1B, 0x6B1E,
1723+ 0x6B24, 0x6B28, 0x6B2B, 0x6B2C, 0x6B2F, 0x6B35, 0x6B36, 0x6B3B,
1724+ 0x6B3F, 0x6B46, 0x6B4A, 0x6B4D, 0x6B52, 0x6B56, 0x6B58, 0x6B5D,
1725+ 0x6B60, 0x6B67, 0x6B6B, 0x6B6E, 0x6B70, 0x6B75, 0x6B7D,
1726+};
1727+static const unsigned short euc_to_utf8_8FC6[] = {
1728+ 0x6B7E, 0x6B82, 0x6B85, 0x6B97, 0x6B9B, 0x6B9F, 0x6BA0,
1729+ 0x6BA2, 0x6BA3, 0x6BA8, 0x6BA9, 0x6BAC, 0x6BAD, 0x6BAE, 0x6BB0,
1730+ 0x6BB8, 0x6BB9, 0x6BBD, 0x6BBE, 0x6BC3, 0x6BC4, 0x6BC9, 0x6BCC,
1731+ 0x6BD6, 0x6BDA, 0x6BE1, 0x6BE3, 0x6BE6, 0x6BE7, 0x6BEE, 0x6BF1,
1732+ 0x6BF7, 0x6BF9, 0x6BFF, 0x6C02, 0x6C04, 0x6C05, 0x6C09, 0x6C0D,
1733+ 0x6C0E, 0x6C10, 0x6C12, 0x6C19, 0x6C1F, 0x6C26, 0x6C27, 0x6C28,
1734+ 0x6C2C, 0x6C2E, 0x6C33, 0x6C35, 0x6C36, 0x6C3A, 0x6C3B, 0x6C3F,
1735+ 0x6C4A, 0x6C4B, 0x6C4D, 0x6C4F, 0x6C52, 0x6C54, 0x6C59, 0x6C5B,
1736+ 0x6C5C, 0x6C6B, 0x6C6D, 0x6C6F, 0x6C74, 0x6C76, 0x6C78, 0x6C79,
1737+ 0x6C7B, 0x6C85, 0x6C86, 0x6C87, 0x6C89, 0x6C94, 0x6C95, 0x6C97,
1738+ 0x6C98, 0x6C9C, 0x6C9F, 0x6CB0, 0x6CB2, 0x6CB4, 0x6CC2, 0x6CC6,
1739+ 0x6CCD, 0x6CCF, 0x6CD0, 0x6CD1, 0x6CD2, 0x6CD4, 0x6CD6,
1740+};
1741+static const unsigned short euc_to_utf8_8FC7[] = {
1742+ 0x6CDA, 0x6CDC, 0x6CE0, 0x6CE7, 0x6CE9, 0x6CEB, 0x6CEC,
1743+ 0x6CEE, 0x6CF2, 0x6CF4, 0x6D04, 0x6D07, 0x6D0A, 0x6D0E, 0x6D0F,
1744+ 0x6D11, 0x6D13, 0x6D1A, 0x6D26, 0x6D27, 0x6D28, 0x6C67, 0x6D2E,
1745+ 0x6D2F, 0x6D31, 0x6D39, 0x6D3C, 0x6D3F, 0x6D57, 0x6D5E, 0x6D5F,
1746+ 0x6D61, 0x6D65, 0x6D67, 0x6D6F, 0x6D70, 0x6D7C, 0x6D82, 0x6D87,
1747+ 0x6D91, 0x6D92, 0x6D94, 0x6D96, 0x6D97, 0x6D98, 0x6DAA, 0x6DAC,
1748+ 0x6DB4, 0x6DB7, 0x6DB9, 0x6DBD, 0x6DBF, 0x6DC4, 0x6DC8, 0x6DCA,
1749+ 0x6DCE, 0x6DCF, 0x6DD6, 0x6DDB, 0x6DDD, 0x6DDF, 0x6DE0, 0x6DE2,
1750+ 0x6DE5, 0x6DE9, 0x6DEF, 0x6DF0, 0x6DF4, 0x6DF6, 0x6DFC, 0x6E00,
1751+ 0x6E04, 0x6E1E, 0x6E22, 0x6E27, 0x6E32, 0x6E36, 0x6E39, 0x6E3B,
1752+ 0x6E3C, 0x6E44, 0x6E45, 0x6E48, 0x6E49, 0x6E4B, 0x6E4F, 0x6E51,
1753+ 0x6E52, 0x6E53, 0x6E54, 0x6E57, 0x6E5C, 0x6E5D, 0x6E5E,
1754+};
1755+static const unsigned short euc_to_utf8_8FC8[] = {
1756+ 0x6E62, 0x6E63, 0x6E68, 0x6E73, 0x6E7B, 0x6E7D, 0x6E8D,
1757+ 0x6E93, 0x6E99, 0x6EA0, 0x6EA7, 0x6EAD, 0x6EAE, 0x6EB1, 0x6EB3,
1758+ 0x6EBB, 0x6EBF, 0x6EC0, 0x6EC1, 0x6EC3, 0x6EC7, 0x6EC8, 0x6ECA,
1759+ 0x6ECD, 0x6ECE, 0x6ECF, 0x6EEB, 0x6EED, 0x6EEE, 0x6EF9, 0x6EFB,
1760+ 0x6EFD, 0x6F04, 0x6F08, 0x6F0A, 0x6F0C, 0x6F0D, 0x6F16, 0x6F18,
1761+ 0x6F1A, 0x6F1B, 0x6F26, 0x6F29, 0x6F2A, 0x6F2F, 0x6F30, 0x6F33,
1762+ 0x6F36, 0x6F3B, 0x6F3C, 0x6F2D, 0x6F4F, 0x6F51, 0x6F52, 0x6F53,
1763+ 0x6F57, 0x6F59, 0x6F5A, 0x6F5D, 0x6F5E, 0x6F61, 0x6F62, 0x6F68,
1764+ 0x6F6C, 0x6F7D, 0x6F7E, 0x6F83, 0x6F87, 0x6F88, 0x6F8B, 0x6F8C,
1765+ 0x6F8D, 0x6F90, 0x6F92, 0x6F93, 0x6F94, 0x6F96, 0x6F9A, 0x6F9F,
1766+ 0x6FA0, 0x6FA5, 0x6FA6, 0x6FA7, 0x6FA8, 0x6FAE, 0x6FAF, 0x6FB0,
1767+ 0x6FB5, 0x6FB6, 0x6FBC, 0x6FC5, 0x6FC7, 0x6FC8, 0x6FCA,
1768+};
1769+static const unsigned short euc_to_utf8_8FC9[] = {
1770+ 0x6FDA, 0x6FDE, 0x6FE8, 0x6FE9, 0x6FF0, 0x6FF5, 0x6FF9,
1771+ 0x6FFC, 0x6FFD, 0x7000, 0x7005, 0x7006, 0x7007, 0x700D, 0x7017,
1772+ 0x7020, 0x7023, 0x702F, 0x7034, 0x7037, 0x7039, 0x703C, 0x7043,
1773+ 0x7044, 0x7048, 0x7049, 0x704A, 0x704B, 0x7054, 0x7055, 0x705D,
1774+ 0x705E, 0x704E, 0x7064, 0x7065, 0x706C, 0x706E, 0x7075, 0x7076,
1775+ 0x707E, 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097,
1776+ 0x7098, 0x709B, 0x70A4, 0x70AB, 0x70B0, 0x70B1, 0x70B4, 0x70B7,
1777+ 0x70CA, 0x70D1, 0x70D3, 0x70D4, 0x70D5, 0x70D6, 0x70D8, 0x70DC,
1778+ 0x70E4, 0x70FA, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710B,
1779+ 0x710C, 0x710F, 0x711E, 0x7120, 0x712B, 0x712D, 0x712F, 0x7130,
1780+ 0x7131, 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714A, 0x714B,
1781+ 0x7150, 0x7152, 0x7157, 0x715A, 0x715C, 0x715E, 0x7160,
1782+};
1783+static const unsigned short euc_to_utf8_8FCA[] = {
1784+ 0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718C, 0x7192,
1785+ 0x719A, 0x719B, 0x71A0, 0x71A2, 0x71AF, 0x71B0, 0x71B2, 0x71B3,
1786+ 0x71BA, 0x71BF, 0x71C0, 0x71C1, 0x71C4, 0x71CB, 0x71CC, 0x71D3,
1787+ 0x71D6, 0x71D9, 0x71DA, 0x71DC, 0x71F8, 0x71FE, 0x7200, 0x7207,
1788+ 0x7208, 0x7209, 0x7213, 0x7217, 0x721A, 0x721D, 0x721F, 0x7224,
1789+ 0x722B, 0x722F, 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243,
1790+ 0x7245, 0x724E, 0x724F, 0x7250, 0x7253, 0x7255, 0x7256, 0x725A,
1791+ 0x725C, 0x725E, 0x7260, 0x7263, 0x7268, 0x726B, 0x726E, 0x726F,
1792+ 0x7271, 0x7277, 0x7278, 0x727B, 0x727C, 0x727F, 0x7284, 0x7289,
1793+ 0x728D, 0x728E, 0x7293, 0x729B, 0x72A8, 0x72AD, 0x72AE, 0x72B1,
1794+ 0x72B4, 0x72BE, 0x72C1, 0x72C7, 0x72C9, 0x72CC, 0x72D5, 0x72D6,
1795+ 0x72D8, 0x72DF, 0x72E5, 0x72F3, 0x72F4, 0x72FA, 0x72FB,
1796+};
1797+static const unsigned short euc_to_utf8_8FCB[] = {
1798+ 0x72FE, 0x7302, 0x7304, 0x7305, 0x7307, 0x730B, 0x730D,
1799+ 0x7312, 0x7313, 0x7318, 0x7319, 0x731E, 0x7322, 0x7324, 0x7327,
1800+ 0x7328, 0x732C, 0x7331, 0x7332, 0x7335, 0x733A, 0x733B, 0x733D,
1801+ 0x7343, 0x734D, 0x7350, 0x7352, 0x7356, 0x7358, 0x735D, 0x735E,
1802+ 0x735F, 0x7360, 0x7366, 0x7367, 0x7369, 0x736B, 0x736C, 0x736E,
1803+ 0x736F, 0x7371, 0x7377, 0x7379, 0x737C, 0x7380, 0x7381, 0x7383,
1804+ 0x7385, 0x7386, 0x738E, 0x7390, 0x7393, 0x7395, 0x7397, 0x7398,
1805+ 0x739C, 0x739E, 0x739F, 0x73A0, 0x73A2, 0x73A5, 0x73A6, 0x73AA,
1806+ 0x73AB, 0x73AD, 0x73B5, 0x73B7, 0x73B9, 0x73BC, 0x73BD, 0x73BF,
1807+ 0x73C5, 0x73C6, 0x73C9, 0x73CB, 0x73CC, 0x73CF, 0x73D2, 0x73D3,
1808+ 0x73D6, 0x73D9, 0x73DD, 0x73E1, 0x73E3, 0x73E6, 0x73E7, 0x73E9,
1809+ 0x73F4, 0x73F5, 0x73F7, 0x73F9, 0x73FA, 0x73FB, 0x73FD,
1810+};
1811+static const unsigned short euc_to_utf8_8FCC[] = {
1812+ 0x73FF, 0x7400, 0x7401, 0x7404, 0x7407, 0x740A, 0x7411,
1813+ 0x741A, 0x741B, 0x7424, 0x7426, 0x7428, 0x7429, 0x742A, 0x742B,
1814+ 0x742C, 0x742D, 0x742E, 0x742F, 0x7430, 0x7431, 0x7439, 0x7440,
1815+ 0x7443, 0x7444, 0x7446, 0x7447, 0x744B, 0x744D, 0x7451, 0x7452,
1816+ 0x7457, 0x745D, 0x7462, 0x7466, 0x7467, 0x7468, 0x746B, 0x746D,
1817+ 0x746E, 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, 0x7487,
1818+ 0x7489, 0x748F, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, 0x749A,
1819+ 0x749C, 0x749F, 0x74A0, 0x74A1, 0x74A3, 0x74A6, 0x74A8, 0x74A9,
1820+ 0x74AA, 0x74AB, 0x74AE, 0x74AF, 0x74B1, 0x74B2, 0x74B5, 0x74B9,
1821+ 0x74BB, 0x74BF, 0x74C8, 0x74C9, 0x74CC, 0x74D0, 0x74D3, 0x74D8,
1822+ 0x74DA, 0x74DB, 0x74DE, 0x74DF, 0x74E4, 0x74E8, 0x74EA, 0x74EB,
1823+ 0x74EF, 0x74F4, 0x74FA, 0x74FB, 0x74FC, 0x74FF, 0x7506,
1824+};
1825+static const unsigned short euc_to_utf8_8FCD[] = {
1826+ 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527,
1827+ 0x7529, 0x752A, 0x752F, 0x7536, 0x7539, 0x753D, 0x753E, 0x753F,
1828+ 0x7540, 0x7543, 0x7547, 0x7548, 0x754E, 0x7550, 0x7552, 0x7557,
1829+ 0x755E, 0x755F, 0x7561, 0x756F, 0x7571, 0x7579, 0x757A, 0x757B,
1830+ 0x757C, 0x757D, 0x757E, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593,
1831+ 0x7595, 0x7599, 0x759C, 0x75A2, 0x75A4, 0x75B4, 0x75BA, 0x75BF,
1832+ 0x75C0, 0x75C1, 0x75C4, 0x75C6, 0x75CC, 0x75CE, 0x75CF, 0x75D7,
1833+ 0x75DC, 0x75DF, 0x75E0, 0x75E1, 0x75E4, 0x75E7, 0x75EC, 0x75EE,
1834+ 0x75EF, 0x75F1, 0x75F9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607,
1835+ 0x7608, 0x760A, 0x760C, 0x760F, 0x7612, 0x7613, 0x7615, 0x7616,
1836+ 0x7619, 0x761B, 0x761C, 0x761D, 0x761E, 0x7623, 0x7625, 0x7626,
1837+ 0x7629, 0x762D, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639,
1838+};
1839+static const unsigned short euc_to_utf8_8FCE[] = {
1840+ 0x763A, 0x763C, 0x764A, 0x7640, 0x7641, 0x7643, 0x7644,
1841+ 0x7645, 0x7649, 0x764B, 0x7655, 0x7659, 0x765F, 0x7664, 0x7665,
1842+ 0x766D, 0x766E, 0x766F, 0x7671, 0x7674, 0x7681, 0x7685, 0x768C,
1843+ 0x768D, 0x7695, 0x769B, 0x769C, 0x769D, 0x769F, 0x76A0, 0x76A2,
1844+ 0x76A3, 0x76A4, 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76AA, 0x76AD,
1845+ 0x76BD, 0x76C1, 0x76C5, 0x76C9, 0x76CB, 0x76CC, 0x76CE, 0x76D4,
1846+ 0x76D9, 0x76E0, 0x76E6, 0x76E8, 0x76EC, 0x76F0, 0x76F1, 0x76F6,
1847+ 0x76F9, 0x76FC, 0x7700, 0x7706, 0x770A, 0x770E, 0x7712, 0x7714,
1848+ 0x7715, 0x7717, 0x7719, 0x771A, 0x771C, 0x7722, 0x7728, 0x772D,
1849+ 0x772E, 0x772F, 0x7734, 0x7735, 0x7736, 0x7739, 0x773D, 0x773E,
1850+ 0x7742, 0x7745, 0x7746, 0x774A, 0x774D, 0x774E, 0x774F, 0x7752,
1851+ 0x7756, 0x7757, 0x775C, 0x775E, 0x775F, 0x7760, 0x7762,
1852+};
1853+static const unsigned short euc_to_utf8_8FCF[] = {
1854+ 0x7764, 0x7767, 0x776A, 0x776C, 0x7770, 0x7772, 0x7773,
1855+ 0x7774, 0x777A, 0x777D, 0x7780, 0x7784, 0x778C, 0x778D, 0x7794,
1856+ 0x7795, 0x7796, 0x779A, 0x779F, 0x77A2, 0x77A7, 0x77AA, 0x77AE,
1857+ 0x77AF, 0x77B1, 0x77B5, 0x77BE, 0x77C3, 0x77C9, 0x77D1, 0x77D2,
1858+ 0x77D5, 0x77D9, 0x77DE, 0x77DF, 0x77E0, 0x77E4, 0x77E6, 0x77EA,
1859+ 0x77EC, 0x77F0, 0x77F1, 0x77F4, 0x77F8, 0x77FB, 0x7805, 0x7806,
1860+ 0x7809, 0x780D, 0x780E, 0x7811, 0x781D, 0x7821, 0x7822, 0x7823,
1861+ 0x782D, 0x782E, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847,
1862+ 0x7848, 0x784C, 0x784E, 0x7852, 0x785C, 0x785E, 0x7860, 0x7861,
1863+ 0x7863, 0x7864, 0x7868, 0x786A, 0x786E, 0x787A, 0x787E, 0x788A,
1864+ 0x788F, 0x7894, 0x7898, 0x78A1, 0x789D, 0x789E, 0x789F, 0x78A4,
1865+ 0x78A8, 0x78AC, 0x78AD, 0x78B0, 0x78B1, 0x78B2, 0x78B3,
1866+};
1867+static const unsigned short euc_to_utf8_8FD0[] = {
1868+ 0x78BB, 0x78BD, 0x78BF, 0x78C7, 0x78C8, 0x78C9, 0x78CC,
1869+ 0x78CE, 0x78D2, 0x78D3, 0x78D5, 0x78D6, 0x78E4, 0x78DB, 0x78DF,
1870+ 0x78E0, 0x78E1, 0x78E6, 0x78EA, 0x78F2, 0x78F3, 0x7900, 0x78F6,
1871+ 0x78F7, 0x78FA, 0x78FB, 0x78FF, 0x7906, 0x790C, 0x7910, 0x791A,
1872+ 0x791C, 0x791E, 0x791F, 0x7920, 0x7925, 0x7927, 0x7929, 0x792D,
1873+ 0x7931, 0x7934, 0x7935, 0x793B, 0x793D, 0x793F, 0x7944, 0x7945,
1874+ 0x7946, 0x794A, 0x794B, 0x794F, 0x7951, 0x7954, 0x7958, 0x795B,
1875+ 0x795C, 0x7967, 0x7969, 0x796B, 0x7972, 0x7979, 0x797B, 0x797C,
1876+ 0x797E, 0x798B, 0x798C, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996,
1877+ 0x7998, 0x799B, 0x799C, 0x79A1, 0x79A8, 0x79A9, 0x79AB, 0x79AF,
1878+ 0x79B1, 0x79B4, 0x79B8, 0x79BB, 0x79C2, 0x79C4, 0x79C7, 0x79C8,
1879+ 0x79CA, 0x79CF, 0x79D4, 0x79D6, 0x79DA, 0x79DD, 0x79DE,
1880+};
1881+static const unsigned short euc_to_utf8_8FD1[] = {
1882+ 0x79E0, 0x79E2, 0x79E5, 0x79EA, 0x79EB, 0x79ED, 0x79F1,
1883+ 0x79F8, 0x79FC, 0x7A02, 0x7A03, 0x7A07, 0x7A09, 0x7A0A, 0x7A0C,
1884+ 0x7A11, 0x7A15, 0x7A1B, 0x7A1E, 0x7A21, 0x7A27, 0x7A2B, 0x7A2D,
1885+ 0x7A2F, 0x7A30, 0x7A34, 0x7A35, 0x7A38, 0x7A39, 0x7A3A, 0x7A44,
1886+ 0x7A45, 0x7A47, 0x7A48, 0x7A4C, 0x7A55, 0x7A56, 0x7A59, 0x7A5C,
1887+ 0x7A5D, 0x7A5F, 0x7A60, 0x7A65, 0x7A67, 0x7A6A, 0x7A6D, 0x7A75,
1888+ 0x7A78, 0x7A7E, 0x7A80, 0x7A82, 0x7A85, 0x7A86, 0x7A8A, 0x7A8B,
1889+ 0x7A90, 0x7A91, 0x7A94, 0x7A9E, 0x7AA0, 0x7AA3, 0x7AAC, 0x7AB3,
1890+ 0x7AB5, 0x7AB9, 0x7ABB, 0x7ABC, 0x7AC6, 0x7AC9, 0x7ACC, 0x7ACE,
1891+ 0x7AD1, 0x7ADB, 0x7AE8, 0x7AE9, 0x7AEB, 0x7AEC, 0x7AF1, 0x7AF4,
1892+ 0x7AFB, 0x7AFD, 0x7AFE, 0x7B07, 0x7B14, 0x7B1F, 0x7B23, 0x7B27,
1893+ 0x7B29, 0x7B2A, 0x7B2B, 0x7B2D, 0x7B2E, 0x7B2F, 0x7B30,
1894+};
1895+static const unsigned short euc_to_utf8_8FD2[] = {
1896+ 0x7B31, 0x7B34, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B47,
1897+ 0x7B4E, 0x7B55, 0x7B60, 0x7B64, 0x7B66, 0x7B69, 0x7B6A, 0x7B6D,
1898+ 0x7B6F, 0x7B72, 0x7B73, 0x7B77, 0x7B84, 0x7B89, 0x7B8E, 0x7B90,
1899+ 0x7B91, 0x7B96, 0x7B9B, 0x7B9E, 0x7BA0, 0x7BA5, 0x7BAC, 0x7BAF,
1900+ 0x7BB0, 0x7BB2, 0x7BB5, 0x7BB6, 0x7BBA, 0x7BBB, 0x7BBC, 0x7BBD,
1901+ 0x7BC2, 0x7BC5, 0x7BC8, 0x7BCA, 0x7BD4, 0x7BD6, 0x7BD7, 0x7BD9,
1902+ 0x7BDA, 0x7BDB, 0x7BE8, 0x7BEA, 0x7BF2, 0x7BF4, 0x7BF5, 0x7BF8,
1903+ 0x7BF9, 0x7BFA, 0x7BFC, 0x7BFE, 0x7C01, 0x7C02, 0x7C03, 0x7C04,
1904+ 0x7C06, 0x7C09, 0x7C0B, 0x7C0C, 0x7C0E, 0x7C0F, 0x7C19, 0x7C1B,
1905+ 0x7C20, 0x7C25, 0x7C26, 0x7C28, 0x7C2C, 0x7C31, 0x7C33, 0x7C34,
1906+ 0x7C36, 0x7C39, 0x7C3A, 0x7C46, 0x7C4A, 0x7C55, 0x7C51, 0x7C52,
1907+ 0x7C53, 0x7C59, 0x7C5A, 0x7C5B, 0x7C5C, 0x7C5D, 0x7C5E,
1908+};
1909+static const unsigned short euc_to_utf8_8FD3[] = {
1910+ 0x7C61, 0x7C63, 0x7C67, 0x7C69, 0x7C6D, 0x7C6E, 0x7C70,
1911+ 0x7C72, 0x7C79, 0x7C7C, 0x7C7D, 0x7C86, 0x7C87, 0x7C8F, 0x7C94,
1912+ 0x7C9E, 0x7CA0, 0x7CA6, 0x7CB0, 0x7CB6, 0x7CB7, 0x7CBA, 0x7CBB,
1913+ 0x7CBC, 0x7CBF, 0x7CC4, 0x7CC7, 0x7CC8, 0x7CC9, 0x7CCD, 0x7CCF,
1914+ 0x7CD3, 0x7CD4, 0x7CD5, 0x7CD7, 0x7CD9, 0x7CDA, 0x7CDD, 0x7CE6,
1915+ 0x7CE9, 0x7CEB, 0x7CF5, 0x7D03, 0x7D07, 0x7D08, 0x7D09, 0x7D0F,
1916+ 0x7D11, 0x7D12, 0x7D13, 0x7D16, 0x7D1D, 0x7D1E, 0x7D23, 0x7D26,
1917+ 0x7D2A, 0x7D2D, 0x7D31, 0x7D3C, 0x7D3D, 0x7D3E, 0x7D40, 0x7D41,
1918+ 0x7D47, 0x7D48, 0x7D4D, 0x7D51, 0x7D53, 0x7D57, 0x7D59, 0x7D5A,
1919+ 0x7D5C, 0x7D5D, 0x7D65, 0x7D67, 0x7D6A, 0x7D70, 0x7D78, 0x7D7A,
1920+ 0x7D7B, 0x7D7F, 0x7D81, 0x7D82, 0x7D83, 0x7D85, 0x7D86, 0x7D88,
1921+ 0x7D8B, 0x7D8C, 0x7D8D, 0x7D91, 0x7D96, 0x7D97, 0x7D9D,
1922+};
1923+static const unsigned short euc_to_utf8_8FD4[] = {
1924+ 0x7D9E, 0x7DA6, 0x7DA7, 0x7DAA, 0x7DB3, 0x7DB6, 0x7DB7,
1925+ 0x7DB9, 0x7DC2, 0x7DC3, 0x7DC4, 0x7DC5, 0x7DC6, 0x7DCC, 0x7DCD,
1926+ 0x7DCE, 0x7DD7, 0x7DD9, 0x7E00, 0x7DE2, 0x7DE5, 0x7DE6, 0x7DEA,
1927+ 0x7DEB, 0x7DED, 0x7DF1, 0x7DF5, 0x7DF6, 0x7DF9, 0x7DFA, 0x7E08,
1928+ 0x7E10, 0x7E11, 0x7E15, 0x7E17, 0x7E1C, 0x7E1D, 0x7E20, 0x7E27,
1929+ 0x7E28, 0x7E2C, 0x7E2D, 0x7E2F, 0x7E33, 0x7E36, 0x7E3F, 0x7E44,
1930+ 0x7E45, 0x7E47, 0x7E4E, 0x7E50, 0x7E52, 0x7E58, 0x7E5F, 0x7E61,
1931+ 0x7E62, 0x7E65, 0x7E6B, 0x7E6E, 0x7E6F, 0x7E73, 0x7E78, 0x7E7E,
1932+ 0x7E81, 0x7E86, 0x7E87, 0x7E8A, 0x7E8D, 0x7E91, 0x7E95, 0x7E98,
1933+ 0x7E9A, 0x7E9D, 0x7E9E, 0x7F3C, 0x7F3B, 0x7F3D, 0x7F3E, 0x7F3F,
1934+ 0x7F43, 0x7F44, 0x7F47, 0x7F4F, 0x7F52, 0x7F53, 0x7F5B, 0x7F5C,
1935+ 0x7F5D, 0x7F61, 0x7F63, 0x7F64, 0x7F65, 0x7F66, 0x7F6D,
1936+};
1937+static const unsigned short euc_to_utf8_8FD5[] = {
1938+ 0x7F71, 0x7F7D, 0x7F7E, 0x7F7F, 0x7F80, 0x7F8B, 0x7F8D,
1939+ 0x7F8F, 0x7F90, 0x7F91, 0x7F96, 0x7F97, 0x7F9C, 0x7FA1, 0x7FA2,
1940+ 0x7FA6, 0x7FAA, 0x7FAD, 0x7FB4, 0x7FBC, 0x7FBF, 0x7FC0, 0x7FC3,
1941+ 0x7FC8, 0x7FCE, 0x7FCF, 0x7FDB, 0x7FDF, 0x7FE3, 0x7FE5, 0x7FE8,
1942+ 0x7FEC, 0x7FEE, 0x7FEF, 0x7FF2, 0x7FFA, 0x7FFD, 0x7FFE, 0x7FFF,
1943+ 0x8007, 0x8008, 0x800A, 0x800D, 0x800E, 0x800F, 0x8011, 0x8013,
1944+ 0x8014, 0x8016, 0x801D, 0x801E, 0x801F, 0x8020, 0x8024, 0x8026,
1945+ 0x802C, 0x802E, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803A,
1946+ 0x803C, 0x803E, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806D,
1947+ 0x8071, 0x8075, 0x8081, 0x8088, 0x808E, 0x809C, 0x809E, 0x80A6,
1948+ 0x80A7, 0x80AB, 0x80B8, 0x80B9, 0x80C8, 0x80CD, 0x80CF, 0x80D2,
1949+ 0x80D4, 0x80D5, 0x80D7, 0x80D8, 0x80E0, 0x80ED, 0x80EE,
1950+};
1951+static const unsigned short euc_to_utf8_8FD6[] = {
1952+ 0x80F0, 0x80F2, 0x80F3, 0x80F6, 0x80F9, 0x80FA, 0x80FE,
1953+ 0x8103, 0x810B, 0x8116, 0x8117, 0x8118, 0x811C, 0x811E, 0x8120,
1954+ 0x8124, 0x8127, 0x812C, 0x8130, 0x8135, 0x813A, 0x813C, 0x8145,
1955+ 0x8147, 0x814A, 0x814C, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167,
1956+ 0x8168, 0x8169, 0x816D, 0x816F, 0x8177, 0x8181, 0x8190, 0x8184,
1957+ 0x8185, 0x8186, 0x818B, 0x818E, 0x8196, 0x8198, 0x819B, 0x819E,
1958+ 0x81A2, 0x81AE, 0x81B2, 0x81B4, 0x81BB, 0x81CB, 0x81C3, 0x81C5,
1959+ 0x81CA, 0x81CE, 0x81CF, 0x81D5, 0x81D7, 0x81DB, 0x81DD, 0x81DE,
1960+ 0x81E1, 0x81E4, 0x81EB, 0x81EC, 0x81F0, 0x81F1, 0x81F2, 0x81F5,
1961+ 0x81F6, 0x81F8, 0x81F9, 0x81FD, 0x81FF, 0x8200, 0x8203, 0x820F,
1962+ 0x8213, 0x8214, 0x8219, 0x821A, 0x821D, 0x8221, 0x8222, 0x8228,
1963+ 0x8232, 0x8234, 0x823A, 0x8243, 0x8244, 0x8245, 0x8246,
1964+};
1965+static const unsigned short euc_to_utf8_8FD7[] = {
1966+ 0x824B, 0x824E, 0x824F, 0x8251, 0x8256, 0x825C, 0x8260,
1967+ 0x8263, 0x8267, 0x826D, 0x8274, 0x827B, 0x827D, 0x827F, 0x8280,
1968+ 0x8281, 0x8283, 0x8284, 0x8287, 0x8289, 0x828A, 0x828E, 0x8291,
1969+ 0x8294, 0x8296, 0x8298, 0x829A, 0x829B, 0x82A0, 0x82A1, 0x82A3,
1970+ 0x82A4, 0x82A7, 0x82A8, 0x82A9, 0x82AA, 0x82AE, 0x82B0, 0x82B2,
1971+ 0x82B4, 0x82B7, 0x82BA, 0x82BC, 0x82BE, 0x82BF, 0x82C6, 0x82D0,
1972+ 0x82D5, 0x82DA, 0x82E0, 0x82E2, 0x82E4, 0x82E8, 0x82EA, 0x82ED,
1973+ 0x82EF, 0x82F6, 0x82F7, 0x82FD, 0x82FE, 0x8300, 0x8301, 0x8307,
1974+ 0x8308, 0x830A, 0x830B, 0x8354, 0x831B, 0x831D, 0x831E, 0x831F,
1975+ 0x8321, 0x8322, 0x832C, 0x832D, 0x832E, 0x8330, 0x8333, 0x8337,
1976+ 0x833A, 0x833C, 0x833D, 0x8342, 0x8343, 0x8344, 0x8347, 0x834D,
1977+ 0x834E, 0x8351, 0x8355, 0x8356, 0x8357, 0x8370, 0x8378,
1978+};
1979+static const unsigned short euc_to_utf8_8FD8[] = {
1980+ 0x837D, 0x837F, 0x8380, 0x8382, 0x8384, 0x8386, 0x838D,
1981+ 0x8392, 0x8394, 0x8395, 0x8398, 0x8399, 0x839B, 0x839C, 0x839D,
1982+ 0x83A6, 0x83A7, 0x83A9, 0x83AC, 0x83BE, 0x83BF, 0x83C0, 0x83C7,
1983+ 0x83C9, 0x83CF, 0x83D0, 0x83D1, 0x83D4, 0x83DD, 0x8353, 0x83E8,
1984+ 0x83EA, 0x83F6, 0x83F8, 0x83F9, 0x83FC, 0x8401, 0x8406, 0x840A,
1985+ 0x840F, 0x8411, 0x8415, 0x8419, 0x83AD, 0x842F, 0x8439, 0x8445,
1986+ 0x8447, 0x8448, 0x844A, 0x844D, 0x844F, 0x8451, 0x8452, 0x8456,
1987+ 0x8458, 0x8459, 0x845A, 0x845C, 0x8460, 0x8464, 0x8465, 0x8467,
1988+ 0x846A, 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847C, 0x847D,
1989+ 0x8481, 0x8485, 0x8492, 0x8493, 0x8495, 0x849E, 0x84A6, 0x84A8,
1990+ 0x84A9, 0x84AA, 0x84AF, 0x84B1, 0x84B4, 0x84BA, 0x84BD, 0x84BE,
1991+ 0x84C0, 0x84C2, 0x84C7, 0x84C8, 0x84CC, 0x84CF, 0x84D3,
1992+};
1993+static const unsigned short euc_to_utf8_8FD9[] = {
1994+ 0x84DC, 0x84E7, 0x84EA, 0x84EF, 0x84F0, 0x84F1, 0x84F2,
1995+ 0x84F7, 0x8532, 0x84FA, 0x84FB, 0x84FD, 0x8502, 0x8503, 0x8507,
1996+ 0x850C, 0x850E, 0x8510, 0x851C, 0x851E, 0x8522, 0x8523, 0x8524,
1997+ 0x8525, 0x8527, 0x852A, 0x852B, 0x852F, 0x8533, 0x8534, 0x8536,
1998+ 0x853F, 0x8546, 0x854F, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556,
1999+ 0x8559, 0x855C, 0x855D, 0x855E, 0x855F, 0x8560, 0x8561, 0x8562,
2000+ 0x8564, 0x856B, 0x856F, 0x8579, 0x857A, 0x857B, 0x857D, 0x857F,
2001+ 0x8581, 0x8585, 0x8586, 0x8589, 0x858B, 0x858C, 0x858F, 0x8593,
2002+ 0x8598, 0x859D, 0x859F, 0x85A0, 0x85A2, 0x85A5, 0x85A7, 0x85B4,
2003+ 0x85B6, 0x85B7, 0x85B8, 0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C2,
2004+ 0x85C7, 0x85CA, 0x85CB, 0x85CE, 0x85AD, 0x85D8, 0x85DA, 0x85DF,
2005+ 0x85E0, 0x85E6, 0x85E8, 0x85ED, 0x85F3, 0x85F6, 0x85FC,
2006+};
2007+static const unsigned short euc_to_utf8_8FDA[] = {
2008+ 0x85FF, 0x8600, 0x8604, 0x8605, 0x860D, 0x860E, 0x8610,
2009+ 0x8611, 0x8612, 0x8618, 0x8619, 0x861B, 0x861E, 0x8621, 0x8627,
2010+ 0x8629, 0x8636, 0x8638, 0x863A, 0x863C, 0x863D, 0x8640, 0x8642,
2011+ 0x8646, 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865D,
2012+ 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866C, 0x866F,
2013+ 0x8675, 0x8676, 0x8677, 0x867A, 0x868D, 0x8691, 0x8696, 0x8698,
2014+ 0x869A, 0x869C, 0x86A1, 0x86A6, 0x86A7, 0x86A8, 0x86AD, 0x86B1,
2015+ 0x86B3, 0x86B4, 0x86B5, 0x86B7, 0x86B8, 0x86B9, 0x86BF, 0x86C0,
2016+ 0x86C1, 0x86C3, 0x86C5, 0x86D1, 0x86D2, 0x86D5, 0x86D7, 0x86DA,
2017+ 0x86DC, 0x86E0, 0x86E3, 0x86E5, 0x86E7, 0x8688, 0x86FA, 0x86FC,
2018+ 0x86FD, 0x8704, 0x8705, 0x8707, 0x870B, 0x870E, 0x870F, 0x8710,
2019+ 0x8713, 0x8714, 0x8719, 0x871E, 0x871F, 0x8721, 0x8723,
2020+};
2021+static const unsigned short euc_to_utf8_8FDB[] = {
2022+ 0x8728, 0x872E, 0x872F, 0x8731, 0x8732, 0x8739, 0x873A,
2023+ 0x873C, 0x873D, 0x873E, 0x8740, 0x8743, 0x8745, 0x874D, 0x8758,
2024+ 0x875D, 0x8761, 0x8764, 0x8765, 0x876F, 0x8771, 0x8772, 0x877B,
2025+ 0x8783, 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878B,
2026+ 0x878C, 0x8790, 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879E,
2027+ 0x87A0, 0x87A3, 0x87A7, 0x87AC, 0x87AD, 0x87AE, 0x87B1, 0x87B5,
2028+ 0x87BE, 0x87BF, 0x87C1, 0x87C8, 0x87C9, 0x87CA, 0x87CE, 0x87D5,
2029+ 0x87D6, 0x87D9, 0x87DA, 0x87DC, 0x87DF, 0x87E2, 0x87E3, 0x87E4,
2030+ 0x87EA, 0x87EB, 0x87ED, 0x87F1, 0x87F3, 0x87F8, 0x87FA, 0x87FF,
2031+ 0x8801, 0x8803, 0x8806, 0x8809, 0x880A, 0x880B, 0x8810, 0x8819,
2032+ 0x8812, 0x8813, 0x8814, 0x8818, 0x881A, 0x881B, 0x881C, 0x881E,
2033+ 0x881F, 0x8828, 0x882D, 0x882E, 0x8830, 0x8832, 0x8835,
2034+};
2035+static const unsigned short euc_to_utf8_8FDC[] = {
2036+ 0x883A, 0x883C, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849,
2037+ 0x884A, 0x884B, 0x884E, 0x8851, 0x8855, 0x8856, 0x8858, 0x885A,
2038+ 0x885C, 0x885F, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, 0x887B,
2039+ 0x8880, 0x8898, 0x889A, 0x889B, 0x889C, 0x889F, 0x88A0, 0x88A8,
2040+ 0x88AA, 0x88BA, 0x88BD, 0x88BE, 0x88C0, 0x88CA, 0x88CB, 0x88CC,
2041+ 0x88CD, 0x88CE, 0x88D1, 0x88D2, 0x88D3, 0x88DB, 0x88DE, 0x88E7,
2042+ 0x88EF, 0x88F0, 0x88F1, 0x88F5, 0x88F7, 0x8901, 0x8906, 0x890D,
2043+ 0x890E, 0x890F, 0x8915, 0x8916, 0x8918, 0x8919, 0x891A, 0x891C,
2044+ 0x8920, 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935,
2045+ 0x8939, 0x893A, 0x893E, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949,
2046+ 0x894F, 0x8952, 0x8957, 0x895A, 0x895B, 0x895C, 0x8961, 0x8962,
2047+ 0x8963, 0x896B, 0x896E, 0x8970, 0x8973, 0x8975, 0x897A,
2048+};
2049+static const unsigned short euc_to_utf8_8FDD[] = {
2050+ 0x897B, 0x897C, 0x897D, 0x8989, 0x898D, 0x8990, 0x8994,
2051+ 0x8995, 0x899B, 0x899C, 0x899F, 0x89A0, 0x89A5, 0x89B0, 0x89B4,
2052+ 0x89B5, 0x89B6, 0x89B7, 0x89BC, 0x89D4, 0x89D5, 0x89D6, 0x89D7,
2053+ 0x89D8, 0x89E5, 0x89E9, 0x89EB, 0x89ED, 0x89F1, 0x89F3, 0x89F6,
2054+ 0x89F9, 0x89FD, 0x89FF, 0x8A04, 0x8A05, 0x8A07, 0x8A0F, 0x8A11,
2055+ 0x8A12, 0x8A14, 0x8A15, 0x8A1E, 0x8A20, 0x8A22, 0x8A24, 0x8A26,
2056+ 0x8A2B, 0x8A2C, 0x8A2F, 0x8A35, 0x8A37, 0x8A3D, 0x8A3E, 0x8A40,
2057+ 0x8A43, 0x8A45, 0x8A47, 0x8A49, 0x8A4D, 0x8A4E, 0x8A53, 0x8A56,
2058+ 0x8A57, 0x8A58, 0x8A5C, 0x8A5D, 0x8A61, 0x8A65, 0x8A67, 0x8A75,
2059+ 0x8A76, 0x8A77, 0x8A79, 0x8A7A, 0x8A7B, 0x8A7E, 0x8A7F, 0x8A80,
2060+ 0x8A83, 0x8A86, 0x8A8B, 0x8A8F, 0x8A90, 0x8A92, 0x8A96, 0x8A97,
2061+ 0x8A99, 0x8A9F, 0x8AA7, 0x8AA9, 0x8AAE, 0x8AAF, 0x8AB3,
2062+};
2063+static const unsigned short euc_to_utf8_8FDE[] = {
2064+ 0x8AB6, 0x8AB7, 0x8ABB, 0x8ABE, 0x8AC3, 0x8AC6, 0x8AC8,
2065+ 0x8AC9, 0x8ACA, 0x8AD1, 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD7, 0x8ADD,
2066+ 0x8ADF, 0x8AEC, 0x8AF0, 0x8AF4, 0x8AF5, 0x8AF6, 0x8AFC, 0x8AFF,
2067+ 0x8B05, 0x8B06, 0x8B0B, 0x8B11, 0x8B1C, 0x8B1E, 0x8B1F, 0x8B0A,
2068+ 0x8B2D, 0x8B30, 0x8B37, 0x8B3C, 0x8B42, 0x8B43, 0x8B44, 0x8B45,
2069+ 0x8B46, 0x8B48, 0x8B52, 0x8B53, 0x8B54, 0x8B59, 0x8B4D, 0x8B5E,
2070+ 0x8B63, 0x8B6D, 0x8B76, 0x8B78, 0x8B79, 0x8B7C, 0x8B7E, 0x8B81,
2071+ 0x8B84, 0x8B85, 0x8B8B, 0x8B8D, 0x8B8F, 0x8B94, 0x8B95, 0x8B9C,
2072+ 0x8B9E, 0x8B9F, 0x8C38, 0x8C39, 0x8C3D, 0x8C3E, 0x8C45, 0x8C47,
2073+ 0x8C49, 0x8C4B, 0x8C4F, 0x8C51, 0x8C53, 0x8C54, 0x8C57, 0x8C58,
2074+ 0x8C5B, 0x8C5D, 0x8C59, 0x8C63, 0x8C64, 0x8C66, 0x8C68, 0x8C69,
2075+ 0x8C6D, 0x8C73, 0x8C75, 0x8C76, 0x8C7B, 0x8C7E, 0x8C86,
2076+};
2077+static const unsigned short euc_to_utf8_8FDF[] = {
2078+ 0x8C87, 0x8C8B, 0x8C90, 0x8C92, 0x8C93, 0x8C99, 0x8C9B,
2079+ 0x8C9C, 0x8CA4, 0x8CB9, 0x8CBA, 0x8CC5, 0x8CC6, 0x8CC9, 0x8CCB,
2080+ 0x8CCF, 0x8CD6, 0x8CD5, 0x8CD9, 0x8CDD, 0x8CE1, 0x8CE8, 0x8CEC,
2081+ 0x8CEF, 0x8CF0, 0x8CF2, 0x8CF5, 0x8CF7, 0x8CF8, 0x8CFE, 0x8CFF,
2082+ 0x8D01, 0x8D03, 0x8D09, 0x8D12, 0x8D17, 0x8D1B, 0x8D65, 0x8D69,
2083+ 0x8D6C, 0x8D6E, 0x8D7F, 0x8D82, 0x8D84, 0x8D88, 0x8D8D, 0x8D90,
2084+ 0x8D91, 0x8D95, 0x8D9E, 0x8D9F, 0x8DA0, 0x8DA6, 0x8DAB, 0x8DAC,
2085+ 0x8DAF, 0x8DB2, 0x8DB5, 0x8DB7, 0x8DB9, 0x8DBB, 0x8DC0, 0x8DC5,
2086+ 0x8DC6, 0x8DC7, 0x8DC8, 0x8DCA, 0x8DCE, 0x8DD1, 0x8DD4, 0x8DD5,
2087+ 0x8DD7, 0x8DD9, 0x8DE4, 0x8DE5, 0x8DE7, 0x8DEC, 0x8DF0, 0x8DBC,
2088+ 0x8DF1, 0x8DF2, 0x8DF4, 0x8DFD, 0x8E01, 0x8E04, 0x8E05, 0x8E06,
2089+ 0x8E0B, 0x8E11, 0x8E14, 0x8E16, 0x8E20, 0x8E21, 0x8E22,
2090+};
2091+static const unsigned short euc_to_utf8_8FE0[] = {
2092+ 0x8E23, 0x8E26, 0x8E27, 0x8E31, 0x8E33, 0x8E36, 0x8E37,
2093+ 0x8E38, 0x8E39, 0x8E3D, 0x8E40, 0x8E41, 0x8E4B, 0x8E4D, 0x8E4E,
2094+ 0x8E4F, 0x8E54, 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E61, 0x8E62,
2095+ 0x8E69, 0x8E6C, 0x8E6D, 0x8E6F, 0x8E70, 0x8E71, 0x8E79, 0x8E7A,
2096+ 0x8E7B, 0x8E82, 0x8E83, 0x8E89, 0x8E90, 0x8E92, 0x8E95, 0x8E9A,
2097+ 0x8E9B, 0x8E9D, 0x8E9E, 0x8EA2, 0x8EA7, 0x8EA9, 0x8EAD, 0x8EAE,
2098+ 0x8EB3, 0x8EB5, 0x8EBA, 0x8EBB, 0x8EC0, 0x8EC1, 0x8EC3, 0x8EC4,
2099+ 0x8EC7, 0x8ECF, 0x8ED1, 0x8ED4, 0x8EDC, 0x8EE8, 0x8EEE, 0x8EF0,
2100+ 0x8EF1, 0x8EF7, 0x8EF9, 0x8EFA, 0x8EED, 0x8F00, 0x8F02, 0x8F07,
2101+ 0x8F08, 0x8F0F, 0x8F10, 0x8F16, 0x8F17, 0x8F18, 0x8F1E, 0x8F20,
2102+ 0x8F21, 0x8F23, 0x8F25, 0x8F27, 0x8F28, 0x8F2C, 0x8F2D, 0x8F2E,
2103+ 0x8F34, 0x8F35, 0x8F36, 0x8F37, 0x8F3A, 0x8F40, 0x8F41,
2104+};
2105+static const unsigned short euc_to_utf8_8FE1[] = {
2106+ 0x8F43, 0x8F47, 0x8F4F, 0x8F51, 0x8F52, 0x8F53, 0x8F54,
2107+ 0x8F55, 0x8F58, 0x8F5D, 0x8F5E, 0x8F65, 0x8F9D, 0x8FA0, 0x8FA1,
2108+ 0x8FA4, 0x8FA5, 0x8FA6, 0x8FB5, 0x8FB6, 0x8FB8, 0x8FBE, 0x8FC0,
2109+ 0x8FC1, 0x8FC6, 0x8FCA, 0x8FCB, 0x8FCD, 0x8FD0, 0x8FD2, 0x8FD3,
2110+ 0x8FD5, 0x8FE0, 0x8FE3, 0x8FE4, 0x8FE8, 0x8FEE, 0x8FF1, 0x8FF5,
2111+ 0x8FF6, 0x8FFB, 0x8FFE, 0x9002, 0x9004, 0x9008, 0x900C, 0x9018,
2112+ 0x901B, 0x9028, 0x9029, 0x902F, 0x902A, 0x902C, 0x902D, 0x9033,
2113+ 0x9034, 0x9037, 0x903F, 0x9043, 0x9044, 0x904C, 0x905B, 0x905D,
2114+ 0x9062, 0x9066, 0x9067, 0x906C, 0x9070, 0x9074, 0x9079, 0x9085,
2115+ 0x9088, 0x908B, 0x908C, 0x908E, 0x9090, 0x9095, 0x9097, 0x9098,
2116+ 0x9099, 0x909B, 0x90A0, 0x90A1, 0x90A2, 0x90A5, 0x90B0, 0x90B2,
2117+ 0x90B3, 0x90B4, 0x90B6, 0x90BD, 0x90CC, 0x90BE, 0x90C3,
2118+};
2119+static const unsigned short euc_to_utf8_8FE2[] = {
2120+ 0x90C4, 0x90C5, 0x90C7, 0x90C8, 0x90D5, 0x90D7, 0x90D8,
2121+ 0x90D9, 0x90DC, 0x90DD, 0x90DF, 0x90E5, 0x90D2, 0x90F6, 0x90EB,
2122+ 0x90EF, 0x90F0, 0x90F4, 0x90FE, 0x90FF, 0x9100, 0x9104, 0x9105,
2123+ 0x9106, 0x9108, 0x910D, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118,
2124+ 0x911A, 0x911C, 0x911E, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127,
2125+ 0x9129, 0x912E, 0x912F, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139,
2126+ 0x913A, 0x913C, 0x913D, 0x9143, 0x9147, 0x9148, 0x914F, 0x9153,
2127+ 0x9157, 0x9159, 0x915A, 0x915B, 0x9161, 0x9164, 0x9167, 0x916D,
2128+ 0x9174, 0x9179, 0x917A, 0x917B, 0x9181, 0x9183, 0x9185, 0x9186,
2129+ 0x918A, 0x918E, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919E,
2130+ 0x91A1, 0x91A6, 0x91A8, 0x91AC, 0x91AD, 0x91AE, 0x91B0, 0x91B1,
2131+ 0x91B2, 0x91B3, 0x91B6, 0x91BB, 0x91BC, 0x91BD, 0x91BF,
2132+};
2133+static const unsigned short euc_to_utf8_8FE3[] = {
2134+ 0x91C2, 0x91C3, 0x91C5, 0x91D3, 0x91D4, 0x91D7, 0x91D9,
2135+ 0x91DA, 0x91DE, 0x91E4, 0x91E5, 0x91E9, 0x91EA, 0x91EC, 0x91ED,
2136+ 0x91EE, 0x91EF, 0x91F0, 0x91F1, 0x91F7, 0x91F9, 0x91FB, 0x91FD,
2137+ 0x9200, 0x9201, 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920A,
2138+ 0x920C, 0x9210, 0x9212, 0x9213, 0x9216, 0x9218, 0x921C, 0x921D,
2139+ 0x9223, 0x9224, 0x9225, 0x9226, 0x9228, 0x922E, 0x922F, 0x9230,
2140+ 0x9233, 0x9235, 0x9236, 0x9238, 0x9239, 0x923A, 0x923C, 0x923E,
2141+ 0x9240, 0x9242, 0x9243, 0x9246, 0x9247, 0x924A, 0x924D, 0x924E,
2142+ 0x924F, 0x9251, 0x9258, 0x9259, 0x925C, 0x925D, 0x9260, 0x9261,
2143+ 0x9265, 0x9267, 0x9268, 0x9269, 0x926E, 0x926F, 0x9270, 0x9275,
2144+ 0x9276, 0x9277, 0x9278, 0x9279, 0x927B, 0x927C, 0x927D, 0x927F,
2145+ 0x9288, 0x9289, 0x928A, 0x928D, 0x928E, 0x9292, 0x9297,
2146+};
2147+static const unsigned short euc_to_utf8_8FE4[] = {
2148+ 0x9299, 0x929F, 0x92A0, 0x92A4, 0x92A5, 0x92A7, 0x92A8,
2149+ 0x92AB, 0x92AF, 0x92B2, 0x92B6, 0x92B8, 0x92BA, 0x92BB, 0x92BC,
2150+ 0x92BD, 0x92BF, 0x92C0, 0x92C1, 0x92C2, 0x92C3, 0x92C5, 0x92C6,
2151+ 0x92C7, 0x92C8, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92D0, 0x92D3,
2152+ 0x92D5, 0x92D7, 0x92D8, 0x92D9, 0x92DC, 0x92DD, 0x92DF, 0x92E0,
2153+ 0x92E1, 0x92E3, 0x92E5, 0x92E7, 0x92E8, 0x92EC, 0x92EE, 0x92F0,
2154+ 0x92F9, 0x92FB, 0x92FF, 0x9300, 0x9302, 0x9308, 0x930D, 0x9311,
2155+ 0x9314, 0x9315, 0x931C, 0x931D, 0x931E, 0x931F, 0x9321, 0x9324,
2156+ 0x9325, 0x9327, 0x9329, 0x932A, 0x9333, 0x9334, 0x9336, 0x9337,
2157+ 0x9347, 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357,
2158+ 0x9358, 0x935A, 0x935E, 0x9364, 0x9365, 0x9367, 0x9369, 0x936A,
2159+ 0x936D, 0x936F, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376,
2160+};
2161+static const unsigned short euc_to_utf8_8FE5[] = {
2162+ 0x937A, 0x937D, 0x937F, 0x9380, 0x9381, 0x9382, 0x9388,
2163+ 0x938A, 0x938B, 0x938D, 0x938F, 0x9392, 0x9395, 0x9398, 0x939B,
2164+ 0x939E, 0x93A1, 0x93A3, 0x93A4, 0x93A6, 0x93A8, 0x93AB, 0x93B4,
2165+ 0x93B5, 0x93B6, 0x93BA, 0x93A9, 0x93C1, 0x93C4, 0x93C5, 0x93C6,
2166+ 0x93C7, 0x93C9, 0x93CA, 0x93CB, 0x93CC, 0x93CD, 0x93D3, 0x93D9,
2167+ 0x93DC, 0x93DE, 0x93DF, 0x93E2, 0x93E6, 0x93E7, 0x93F9, 0x93F7,
2168+ 0x93F8, 0x93FA, 0x93FB, 0x93FD, 0x9401, 0x9402, 0x9404, 0x9408,
2169+ 0x9409, 0x940D, 0x940E, 0x940F, 0x9415, 0x9416, 0x9417, 0x941F,
2170+ 0x942E, 0x942F, 0x9431, 0x9432, 0x9433, 0x9434, 0x943B, 0x943F,
2171+ 0x943D, 0x9443, 0x9445, 0x9448, 0x944A, 0x944C, 0x9455, 0x9459,
2172+ 0x945C, 0x945F, 0x9461, 0x9463, 0x9468, 0x946B, 0x946D, 0x946E,
2173+ 0x946F, 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579,
2174+};
2175+static const unsigned short euc_to_utf8_8FE6[] = {
2176+ 0x957E, 0x9584, 0x9588, 0x958C, 0x958D, 0x958E, 0x959D,
2177+ 0x959E, 0x959F, 0x95A1, 0x95A6, 0x95A9, 0x95AB, 0x95AC, 0x95B4,
2178+ 0x95B6, 0x95BA, 0x95BD, 0x95BF, 0x95C6, 0x95C8, 0x95C9, 0x95CB,
2179+ 0x95D0, 0x95D1, 0x95D2, 0x95D3, 0x95D9, 0x95DA, 0x95DD, 0x95DE,
2180+ 0x95DF, 0x95E0, 0x95E4, 0x95E6, 0x961D, 0x961E, 0x9622, 0x9624,
2181+ 0x9625, 0x9626, 0x962C, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639,
2182+ 0x963A, 0x963C, 0x963D, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657,
2183+ 0x9658, 0x9661, 0x966E, 0x9674, 0x967B, 0x967C, 0x967E, 0x967F,
2184+ 0x9681, 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969A,
2185+ 0x969D, 0x969F, 0x96A4, 0x96A5, 0x96A6, 0x96A9, 0x96AE, 0x96AF,
2186+ 0x96B3, 0x96BA, 0x96CA, 0x96D2, 0x5DB2, 0x96D8, 0x96DA, 0x96DD,
2187+ 0x96DE, 0x96DF, 0x96E9, 0x96EF, 0x96F1, 0x96FA, 0x9702,
2188+};
2189+static const unsigned short euc_to_utf8_8FE7[] = {
2190+ 0x9703, 0x9705, 0x9709, 0x971A, 0x971B, 0x971D, 0x9721,
2191+ 0x9722, 0x9723, 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974A,
2192+ 0x974E, 0x974F, 0x9755, 0x9757, 0x9758, 0x975A, 0x975B, 0x9763,
2193+ 0x9767, 0x976A, 0x976E, 0x9773, 0x9776, 0x9777, 0x9778, 0x977B,
2194+ 0x977D, 0x977F, 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799,
2195+ 0x979A, 0x979E, 0x979F, 0x97A2, 0x97AC, 0x97AE, 0x97B1, 0x97B2,
2196+ 0x97B5, 0x97B6, 0x97B8, 0x97B9, 0x97BA, 0x97BC, 0x97BE, 0x97BF,
2197+ 0x97C1, 0x97C4, 0x97C5, 0x97C7, 0x97C9, 0x97CA, 0x97CC, 0x97CD,
2198+ 0x97CE, 0x97D0, 0x97D1, 0x97D4, 0x97D7, 0x97D8, 0x97D9, 0x97DD,
2199+ 0x97DE, 0x97E0, 0x97DB, 0x97E1, 0x97E4, 0x97EF, 0x97F1, 0x97F4,
2200+ 0x97F7, 0x97F8, 0x97FA, 0x9807, 0x980A, 0x9819, 0x980D, 0x980E,
2201+ 0x9814, 0x9816, 0x981C, 0x981E, 0x9820, 0x9823, 0x9826,
2202+};
2203+static const unsigned short euc_to_utf8_8FE8[] = {
2204+ 0x982B, 0x982E, 0x982F, 0x9830, 0x9832, 0x9833, 0x9835,
2205+ 0x9825, 0x983E, 0x9844, 0x9847, 0x984A, 0x9851, 0x9852, 0x9853,
2206+ 0x9856, 0x9857, 0x9859, 0x985A, 0x9862, 0x9863, 0x9865, 0x9866,
2207+ 0x986A, 0x986C, 0x98AB, 0x98AD, 0x98AE, 0x98B0, 0x98B4, 0x98B7,
2208+ 0x98B8, 0x98BA, 0x98BB, 0x98BF, 0x98C2, 0x98C5, 0x98C8, 0x98CC,
2209+ 0x98E1, 0x98E3, 0x98E5, 0x98E6, 0x98E7, 0x98EA, 0x98F3, 0x98F6,
2210+ 0x9902, 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, 0x991A,
2211+ 0x991B, 0x991C, 0x991F, 0x9922, 0x9926, 0x9927, 0x992B, 0x9931,
2212+ 0x9932, 0x9933, 0x9934, 0x9935, 0x9939, 0x993A, 0x993B, 0x993C,
2213+ 0x9940, 0x9941, 0x9946, 0x9947, 0x9948, 0x994D, 0x994E, 0x9954,
2214+ 0x9958, 0x9959, 0x995B, 0x995C, 0x995E, 0x995F, 0x9960, 0x999B,
2215+ 0x999D, 0x999F, 0x99A6, 0x99B0, 0x99B1, 0x99B2, 0x99B5,
2216+};
2217+static const unsigned short euc_to_utf8_8FE9[] = {
2218+ 0x99B9, 0x99BA, 0x99BD, 0x99BF, 0x99C3, 0x99C9, 0x99D3,
2219+ 0x99D4, 0x99D9, 0x99DA, 0x99DC, 0x99DE, 0x99E7, 0x99EA, 0x99EB,
2220+ 0x99EC, 0x99F0, 0x99F4, 0x99F5, 0x99F9, 0x99FD, 0x99FE, 0x9A02,
2221+ 0x9A03, 0x9A04, 0x9A0B, 0x9A0C, 0x9A10, 0x9A11, 0x9A16, 0x9A1E,
2222+ 0x9A20, 0x9A22, 0x9A23, 0x9A24, 0x9A27, 0x9A2D, 0x9A2E, 0x9A33,
2223+ 0x9A35, 0x9A36, 0x9A38, 0x9A47, 0x9A41, 0x9A44, 0x9A4A, 0x9A4B,
2224+ 0x9A4C, 0x9A4E, 0x9A51, 0x9A54, 0x9A56, 0x9A5D, 0x9AAA, 0x9AAC,
2225+ 0x9AAE, 0x9AAF, 0x9AB2, 0x9AB4, 0x9AB5, 0x9AB6, 0x9AB9, 0x9ABB,
2226+ 0x9ABE, 0x9ABF, 0x9AC1, 0x9AC3, 0x9AC6, 0x9AC8, 0x9ACE, 0x9AD0,
2227+ 0x9AD2, 0x9AD5, 0x9AD6, 0x9AD7, 0x9ADB, 0x9ADC, 0x9AE0, 0x9AE4,
2228+ 0x9AE5, 0x9AE7, 0x9AE9, 0x9AEC, 0x9AF2, 0x9AF3, 0x9AF5, 0x9AF9,
2229+ 0x9AFA, 0x9AFD, 0x9AFF, 0x9B00, 0x9B01, 0x9B02, 0x9B03,
2230+};
2231+static const unsigned short euc_to_utf8_8FEA[] = {
2232+ 0x9B04, 0x9B05, 0x9B08, 0x9B09, 0x9B0B, 0x9B0C, 0x9B0D,
2233+ 0x9B0E, 0x9B10, 0x9B12, 0x9B16, 0x9B19, 0x9B1B, 0x9B1C, 0x9B20,
2234+ 0x9B26, 0x9B2B, 0x9B2D, 0x9B33, 0x9B34, 0x9B35, 0x9B37, 0x9B39,
2235+ 0x9B3A, 0x9B3D, 0x9B48, 0x9B4B, 0x9B4C, 0x9B55, 0x9B56, 0x9B57,
2236+ 0x9B5B, 0x9B5E, 0x9B61, 0x9B63, 0x9B65, 0x9B66, 0x9B68, 0x9B6A,
2237+ 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B73, 0x9B75, 0x9B77, 0x9B78,
2238+ 0x9B79, 0x9B7F, 0x9B80, 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B89,
2239+ 0x9B8A, 0x9B8B, 0x9B8D, 0x9B8F, 0x9B90, 0x9B94, 0x9B9A, 0x9B9D,
2240+ 0x9B9E, 0x9BA6, 0x9BA7, 0x9BA9, 0x9BAC, 0x9BB0, 0x9BB1, 0x9BB2,
2241+ 0x9BB7, 0x9BB8, 0x9BBB, 0x9BBC, 0x9BBE, 0x9BBF, 0x9BC1, 0x9BC7,
2242+ 0x9BC8, 0x9BCE, 0x9BD0, 0x9BD7, 0x9BD8, 0x9BDD, 0x9BDF, 0x9BE5,
2243+ 0x9BE7, 0x9BEA, 0x9BEB, 0x9BEF, 0x9BF3, 0x9BF7, 0x9BF8,
2244+};
2245+static const unsigned short euc_to_utf8_8FEB[] = {
2246+ 0x9BF9, 0x9BFA, 0x9BFD, 0x9BFF, 0x9C00, 0x9C02, 0x9C0B,
2247+ 0x9C0F, 0x9C11, 0x9C16, 0x9C18, 0x9C19, 0x9C1A, 0x9C1C, 0x9C1E,
2248+ 0x9C22, 0x9C23, 0x9C26, 0x9C27, 0x9C28, 0x9C29, 0x9C2A, 0x9C31,
2249+ 0x9C35, 0x9C36, 0x9C37, 0x9C3D, 0x9C41, 0x9C43, 0x9C44, 0x9C45,
2250+ 0x9C49, 0x9C4A, 0x9C4E, 0x9C4F, 0x9C50, 0x9C53, 0x9C54, 0x9C56,
2251+ 0x9C58, 0x9C5B, 0x9C5D, 0x9C5E, 0x9C5F, 0x9C63, 0x9C69, 0x9C6A,
2252+ 0x9C5C, 0x9C6B, 0x9C68, 0x9C6E, 0x9C70, 0x9C72, 0x9C75, 0x9C77,
2253+ 0x9C7B, 0x9CE6, 0x9CF2, 0x9CF7, 0x9CF9, 0x9D0B, 0x9D02, 0x9D11,
2254+ 0x9D17, 0x9D18, 0x9D1C, 0x9D1D, 0x9D1E, 0x9D2F, 0x9D30, 0x9D32,
2255+ 0x9D33, 0x9D34, 0x9D3A, 0x9D3C, 0x9D45, 0x9D3D, 0x9D42, 0x9D43,
2256+ 0x9D47, 0x9D4A, 0x9D53, 0x9D54, 0x9D5F, 0x9D63, 0x9D62, 0x9D65,
2257+ 0x9D69, 0x9D6A, 0x9D6B, 0x9D70, 0x9D76, 0x9D77, 0x9D7B,
2258+};
2259+static const unsigned short euc_to_utf8_8FEC[] = {
2260+ 0x9D7C, 0x9D7E, 0x9D83, 0x9D84, 0x9D86, 0x9D8A, 0x9D8D,
2261+ 0x9D8E, 0x9D92, 0x9D93, 0x9D95, 0x9D96, 0x9D97, 0x9D98, 0x9DA1,
2262+ 0x9DAA, 0x9DAC, 0x9DAE, 0x9DB1, 0x9DB5, 0x9DB9, 0x9DBC, 0x9DBF,
2263+ 0x9DC3, 0x9DC7, 0x9DC9, 0x9DCA, 0x9DD4, 0x9DD5, 0x9DD6, 0x9DD7,
2264+ 0x9DDA, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE5, 0x9DE7, 0x9DE9, 0x9DEB,
2265+ 0x9DEE, 0x9DF0, 0x9DF3, 0x9DF4, 0x9DFE, 0x9E0A, 0x9E02, 0x9E07,
2266+ 0x9E0E, 0x9E10, 0x9E11, 0x9E12, 0x9E15, 0x9E16, 0x9E19, 0x9E1C,
2267+ 0x9E1D, 0x9E7A, 0x9E7B, 0x9E7C, 0x9E80, 0x9E82, 0x9E83, 0x9E84,
2268+ 0x9E85, 0x9E87, 0x9E8E, 0x9E8F, 0x9E96, 0x9E98, 0x9E9B, 0x9E9E,
2269+ 0x9EA4, 0x9EA8, 0x9EAC, 0x9EAE, 0x9EAF, 0x9EB0, 0x9EB3, 0x9EB4,
2270+ 0x9EB5, 0x9EC6, 0x9EC8, 0x9ECB, 0x9ED5, 0x9EDF, 0x9EE4, 0x9EE7,
2271+ 0x9EEC, 0x9EED, 0x9EEE, 0x9EF0, 0x9EF1, 0x9EF2, 0x9EF5,
2272+};
2273+static const unsigned short euc_to_utf8_8FED[] = {
2274+ 0x9EF8, 0x9EFF, 0x9F02, 0x9F03, 0x9F09, 0x9F0F, 0x9F10,
2275+ 0x9F11, 0x9F12, 0x9F14, 0x9F16, 0x9F17, 0x9F19, 0x9F1A, 0x9F1B,
2276+ 0x9F1F, 0x9F22, 0x9F26, 0x9F2A, 0x9F2B, 0x9F2F, 0x9F31, 0x9F32,
2277+ 0x9F34, 0x9F37, 0x9F39, 0x9F3A, 0x9F3C, 0x9F3D, 0x9F3F, 0x9F41,
2278+ 0x9F43, 0x9F44, 0x9F45, 0x9F46, 0x9F47, 0x9F53, 0x9F55, 0x9F56,
2279+ 0x9F57, 0x9F58, 0x9F5A, 0x9F5D, 0x9F5E, 0x9F68, 0x9F69, 0x9F6D,
2280+ 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 0x9F73, 0x9F75, 0x9F7A, 0x9F7D,
2281+ 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F94, 0x9F96, 0x9F97, 0x9F9E,
2282+ 0x9FA1, 0x9FA2, 0x9FA3, 0x9FA5, 0, 0, 0, 0,
2283+ 0, 0, 0, 0, 0, 0, 0, 0,
2284+ 0, 0, 0, 0, 0, 0, 0, 0,
2285+ 0, 0, 0, 0, 0, 0, 0,
2286+};
2287+static const unsigned short euc_to_utf8_8FF3[] = {
2288+ 0, 0, 0, 0, 0, 0, 0,
2289+ 0, 0, 0, 0, 0, 0, 0, 0,
2290+ 0, 0, 0, 0, 0, 0, 0, 0,
2291+ 0, 0, 0, 0, 0, 0, 0, 0,
2292+ 0, 0, 0, 0, 0, 0, 0, 0,
2293+ 0, 0, 0, 0, 0, 0, 0, 0,
2294+ 0, 0, 0, 0, 0, 0, 0, 0,
2295+ 0, 0, 0, 0, 0, 0, 0, 0,
2296+ 0, 0, 0, 0, 0, 0, 0, 0,
2297+ 0, 0, 0, 0, 0, 0, 0, 0,
2298+ 0, 0, 0, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174,
2299+ 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x2160, 0x2161,
2300+};
2301+static const unsigned short euc_to_utf8_8FF4[] = {
2302+ 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
2303+ 0x2169, 0xff07, 0xff02, 0x3231, 0x2116, 0x2121, 0x70bb, 0x4efc,
2304+ 0x50f4, 0x51ec, 0x5307, 0x5324, 0xfa0e, 0x548a, 0x5759, 0xfa0f,
2305+ 0xfa10, 0x589e, 0x5bec, 0x5cf5, 0x5d53, 0xfa11, 0x5fb7, 0x6085,
2306+ 0x6120, 0x654e, 0x663b, 0x6665, 0xfa12, 0xf929, 0x6801, 0xfa13,
2307+ 0xfa14, 0x6a6b, 0x6ae2, 0x6df8, 0x6df2, 0x7028, 0xfa15, 0xfa16,
2308+ 0x7501, 0x7682, 0x769e, 0xfa17, 0x7930, 0xfa18, 0xfa19, 0xfa1a,
2309+ 0xfa1b, 0x7ae7, 0xfa1c, 0xfa1d, 0x7da0, 0x7dd6, 0xfa1e, 0x8362,
2310+ 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807, 0xfa22, 0x8b7f, 0x8cf4,
2311+ 0x8d76, 0xfa23, 0xfa24, 0xfa25, 0x90de, 0xfa26, 0x9115, 0xfa27,
2312+ 0xfa28, 0x9592, 0xf9dc, 0xfa29, 0x973b, 0x974d, 0x9751, 0xfa2a,
2313+ 0xfa2b, 0xfa2c, 0x999e, 0x9ad9, 0x9b72, 0xfa2d, 0x9ed1,
2314+};
2315+#endif /* X0212_ENABLE */
2316+
2317+const unsigned short euc_to_utf8_1byte[] = {
2318+ 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67,
2319+ 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F,
2320+ 0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77,
2321+ 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F,
2322+ 0xFF80, 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87,
2323+ 0xFF88, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F,
2324+ 0xFF90, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, 0xFF96, 0xFF97,
2325+ 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F,
2326+ 0, 0, 0, 0, 0, 0, 0, 0,
2327+ 0, 0, 0, 0, 0, 0, 0, 0,
2328+ 0, 0, 0, 0, 0, 0, 0, 0,
2329+ 0, 0, 0, 0, 0, 0x00A9, 0x2122,
2330+};
2331+const unsigned short *const euc_to_utf8_2bytes[] = {
2332+ euc_to_utf8_A1, euc_to_utf8_A2, euc_to_utf8_A3,
2333+ euc_to_utf8_A4, euc_to_utf8_A5, euc_to_utf8_A6, euc_to_utf8_A7,
2334+ euc_to_utf8_A8, euc_to_utf8_A9, euc_to_utf8_AA, euc_to_utf8_AB,
2335+ euc_to_utf8_AC, euc_to_utf8_AD, euc_to_utf8_AE, euc_to_utf8_AF,
2336+ euc_to_utf8_B0, euc_to_utf8_B1, euc_to_utf8_B2, euc_to_utf8_B3,
2337+ euc_to_utf8_B4, euc_to_utf8_B5, euc_to_utf8_B6, euc_to_utf8_B7,
2338+ euc_to_utf8_B8, euc_to_utf8_B9, euc_to_utf8_BA, euc_to_utf8_BB,
2339+ euc_to_utf8_BC, euc_to_utf8_BD, euc_to_utf8_BE, euc_to_utf8_BF,
2340+ euc_to_utf8_C0, euc_to_utf8_C1, euc_to_utf8_C2, euc_to_utf8_C3,
2341+ euc_to_utf8_C4, euc_to_utf8_C5, euc_to_utf8_C6, euc_to_utf8_C7,
2342+ euc_to_utf8_C8, euc_to_utf8_C9, euc_to_utf8_CA, euc_to_utf8_CB,
2343+ euc_to_utf8_CC, euc_to_utf8_CD, euc_to_utf8_CE, euc_to_utf8_CF,
2344+ euc_to_utf8_D0, euc_to_utf8_D1, euc_to_utf8_D2, euc_to_utf8_D3,
2345+ euc_to_utf8_D4, euc_to_utf8_D5, euc_to_utf8_D6, euc_to_utf8_D7,
2346+ euc_to_utf8_D8, euc_to_utf8_D9, euc_to_utf8_DA, euc_to_utf8_DB,
2347+ euc_to_utf8_DC, euc_to_utf8_DD, euc_to_utf8_DE, euc_to_utf8_DF,
2348+ euc_to_utf8_E0, euc_to_utf8_E1, euc_to_utf8_E2, euc_to_utf8_E3,
2349+ euc_to_utf8_E4, euc_to_utf8_E5, euc_to_utf8_E6, euc_to_utf8_E7,
2350+ euc_to_utf8_E8, euc_to_utf8_E9, euc_to_utf8_EA, euc_to_utf8_EB,
2351+ euc_to_utf8_EC, euc_to_utf8_ED, euc_to_utf8_EE, euc_to_utf8_EF,
2352+ euc_to_utf8_F0, euc_to_utf8_F1, euc_to_utf8_F2, euc_to_utf8_F3,
2353+ euc_to_utf8_F4, euc_to_utf8_F5, 0, 0,
2354+ 0, euc_to_utf8_F9, euc_to_utf8_FA, euc_to_utf8_FB,
2355+ euc_to_utf8_FC, 0, 0,
2356+};
2357+/* Microsoft UCS Mapping Compatible */
2358+const unsigned short *const euc_to_utf8_2bytes_ms[] = {
2359+ euc_to_utf8_A1_ms, euc_to_utf8_A2_ms, euc_to_utf8_A3,
2360+ euc_to_utf8_A4, euc_to_utf8_A5, euc_to_utf8_A6, euc_to_utf8_A7,
2361+ euc_to_utf8_A8, euc_to_utf8_A9, euc_to_utf8_AA, euc_to_utf8_AB,
2362+ euc_to_utf8_AC, euc_to_utf8_AD, euc_to_utf8_AE, euc_to_utf8_AF,
2363+ euc_to_utf8_B0, euc_to_utf8_B1, euc_to_utf8_B2, euc_to_utf8_B3,
2364+ euc_to_utf8_B4, euc_to_utf8_B5, euc_to_utf8_B6, euc_to_utf8_B7,
2365+ euc_to_utf8_B8, euc_to_utf8_B9, euc_to_utf8_BA, euc_to_utf8_BB,
2366+ euc_to_utf8_BC, euc_to_utf8_BD, euc_to_utf8_BE, euc_to_utf8_BF,
2367+ euc_to_utf8_C0, euc_to_utf8_C1, euc_to_utf8_C2, euc_to_utf8_C3,
2368+ euc_to_utf8_C4, euc_to_utf8_C5, euc_to_utf8_C6, euc_to_utf8_C7,
2369+ euc_to_utf8_C8, euc_to_utf8_C9, euc_to_utf8_CA, euc_to_utf8_CB,
2370+ euc_to_utf8_CC, euc_to_utf8_CD, euc_to_utf8_CE, euc_to_utf8_CF,
2371+ euc_to_utf8_D0, euc_to_utf8_D1, euc_to_utf8_D2, euc_to_utf8_D3,
2372+ euc_to_utf8_D4, euc_to_utf8_D5, euc_to_utf8_D6, euc_to_utf8_D7,
2373+ euc_to_utf8_D8, euc_to_utf8_D9, euc_to_utf8_DA, euc_to_utf8_DB,
2374+ euc_to_utf8_DC, euc_to_utf8_DD, euc_to_utf8_DE, euc_to_utf8_DF,
2375+ euc_to_utf8_E0, euc_to_utf8_E1, euc_to_utf8_E2, euc_to_utf8_E3,
2376+ euc_to_utf8_E4, euc_to_utf8_E5, euc_to_utf8_E6, euc_to_utf8_E7,
2377+ euc_to_utf8_E8, euc_to_utf8_E9, euc_to_utf8_EA, euc_to_utf8_EB,
2378+ euc_to_utf8_EC, euc_to_utf8_ED, euc_to_utf8_EE, euc_to_utf8_EF,
2379+ euc_to_utf8_F0, euc_to_utf8_F1, euc_to_utf8_F2, euc_to_utf8_F3,
2380+ euc_to_utf8_F4, euc_to_utf8_F5, 0, 0,
2381+ 0, euc_to_utf8_F9, euc_to_utf8_FA, euc_to_utf8_FB,
2382+ euc_to_utf8_FC_ms, 0, 0,
2383+};
2384+/* CP10001 */
2385+const unsigned short *const euc_to_utf8_2bytes_mac[] = {
2386+ euc_to_utf8_A1_ms, euc_to_utf8_A2_ms, euc_to_utf8_A3,
2387+ euc_to_utf8_A4, euc_to_utf8_A5, euc_to_utf8_A6, euc_to_utf8_A7,
2388+ euc_to_utf8_A8, euc_to_utf8_A9, euc_to_utf8_AA, euc_to_utf8_AB,
2389+ euc_to_utf8_AC_mac, euc_to_utf8_AD_mac, euc_to_utf8_AE, euc_to_utf8_AF,
2390+ euc_to_utf8_B0, euc_to_utf8_B1, euc_to_utf8_B2, euc_to_utf8_B3,
2391+ euc_to_utf8_B4, euc_to_utf8_B5, euc_to_utf8_B6, euc_to_utf8_B7,
2392+ euc_to_utf8_B8, euc_to_utf8_B9, euc_to_utf8_BA, euc_to_utf8_BB,
2393+ euc_to_utf8_BC, euc_to_utf8_BD, euc_to_utf8_BE, euc_to_utf8_BF,
2394+ euc_to_utf8_C0, euc_to_utf8_C1, euc_to_utf8_C2, euc_to_utf8_C3,
2395+ euc_to_utf8_C4, euc_to_utf8_C5, euc_to_utf8_C6, euc_to_utf8_C7,
2396+ euc_to_utf8_C8, euc_to_utf8_C9, euc_to_utf8_CA, euc_to_utf8_CB,
2397+ euc_to_utf8_CC, euc_to_utf8_CD, euc_to_utf8_CE, euc_to_utf8_CF,
2398+ euc_to_utf8_D0, euc_to_utf8_D1, euc_to_utf8_D2, euc_to_utf8_D3,
2399+ euc_to_utf8_D4, euc_to_utf8_D5, euc_to_utf8_D6, euc_to_utf8_D7,
2400+ euc_to_utf8_D8, euc_to_utf8_D9, euc_to_utf8_DA, euc_to_utf8_DB,
2401+ euc_to_utf8_DC, euc_to_utf8_DD, euc_to_utf8_DE, euc_to_utf8_DF,
2402+ euc_to_utf8_E0, euc_to_utf8_E1, euc_to_utf8_E2, euc_to_utf8_E3,
2403+ euc_to_utf8_E4, euc_to_utf8_E5, euc_to_utf8_E6, euc_to_utf8_E7,
2404+ euc_to_utf8_E8, euc_to_utf8_E9, euc_to_utf8_EA, euc_to_utf8_EB,
2405+ euc_to_utf8_EC, euc_to_utf8_ED, euc_to_utf8_EE, euc_to_utf8_EF,
2406+ euc_to_utf8_F0, euc_to_utf8_F1, euc_to_utf8_F2, euc_to_utf8_F3,
2407+ euc_to_utf8_F4, euc_to_utf8_F5, 0, 0,
2408+ 0, euc_to_utf8_F9, euc_to_utf8_FA, euc_to_utf8_FB,
2409+ euc_to_utf8_FC_ms, 0, 0,
2410+};
2411+
2412+#ifdef X0212_ENABLE
2413+const unsigned short *const x0212_to_utf8_2bytes[] = {
2414+ 0, euc_to_utf8_8FA2, 0,
2415+ 0, 0, euc_to_utf8_8FA6, euc_to_utf8_8FA7,
2416+ 0, euc_to_utf8_8FA9, euc_to_utf8_8FAA, euc_to_utf8_8FAB,
2417+ 0, 0, 0, 0,
2418+ euc_to_utf8_8FB0, euc_to_utf8_8FB1, euc_to_utf8_8FB2, euc_to_utf8_8FB3,
2419+ euc_to_utf8_8FB4, euc_to_utf8_8FB5, euc_to_utf8_8FB6, euc_to_utf8_8FB7,
2420+ euc_to_utf8_8FB8, euc_to_utf8_8FB9, euc_to_utf8_8FBA, euc_to_utf8_8FBB,
2421+ euc_to_utf8_8FBC, euc_to_utf8_8FBD, euc_to_utf8_8FBE, euc_to_utf8_8FBF,
2422+ euc_to_utf8_8FC0, euc_to_utf8_8FC1, euc_to_utf8_8FC2, euc_to_utf8_8FC3,
2423+ euc_to_utf8_8FC4, euc_to_utf8_8FC5, euc_to_utf8_8FC6, euc_to_utf8_8FC7,
2424+ euc_to_utf8_8FC8, euc_to_utf8_8FC9, euc_to_utf8_8FCA, euc_to_utf8_8FCB,
2425+ euc_to_utf8_8FCC, euc_to_utf8_8FCD, euc_to_utf8_8FCE, euc_to_utf8_8FCF,
2426+ euc_to_utf8_8FD0, euc_to_utf8_8FD1, euc_to_utf8_8FD2, euc_to_utf8_8FD3,
2427+ euc_to_utf8_8FD4, euc_to_utf8_8FD5, euc_to_utf8_8FD6, euc_to_utf8_8FD7,
2428+ euc_to_utf8_8FD8, euc_to_utf8_8FD9, euc_to_utf8_8FDA, euc_to_utf8_8FDB,
2429+ euc_to_utf8_8FDC, euc_to_utf8_8FDD, euc_to_utf8_8FDE, euc_to_utf8_8FDF,
2430+ euc_to_utf8_8FE0, euc_to_utf8_8FE1, euc_to_utf8_8FE2, euc_to_utf8_8FE3,
2431+ euc_to_utf8_8FE4, euc_to_utf8_8FE5, euc_to_utf8_8FE6, euc_to_utf8_8FE7,
2432+ euc_to_utf8_8FE8, euc_to_utf8_8FE9, euc_to_utf8_8FEA, euc_to_utf8_8FEB,
2433+ euc_to_utf8_8FEC, euc_to_utf8_8FED, 0, 0,
2434+ 0, 0, 0, euc_to_utf8_8FF3,
2435+ euc_to_utf8_8FF4, 0, 0, 0,
2436+ 0, 0, 0, 0,
2437+ 0, 0, 0,};
2438+#endif /* X0212_ENABLE */
2439+#endif /* UTF8_OUTPUT_ENABLE */
2440+
2441+#ifdef UTF8_INPUT_ENABLE
2442+static const unsigned short utf8_to_euc_C2[] = {
2443+ 0, 0, 0, 0, 0, 0, 0, 0,
2444+ 0, 0, 0, 0, 0, 0, 0, 0,
2445+ 0, 0, 0, 0, 0, 0, 0, 0,
2446+ 0, 0, 0, 0, 0, 0, 0, 0,
2447+ 0, 0xA242, 0x2171, 0x2172, 0xA270, 0x216F, 0xA243, 0x2178,
2448+ 0x212F, 0xA26D, 0xA26C, 0, 0x224C, 0, 0xA26E, 0xA234,
2449+ 0x216B, 0x215E, 0, 0, 0x212D, 0, 0x2279, 0,
2450+ 0xA231, 0, 0xA26B, 0, 0, 0, 0, 0xA244,
2451+};
2452+static const unsigned short utf8_to_euc_C2_ms[] = {
2453+ 0, 0, 0, 0, 0, 0, 0, 0,
2454+ 0, 0, 0, 0, 0, 0, 0, 0,
2455+ 0, 0, 0, 0, 0, 0, 0, 0,
2456+ 0, 0, 0, 0, 0, 0, 0, 0,
2457+ 0, 0xA242, 0x2171, 0x2172, 0xA270, 0x5C, 0xA243, 0x2178,
2458+ 0x212F, 0xA26D, 0xA26C, 0, 0x224C, 0, 0xA26E, 0xA234,
2459+ 0x216B, 0x215E, 0, 0, 0x212D, 0, 0x2279, 0,
2460+ 0xA231, 0, 0xA26B, 0, 0, 0, 0, 0xA244,
2461+};
2462+static const unsigned short utf8_to_euc_C2_mac[] = {
2463+ 0, 0, 0, 0, 0, 0, 0, 0,
2464+ 0, 0, 0, 0, 0, 0, 0, 0,
2465+ 0, 0, 0, 0, 0, 0, 0, 0,
2466+ 0, 0, 0, 0, 0, 0, 0, 0,
2467+ 0x00A0, 0xA242, 0x2171, 0x2172, 0xA270, 0x5C, 0xA243, 0x2178,
2468+ 0x212F, 0x00FD, 0xA26C, 0, 0x224C, 0, 0xA26E, 0xA234,
2469+ 0x216B, 0x215E, 0, 0, 0x212D, 0, 0x2279, 0,
2470+ 0xA231, 0, 0xA26B, 0, 0, 0, 0, 0xA244,
2471+};
2472+static const unsigned short utf8_to_euc_C2_932[] = {
2473+ 0, 0, 0, 0, 0, 0, 0, 0,
2474+ 0, 0, 0, 0, 0, 0, 0, 0,
2475+ 0, 0, 0, 0, 0, 0, 0, 0,
2476+ 0, 0, 0, 0, 0, 0, 0, 0,
2477+ 0, 0x21, 0x2171, 0x2172, 0, 0x5C, 0x7C, 0x2178,
2478+ 0x212F, 0x63, 0x61, 0x2263, 0x224C, 0x2D, 0x52, 0x2131,
2479+ 0x216B, 0x215E, 0x32, 0x33, 0x212D, 0x264C, 0x2279, 0x2126,
2480+ 0x2124, 0x31, 0x6F, 0x2264, 0, 0, 0, 0,
2481+};
2482+static const unsigned short utf8_to_euc_C3[] = {
2483+ 0xAA22, 0xAA21, 0xAA24, 0xAA2A, 0xAA23, 0xAA29, 0xA921, 0xAA2E,
2484+ 0xAA32, 0xAA31, 0xAA34, 0xAA33, 0xAA40, 0xAA3F, 0xAA42, 0xAA41,
2485+ 0, 0xAA50, 0xAA52, 0xAA51, 0xAA54, 0xAA58, 0xAA53, 0x215F,
2486+ 0xA92C, 0xAA63, 0xAA62, 0xAA65, 0xAA64, 0xAA72, 0xA930, 0xA94E,
2487+ 0xAB22, 0xAB21, 0xAB24, 0xAB2A, 0xAB23, 0xAB29, 0xA941, 0xAB2E,
2488+ 0xAB32, 0xAB31, 0xAB34, 0xAB33, 0xAB40, 0xAB3F, 0xAB42, 0xAB41,
2489+ 0xA943, 0xAB50, 0xAB52, 0xAB51, 0xAB54, 0xAB58, 0xAB53, 0x2160,
2490+ 0xA94C, 0xAB63, 0xAB62, 0xAB65, 0xAB64, 0xAB72, 0xA950, 0xAB73,
2491+};
2492+static const unsigned short utf8_to_euc_C3_932[] = {
2493+ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43,
2494+ 0x45, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
2495+ 0x44, 0x4E, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x215F,
2496+ 0x4F, 0x55, 0x55, 0x55, 0x55, 0x59, 0x54, 0x73,
2497+ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63,
2498+ 0x65, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
2499+ 0x64, 0x6E, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x2160,
2500+ 0x6F, 0x75, 0x75, 0x75, 0x75, 0x79, 0x74, 0x79,
2501+};
2502+static const unsigned short utf8_to_euc_C4[] = {
2503+ 0xAA27, 0xAB27, 0xAA25, 0xAB25, 0xAA28, 0xAB28, 0xAA2B, 0xAB2B,
2504+ 0xAA2C, 0xAB2C, 0xAA2F, 0xAB2F, 0xAA2D, 0xAB2D, 0xAA30, 0xAB30,
2505+ 0xA922, 0xA942, 0xAA37, 0xAB37, 0, 0, 0xAA36, 0xAB36,
2506+ 0xAA38, 0xAB38, 0xAA35, 0xAB35, 0xAA3A, 0xAB3A, 0xAA3B, 0xAB3B,
2507+ 0xAA3D, 0xAB3D, 0xAA3C, 0, 0xAA3E, 0xAB3E, 0xA924, 0xA944,
2508+ 0xAA47, 0xAB47, 0xAA45, 0xAB45, 0, 0, 0xAA46, 0xAB46,
2509+ 0xAA44, 0xA945, 0xA926, 0xA946, 0xAA48, 0xAB48, 0xAA49, 0xAB49,
2510+ 0xA947, 0xAA4A, 0xAB4A, 0xAA4C, 0xAB4C, 0xAA4B, 0xAB4B, 0xA929,
2511+};
2512+static const unsigned short utf8_to_euc_C5[] = {
2513+ 0xA949, 0xA928, 0xA948, 0xAA4D, 0xAB4D, 0xAA4F, 0xAB4F, 0xAA4E,
2514+ 0xAB4E, 0xA94A, 0xA92B, 0xA94B, 0xAA57, 0xAB57, 0, 0,
2515+ 0xAA56, 0xAB56, 0xA92D, 0xA94D, 0xAA59, 0xAB59, 0xAA5B, 0xAB5B,
2516+ 0xAA5A, 0xAB5A, 0xAA5C, 0xAB5C, 0xAA5D, 0xAB5D, 0xAA5F, 0xAB5F,
2517+ 0xAA5E, 0xAB5E, 0xAA61, 0xAB61, 0xAA60, 0xAB60, 0xA92F, 0xA94F,
2518+ 0xAA6C, 0xAB6C, 0xAA69, 0xAB69, 0xAA66, 0xAB66, 0xAA6B, 0xAB6B,
2519+ 0xAA68, 0xAB68, 0xAA6A, 0xAB6A, 0xAA71, 0xAB71, 0xAA74, 0xAB74,
2520+ 0xAA73, 0xAA75, 0xAB75, 0xAA77, 0xAB77, 0xAA76, 0xAB76, 0,
2521+};
2522+static const unsigned short utf8_to_euc_C7[] = {
2523+ 0, 0, 0, 0, 0, 0, 0, 0,
2524+ 0, 0, 0, 0, 0, 0xAA26, 0xAB26, 0xAA43,
2525+ 0xAB43, 0xAA55, 0xAB55, 0xAA67, 0xAB67, 0xAA70, 0xAB70, 0xAA6D,
2526+ 0xAB6D, 0xAA6F, 0xAB6F, 0xAA6E, 0xAB6E, 0, 0, 0,
2527+ 0, 0, 0, 0, 0, 0, 0, 0,
2528+ 0, 0, 0, 0, 0, 0, 0, 0,
2529+ 0, 0, 0, 0, 0, 0xAB39, 0, 0,
2530+ 0, 0, 0, 0, 0, 0, 0, 0,
2531+};
2532+static const unsigned short utf8_to_euc_CB[] = {
2533+ 0, 0, 0, 0, 0, 0, 0, 0xA230,
2534+ 0, 0, 0, 0, 0, 0, 0, 0,
2535+ 0, 0, 0, 0, 0, 0, 0, 0,
2536+ 0xA22F, 0xA232, 0xA236, 0xA235, 0, 0xA233, 0, 0,
2537+ 0, 0, 0, 0, 0, 0, 0, 0,
2538+ 0, 0, 0, 0, 0, 0, 0, 0,
2539+ 0, 0, 0, 0, 0, 0, 0, 0,
2540+ 0, 0, 0, 0, 0, 0, 0, 0,
2541+};
2542+static const unsigned short utf8_to_euc_CE[] = {
2543+ 0, 0, 0, 0, 0xA238, 0xA239, 0xA661, 0,
2544+ 0xA662, 0xA663, 0xA664, 0, 0xA667, 0, 0xA669, 0xA66C,
2545+ 0xA676, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627,
2546+ 0x2628, 0x2629, 0x262A, 0x262B, 0x262C, 0x262D, 0x262E, 0x262F,
2547+ 0x2630, 0x2631, 0, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636,
2548+ 0x2637, 0x2638, 0xA665, 0xA66A, 0xA671, 0xA672, 0xA673, 0xA674,
2549+ 0xA67B, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647,
2550+ 0x2648, 0x2649, 0x264A, 0x264B, 0x264C, 0x264D, 0x264E, 0x264F,
2551+};
2552+static const unsigned short utf8_to_euc_CF[] = {
2553+ 0x2650, 0x2651, 0xA678, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656,
2554+ 0x2657, 0x2658, 0xA675, 0xA67A, 0xA677, 0xA679, 0xA67C, 0,
2555+ 0, 0, 0, 0, 0, 0, 0, 0,
2556+ 0, 0, 0, 0, 0, 0, 0, 0,
2557+ 0, 0, 0, 0, 0, 0, 0, 0,
2558+ 0, 0, 0, 0, 0, 0, 0, 0,
2559+ 0, 0, 0, 0, 0, 0, 0, 0,
2560+ 0, 0, 0, 0, 0, 0, 0, 0,
2561+};
2562+static const unsigned short utf8_to_euc_D0[] = {
2563+ 0, 0x2727, 0xA742, 0xA743, 0xA744, 0xA745, 0xA746, 0xA747,
2564+ 0xA748, 0xA749, 0xA74A, 0xA74B, 0xA74C, 0, 0xA74D, 0xA74E,
2565+ 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2728, 0x2729,
2566+ 0x272A, 0x272B, 0x272C, 0x272D, 0x272E, 0x272F, 0x2730, 0x2731,
2567+ 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739,
2568+ 0x273A, 0x273B, 0x273C, 0x273D, 0x273E, 0x273F, 0x2740, 0x2741,
2569+ 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2758, 0x2759,
2570+ 0x275A, 0x275B, 0x275C, 0x275D, 0x275E, 0x275F, 0x2760, 0x2761,
2571+};
2572+static const unsigned short utf8_to_euc_D1[] = {
2573+ 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2768, 0x2769,
2574+ 0x276A, 0x276B, 0x276C, 0x276D, 0x276E, 0x276F, 0x2770, 0x2771,
2575+ 0, 0x2757, 0xA772, 0xA773, 0xA774, 0xA775, 0xA776, 0xA777,
2576+ 0xA778, 0xA779, 0xA77A, 0xA77B, 0xA77C, 0, 0xA77D, 0xA77E,
2577+ 0, 0, 0, 0, 0, 0, 0, 0,
2578+ 0, 0, 0, 0, 0, 0, 0, 0,
2579+ 0, 0, 0, 0, 0, 0, 0, 0,
2580+ 0, 0, 0, 0, 0, 0, 0, 0,
2581+};
2582+static const unsigned short utf8_to_euc_E280[] = {
2583+ 0, 0, 0, 0, 0, 0, 0, 0,
2584+ 0, 0, 0, 0, 0, 0, 0, 0,
2585+ 0x213E, 0, 0, 0, 0x213D, 0x213D, 0x2142, 0,
2586+ 0x2146, 0x2147, 0, 0, 0x2148, 0x2149, 0, 0,
2587+ 0x2277, 0x2278, 0, 0, 0, 0x2145, 0x2144, 0,
2588+ 0, 0, 0, 0, 0, 0, 0, 0,
2589+ 0x2273, 0, 0x216C, 0x216D, 0, 0, 0, 0,
2590+ 0, 0, 0, 0x2228, 0, 0, 0x2131, 0,
2591+};
2592+static const unsigned short utf8_to_euc_E280_ms[] = {
2593+ 0, 0, 0, 0, 0, 0, 0, 0,
2594+ 0, 0, 0, 0, 0, 0, 0, 0,
2595+ 0x213E, 0, 0, 0, 0x213D, 0x213D, 0x2142, 0,
2596+ 0x2146, 0x2147, 0, 0, 0x2148, 0x2149, 0, 0,
2597+ 0x2277, 0x2278, 0, 0, 0, 0x2145, 0x2144, 0,
2598+ 0, 0, 0, 0, 0, 0, 0, 0,
2599+ 0x2273, 0, 0x216C, 0x216D, 0, 0, 0, 0,
2600+ 0, 0, 0, 0x2228, 0, 0, 0x7E, 0,
2601+};
2602+static const unsigned short utf8_to_euc_E280_932[] = {
2603+ 0, 0, 0, 0, 0, 0, 0, 0,
2604+ 0, 0, 0, 0, 0, 0, 0, 0,
2605+ 0x213E, 0, 0, 0, 0, 0x213D, 0, 0,
2606+ 0x2146, 0x2147, 0, 0, 0x2148, 0x2149, 0, 0,
2607+ 0x2277, 0x2278, 0, 0, 0, 0x2145, 0x2144, 0,
2608+ 0, 0, 0, 0, 0, 0, 0, 0,
2609+ 0x2273, 0, 0x216C, 0x216D, 0, 0, 0, 0,
2610+ 0, 0, 0, 0x2228, 0, 0, 0, 0,
2611+};
2612+static const unsigned short utf8_to_euc_E284[] = {
2613+ 0, 0, 0, 0x216E, 0, 0, 0, 0,
2614+ 0, 0, 0, 0, 0, 0, 0, 0,
2615+ 0, 0, 0, 0, 0, 0, 0x2D62, 0,
2616+ 0, 0, 0, 0, 0, 0, 0, 0,
2617+ 0, 0x2D64, 0xA26F, 0, 0, 0, 0, 0,
2618+ 0, 0, 0, 0x2272, 0, 0, 0, 0,
2619+ 0, 0, 0, 0, 0, 0, 0, 0,
2620+ 0, 0, 0, 0, 0, 0, 0, 0,
2621+};
2622+static const unsigned short utf8_to_euc_E284_mac[] = {
2623+ 0, 0, 0, 0x216E, 0, 0, 0, 0,
2624+ 0, 0, 0, 0, 0, 0, 0, 0,
2625+ 0, 0, 0, 0, 0, 0, 0x2B7B, 0,
2626+ 0, 0, 0, 0, 0, 0, 0, 0,
2627+ 0, 0x2B7D, 0x00FE, 0, 0, 0, 0, 0,
2628+ 0, 0, 0, 0x2272, 0, 0, 0, 0,
2629+ 0, 0, 0, 0, 0, 0, 0, 0,
2630+ 0, 0, 0, 0, 0, 0, 0, 0,
2631+};
2632+static const unsigned short utf8_to_euc_E285[] = {
2633+ 0, 0, 0, 0, 0, 0, 0, 0,
2634+ 0, 0, 0, 0, 0, 0, 0, 0,
2635+ 0, 0, 0, 0, 0, 0, 0, 0,
2636+ 0, 0, 0, 0, 0, 0, 0, 0,
2637+ 0x2D35, 0x2D36, 0x2D37, 0x2D38, 0x2D39, 0x2D3A, 0x2D3B, 0x2D3C,
2638+ 0x2D3D, 0x2D3E, 0, 0, 0, 0, 0, 0,
2639+ 0xF373, 0xF374, 0xF375, 0xF376, 0xF377, 0xF378, 0xF379, 0xF37A,
2640+ 0xF37B, 0xF37C, 0, 0, 0, 0, 0, 0,
2641+};
2642+static const unsigned short utf8_to_euc_E285_mac[] = {
2643+ 0, 0, 0, 0, 0, 0, 0, 0,
2644+ 0, 0, 0, 0, 0, 0, 0, 0,
2645+ 0, 0, 0, 0, 0, 0, 0, 0,
2646+ 0, 0, 0, 0, 0, 0, 0, 0,
2647+ 0x2A21, 0x2A22, 0x2A23, 0x2A24, 0x2A25, 0x2A26, 0x2A27, 0x2A28,
2648+ 0x2A29, 0x2A2A, 0, 0, 0, 0, 0, 0,
2649+ 0x2A35, 0x2A36, 0x2A37, 0x2A38, 0x2A39, 0x2A3A, 0x2A3B, 0x2A3C,
2650+ 0x2A3D, 0x2A3E, 0, 0, 0, 0, 0, 0,
2651+};
2652+static const unsigned short utf8_to_euc_E286[] = {
2653+ 0, 0, 0, 0, 0, 0, 0, 0,
2654+ 0, 0, 0, 0, 0, 0, 0, 0,
2655+ 0x222B, 0x222C, 0x222A, 0x222D, 0, 0, 0, 0,
2656+ 0, 0, 0, 0, 0, 0, 0, 0,
2657+ 0, 0, 0, 0, 0, 0, 0, 0,
2658+ 0, 0, 0, 0, 0, 0, 0, 0,
2659+ 0, 0, 0, 0, 0, 0, 0, 0,
2660+ 0, 0, 0, 0, 0, 0, 0, 0,
2661+};
2662+static const unsigned short utf8_to_euc_E287[] = {
2663+ 0, 0, 0, 0, 0, 0, 0, 0,
2664+ 0, 0, 0, 0, 0, 0, 0, 0,
2665+ 0, 0, 0x224D, 0, 0x224E, 0, 0, 0,
2666+ 0, 0, 0, 0, 0, 0, 0, 0,
2667+ 0, 0, 0, 0, 0, 0, 0, 0,
2668+ 0, 0, 0, 0, 0, 0, 0, 0,
2669+ 0, 0, 0, 0, 0, 0, 0, 0,
2670+ 0, 0, 0, 0, 0, 0, 0, 0,
2671+};
2672+static const unsigned short utf8_to_euc_E288[] = {
2673+ 0x224F, 0, 0x225F, 0x2250, 0, 0, 0, 0x2260,
2674+ 0x223A, 0, 0, 0x223B, 0, 0, 0, 0,
2675+ 0, 0x2D74, 0x215D, 0, 0, 0, 0, 0,
2676+ 0, 0, 0x2265, 0, 0, 0x2267, 0x2167, 0x2D78,
2677+ 0x225C, 0, 0, 0, 0, 0x2142, 0, 0x224A,
2678+ 0x224B, 0x2241, 0x2240, 0x2269, 0x226A, 0, 0x2D73, 0,
2679+ 0, 0, 0, 0, 0x2168, 0x2268, 0, 0,
2680+ 0, 0, 0, 0, 0, 0x2266, 0, 0,
2681+};
2682+static const unsigned short utf8_to_euc_E288_932[] = {
2683+ 0x224F, 0, 0x225F, 0x2250, 0, 0, 0, 0x2260,
2684+ 0x223A, 0, 0, 0x223B, 0, 0, 0, 0,
2685+ 0, 0x2D74, 0, 0, 0, 0, 0, 0,
2686+ 0, 0, 0x2265, 0, 0, 0x2267, 0x2167, 0x2D78,
2687+ 0x225C, 0, 0, 0, 0, 0x2142, 0, 0x224A,
2688+ 0x224B, 0x2241, 0x2240, 0x2269, 0x226A, 0, 0x2D73, 0,
2689+ 0, 0, 0, 0, 0x2168, 0x2268, 0, 0,
2690+ 0, 0, 0, 0, 0, 0x2266, 0, 0,
2691+};
2692+static const unsigned short utf8_to_euc_E288_mac[] = {
2693+ 0x224F, 0, 0x225F, 0x2250, 0, 0, 0, 0x2260,
2694+ 0x223A, 0, 0, 0x223B, 0, 0, 0, 0,
2695+ 0, 0, 0, 0, 0, 0, 0, 0,
2696+ 0, 0, 0x2265, 0, 0, 0x2267, 0x2167, 0x2F22,
2697+ 0x225C, 0, 0, 0, 0, 0x2142, 0, 0x224A,
2698+ 0x224B, 0x2241, 0x2240, 0x2269, 0x226A, 0, 0x2F21, 0,
2699+ 0, 0, 0, 0, 0x2168, 0x2268, 0, 0,
2700+ 0, 0, 0, 0, 0, 0x2266, 0, 0,
2701+};
2702+static const unsigned short utf8_to_euc_E289[] = {
2703+ 0, 0, 0, 0, 0, 0, 0, 0,
2704+ 0, 0, 0, 0, 0, 0, 0, 0,
2705+ 0, 0, 0x2262, 0, 0, 0, 0, 0,
2706+ 0, 0, 0, 0, 0, 0, 0, 0,
2707+ 0x2162, 0x2261, 0, 0, 0, 0, 0x2165, 0x2166,
2708+ 0, 0, 0x2263, 0x2264, 0, 0, 0, 0,
2709+ 0, 0, 0, 0, 0, 0, 0, 0,
2710+ 0, 0, 0, 0, 0, 0, 0, 0,
2711+};
2712+static const unsigned short utf8_to_euc_E28A[] = {
2713+ 0, 0, 0x223E, 0x223F, 0, 0, 0x223C, 0x223D,
2714+ 0, 0, 0, 0, 0, 0, 0, 0,
2715+ 0, 0, 0, 0, 0, 0, 0, 0,
2716+ 0, 0, 0, 0, 0, 0, 0, 0,
2717+ 0, 0, 0, 0, 0, 0x225D, 0, 0,
2718+ 0, 0, 0, 0, 0, 0, 0, 0,
2719+ 0, 0, 0, 0, 0, 0, 0, 0,
2720+ 0, 0, 0, 0, 0, 0, 0, 0x2D79,
2721+};
2722+static const unsigned short utf8_to_euc_E28A_mac[] = {
2723+ 0, 0, 0x223E, 0x223F, 0, 0, 0x223C, 0x223D,
2724+ 0, 0, 0, 0, 0, 0, 0, 0,
2725+ 0, 0, 0, 0, 0, 0, 0, 0,
2726+ 0, 0, 0, 0, 0, 0, 0, 0,
2727+ 0, 0, 0, 0, 0, 0x225D, 0, 0,
2728+ 0, 0, 0, 0, 0, 0, 0, 0,
2729+ 0, 0, 0, 0, 0, 0, 0, 0,
2730+ 0, 0, 0, 0, 0, 0, 0, 0x2F23,
2731+};
2732+static const unsigned short utf8_to_euc_E28C[] = {
2733+ 0, 0, 0, 0, 0, 0, 0, 0,
2734+ 0, 0, 0, 0, 0, 0, 0, 0,
2735+ 0, 0, 0x225E, 0, 0, 0, 0, 0,
2736+ 0, 0, 0, 0, 0, 0, 0, 0,
2737+ 0, 0, 0, 0, 0, 0, 0, 0,
2738+ 0, 0, 0, 0, 0, 0, 0, 0,
2739+ 0, 0, 0, 0, 0, 0, 0, 0,
2740+ 0, 0, 0, 0, 0, 0, 0, 0,
2741+};
2742+static const unsigned short utf8_to_euc_E291[] = {
2743+ 0, 0, 0, 0, 0, 0, 0, 0,
2744+ 0, 0, 0, 0, 0, 0, 0, 0,
2745+ 0, 0, 0, 0, 0, 0, 0, 0,
2746+ 0, 0, 0, 0, 0, 0, 0, 0,
2747+ 0x2D21, 0x2D22, 0x2D23, 0x2D24, 0x2D25, 0x2D26, 0x2D27, 0x2D28,
2748+ 0x2D29, 0x2D2A, 0x2D2B, 0x2D2C, 0x2D2D, 0x2D2E, 0x2D2F, 0x2D30,
2749+ 0x2D31, 0x2D32, 0x2D33, 0x2D34, 0, 0, 0, 0,
2750+ 0, 0, 0, 0, 0, 0, 0, 0,
2751+};
2752+static const unsigned short utf8_to_euc_E291_mac[] = {
2753+ 0, 0, 0, 0, 0, 0, 0, 0,
2754+ 0, 0, 0, 0, 0, 0, 0, 0,
2755+ 0, 0, 0, 0, 0, 0, 0, 0,
2756+ 0, 0, 0, 0, 0, 0, 0, 0,
2757+ 0x2921, 0x2922, 0x2923, 0x2924, 0x2925, 0x2926, 0x2927, 0x2928,
2758+ 0x2929, 0x292A, 0x292B, 0x292C, 0x292D, 0x292E, 0x292F, 0x2930,
2759+ 0x2931, 0x2932, 0x2933, 0x2934, 0, 0, 0, 0,
2760+ 0, 0, 0, 0, 0, 0, 0, 0,
2761+};
2762+static const unsigned short utf8_to_euc_E294[] = {
2763+ 0x2821, 0x282C, 0x2822, 0x282D, 0, 0, 0, 0,
2764+ 0, 0, 0, 0, 0x2823, 0, 0, 0x282E,
2765+ 0x2824, 0, 0, 0x282F, 0x2826, 0, 0, 0x2831,
2766+ 0x2825, 0, 0, 0x2830, 0x2827, 0x283C, 0, 0,
2767+ 0x2837, 0, 0, 0x2832, 0x2829, 0x283E, 0, 0,
2768+ 0x2839, 0, 0, 0x2834, 0x2828, 0, 0, 0x2838,
2769+ 0x283D, 0, 0, 0x2833, 0x282A, 0, 0, 0x283A,
2770+ 0x283F, 0, 0, 0x2835, 0x282B, 0, 0, 0x283B,
2771+};
2772+static const unsigned short utf8_to_euc_E295[] = {
2773+ 0, 0, 0x2840, 0, 0, 0, 0, 0,
2774+ 0, 0, 0, 0x2836, 0, 0, 0, 0,
2775+ 0, 0, 0, 0, 0, 0, 0, 0,
2776+ 0, 0, 0, 0, 0, 0, 0, 0,
2777+ 0, 0, 0, 0, 0, 0, 0, 0,
2778+ 0, 0, 0, 0, 0, 0, 0, 0,
2779+ 0, 0, 0, 0, 0, 0, 0, 0,
2780+ 0, 0, 0, 0, 0, 0, 0, 0,
2781+};
2782+static const unsigned short utf8_to_euc_E296[] = {
2783+ 0, 0, 0, 0, 0, 0, 0, 0,
2784+ 0, 0, 0, 0, 0, 0, 0, 0,
2785+ 0, 0, 0, 0, 0, 0, 0, 0,
2786+ 0, 0, 0, 0, 0, 0, 0, 0,
2787+ 0x2223, 0x2222, 0, 0, 0, 0, 0, 0,
2788+ 0, 0, 0, 0, 0, 0, 0, 0,
2789+ 0, 0, 0x2225, 0x2224, 0, 0, 0, 0,
2790+ 0, 0, 0, 0, 0x2227, 0x2226, 0, 0,
2791+};
2792+static const unsigned short utf8_to_euc_E297[] = {
2793+ 0, 0, 0, 0, 0, 0, 0x2221, 0x217E,
2794+ 0, 0, 0, 0x217B, 0, 0, 0x217D, 0x217C,
2795+ 0, 0, 0, 0, 0, 0, 0, 0,
2796+ 0, 0, 0, 0, 0, 0, 0, 0,
2797+ 0, 0, 0, 0, 0, 0, 0, 0,
2798+ 0, 0, 0, 0, 0, 0, 0, 0x227E,
2799+ 0, 0, 0, 0, 0, 0, 0, 0,
2800+ 0, 0, 0, 0, 0, 0, 0, 0,
2801+};
2802+static const unsigned short utf8_to_euc_E298[] = {
2803+ 0, 0, 0, 0, 0, 0x217A, 0x2179, 0,
2804+ 0, 0, 0, 0, 0, 0, 0, 0,
2805+ 0, 0, 0, 0, 0, 0, 0, 0,
2806+ 0, 0, 0, 0, 0, 0, 0, 0,
2807+ 0, 0, 0, 0, 0, 0, 0, 0,
2808+ 0, 0, 0, 0, 0, 0, 0, 0,
2809+ 0, 0, 0, 0, 0, 0, 0, 0,
2810+ 0, 0, 0, 0, 0, 0, 0, 0,
2811+};
2812+static const unsigned short utf8_to_euc_E299[] = {
2813+ 0x216A, 0, 0x2169, 0, 0, 0, 0, 0,
2814+ 0, 0, 0, 0, 0, 0, 0, 0,
2815+ 0, 0, 0, 0, 0, 0, 0, 0,
2816+ 0, 0, 0, 0, 0, 0, 0, 0,
2817+ 0, 0, 0, 0, 0, 0, 0, 0,
2818+ 0, 0, 0x2276, 0, 0, 0x2275, 0, 0x2274,
2819+ 0, 0, 0, 0, 0, 0, 0, 0,
2820+ 0, 0, 0, 0, 0, 0, 0, 0,
2821+};
2822+static const unsigned short utf8_to_euc_E380[] = {
2823+ 0x2121, 0x2122, 0x2123, 0x2137, 0, 0x2139, 0x213A, 0x213B,
2824+ 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
2825+ 0x215A, 0x215B, 0x2229, 0x222E, 0x214C, 0x214D, 0, 0,
2826+ 0, 0, 0, 0, 0x2141, 0x2D60, 0, 0x2D61,
2827+ 0, 0, 0, 0, 0, 0, 0, 0,
2828+ 0, 0, 0, 0, 0, 0, 0, 0,
2829+ 0, 0, 0, 0, 0, 0, 0, 0,
2830+ 0, 0, 0, 0, 0, 0, 0, 0,
2831+};
2832+static const unsigned short utf8_to_euc_E380_932[] = {
2833+ 0x2121, 0x2122, 0x2123, 0x2137, 0, 0x2139, 0x213A, 0x213B,
2834+ 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
2835+ 0x215A, 0x215B, 0x2229, 0x222E, 0x214C, 0x214D, 0, 0,
2836+ 0, 0, 0, 0, 0, 0x2D60, 0, 0x2D61,
2837+ 0, 0, 0, 0, 0, 0, 0, 0,
2838+ 0, 0, 0, 0, 0, 0, 0, 0,
2839+ 0, 0, 0, 0, 0, 0, 0, 0,
2840+ 0, 0, 0, 0, 0, 0, 0, 0,
2841+};
2842+static const unsigned short utf8_to_euc_E381[] = {
2843+ 0, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427,
2844+ 0x2428, 0x2429, 0x242A, 0x242B, 0x242C, 0x242D, 0x242E, 0x242F,
2845+ 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437,
2846+ 0x2438, 0x2439, 0x243A, 0x243B, 0x243C, 0x243D, 0x243E, 0x243F,
2847+ 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447,
2848+ 0x2448, 0x2449, 0x244A, 0x244B, 0x244C, 0x244D, 0x244E, 0x244F,
2849+ 0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457,
2850+ 0x2458, 0x2459, 0x245A, 0x245B, 0x245C, 0x245D, 0x245E, 0x245F,
2851+};
2852+static const unsigned short utf8_to_euc_E382[] = {
2853+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
2854+ 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E, 0x246F,
2855+ 0x2470, 0x2471, 0x2472, 0x2473, 0, 0, 0, 0,
2856+ 0, 0, 0, 0x212B, 0x212C, 0x2135, 0x2136, 0,
2857+ 0, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527,
2858+ 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, 0x252D, 0x252E, 0x252F,
2859+ 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
2860+ 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, 0x253F,
2861+};
2862+static const unsigned short utf8_to_euc_E382_932[] = {
2863+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
2864+ 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E, 0x246F,
2865+ 0x2470, 0x2471, 0x2472, 0x2473, 0x2574, 0, 0, 0,
2866+ 0, 0, 0, 0x212B, 0x212C, 0x2135, 0x2136, 0,
2867+ 0, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527,
2868+ 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, 0x252D, 0x252E, 0x252F,
2869+ 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
2870+ 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, 0x253F,
2871+};
2872+static const unsigned short utf8_to_euc_E383[] = {
2873+ 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547,
2874+ 0x2548, 0x2549, 0x254A, 0x254B, 0x254C, 0x254D, 0x254E, 0x254F,
2875+ 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557,
2876+ 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, 0x255F,
2877+ 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567,
2878+ 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x256D, 0x256E, 0x256F,
2879+ 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0,
2880+ 0, 0, 0, 0x2126, 0x213C, 0x2133, 0x2134, 0,
2881+};
2882+static const unsigned short utf8_to_euc_E388[] = {
2883+ 0, 0, 0, 0, 0, 0, 0, 0,
2884+ 0, 0, 0, 0, 0, 0, 0, 0,
2885+ 0, 0, 0, 0, 0, 0, 0, 0,
2886+ 0, 0, 0, 0, 0, 0, 0, 0,
2887+ 0, 0, 0, 0, 0, 0, 0, 0,
2888+ 0, 0, 0, 0, 0, 0, 0, 0,
2889+ 0, 0x2D6A, 0x2D6B, 0, 0, 0, 0, 0,
2890+ 0, 0x2D6C, 0, 0, 0, 0, 0, 0,
2891+};
2892+static const unsigned short utf8_to_euc_E388_mac[] = {
2893+ 0, 0, 0, 0, 0, 0, 0, 0,
2894+ 0, 0, 0, 0, 0, 0, 0, 0,
2895+ 0, 0, 0, 0, 0, 0, 0, 0,
2896+ 0, 0, 0, 0, 0, 0, 0, 0,
2897+ 0, 0, 0, 0, 0, 0, 0, 0,
2898+ 0, 0, 0, 0, 0, 0, 0, 0,
2899+ 0, 0x2D2E, 0x2D31, 0, 0, 0, 0, 0,
2900+ 0, 0x2D2C, 0, 0, 0, 0, 0, 0,
2901+};
2902+static const unsigned short utf8_to_euc_E38A[] = {
2903+ 0, 0, 0, 0, 0, 0, 0, 0,
2904+ 0, 0, 0, 0, 0, 0, 0, 0,
2905+ 0, 0, 0, 0, 0, 0, 0, 0,
2906+ 0, 0, 0, 0, 0, 0, 0, 0,
2907+ 0, 0, 0, 0, 0x2D65, 0x2D66, 0x2D67, 0x2D68,
2908+ 0x2D69, 0, 0, 0, 0, 0, 0, 0,
2909+ 0, 0, 0, 0, 0, 0, 0, 0,
2910+ 0, 0, 0, 0, 0, 0, 0, 0,
2911+};
2912+static const unsigned short utf8_to_euc_E38A_mac[] = {
2913+ 0, 0, 0, 0, 0, 0, 0, 0,
2914+ 0, 0, 0, 0, 0, 0, 0, 0,
2915+ 0, 0, 0, 0, 0, 0, 0, 0,
2916+ 0, 0, 0, 0, 0, 0, 0, 0,
2917+ 0, 0, 0, 0, 0x2D73, 0x2D74, 0x2D75, 0x2D76,
2918+ 0x2D77, 0, 0, 0, 0, 0, 0, 0,
2919+ 0, 0, 0, 0, 0, 0, 0, 0,
2920+ 0, 0, 0, 0, 0, 0, 0, 0,
2921+};
2922+static const unsigned short utf8_to_euc_E38C[] = {
2923+ 0, 0, 0, 0x2D46, 0, 0, 0, 0,
2924+ 0, 0, 0, 0, 0, 0x2D4A, 0, 0,
2925+ 0, 0, 0, 0, 0x2D41, 0, 0, 0,
2926+ 0x2D44, 0, 0, 0, 0, 0, 0, 0,
2927+ 0, 0, 0x2D42, 0x2D4C, 0, 0, 0x2D4B, 0x2D45,
2928+ 0, 0, 0, 0x2D4D, 0, 0, 0, 0,
2929+ 0, 0, 0, 0, 0, 0, 0x2D47, 0,
2930+ 0, 0, 0, 0x2D4F, 0, 0, 0, 0,
2931+};
2932+static const unsigned short utf8_to_euc_E38C_mac[] = {
2933+ 0, 0, 0, 0x2E29, 0, 0, 0, 0,
2934+ 0, 0, 0, 0, 0, 0x2E32, 0, 0,
2935+ 0, 0, 0, 0, 0x2E24, 0, 0, 0,
2936+ 0x2E2B, 0, 0, 0, 0, 0, 0, 0,
2937+ 0, 0, 0x2E22, 0x2E34, 0, 0, 0x2E35, 0x2E2D,
2938+ 0, 0, 0, 0x2E37, 0, 0, 0, 0,
2939+ 0, 0, 0, 0, 0, 0, 0x2E2A, 0,
2940+ 0, 0, 0, 0x2E36, 0, 0, 0, 0,
2941+};
2942+static const unsigned short utf8_to_euc_E38D[] = {
2943+ 0, 0, 0, 0, 0, 0, 0, 0,
2944+ 0, 0x2D40, 0x2D4E, 0, 0, 0x2D43, 0, 0,
2945+ 0, 0x2D48, 0, 0, 0, 0, 0, 0x2D49,
2946+ 0, 0, 0, 0, 0, 0, 0, 0,
2947+ 0, 0, 0, 0, 0, 0, 0, 0,
2948+ 0, 0, 0, 0, 0, 0, 0, 0,
2949+ 0, 0, 0, 0, 0, 0, 0, 0,
2950+ 0, 0, 0, 0x2D5F, 0x2D6F, 0x2D6E, 0x2D6D, 0,
2951+};
2952+static const unsigned short utf8_to_euc_E38D_mac[] = {
2953+ 0, 0, 0, 0, 0, 0, 0, 0,
2954+ 0, 0x2E21, 0x2E2F, 0, 0, 0x2E23, 0, 0,
2955+ 0, 0x2E2E, 0, 0, 0, 0, 0, 0x2E31,
2956+ 0, 0, 0, 0, 0, 0, 0, 0,
2957+ 0, 0, 0, 0, 0, 0, 0, 0,
2958+ 0, 0, 0, 0, 0, 0, 0, 0,
2959+ 0, 0, 0, 0, 0, 0, 0, 0,
2960+ 0, 0, 0, 0x2E6A, 0x2E69, 0x2E68, 0x2E67, 0,
2961+};
2962+static const unsigned short utf8_to_euc_E38E[] = {
2963+ 0, 0, 0, 0, 0, 0, 0, 0,
2964+ 0, 0, 0, 0, 0, 0, 0x2D53, 0x2D54,
2965+ 0, 0, 0, 0, 0, 0, 0, 0,
2966+ 0, 0, 0, 0, 0x2D50, 0x2D51, 0x2D52, 0,
2967+ 0, 0x2D56, 0, 0, 0, 0, 0, 0,
2968+ 0, 0, 0, 0, 0, 0, 0, 0,
2969+ 0, 0, 0, 0, 0, 0, 0, 0,
2970+ 0, 0, 0, 0, 0, 0, 0, 0,
2971+};
2972+static const unsigned short utf8_to_euc_E38E_mac[] = {
2973+ 0, 0, 0, 0, 0, 0, 0, 0,
2974+ 0, 0, 0, 0, 0, 0, 0x2B2B, 0x2B2D,
2975+ 0, 0, 0, 0, 0, 0, 0, 0,
2976+ 0, 0, 0, 0, 0x2B21, 0x2B23, 0x2B29, 0,
2977+ 0, 0x2B27, 0, 0, 0, 0, 0, 0,
2978+ 0, 0, 0, 0, 0, 0, 0, 0,
2979+ 0, 0, 0, 0, 0, 0, 0, 0,
2980+ 0, 0, 0, 0, 0, 0, 0, 0,
2981+};
2982+static const unsigned short utf8_to_euc_E38F[] = {
2983+ 0, 0, 0, 0, 0x2D55, 0, 0, 0,
2984+ 0, 0, 0, 0, 0, 0x2D63, 0, 0,
2985+ 0, 0, 0, 0, 0, 0, 0, 0,
2986+ 0, 0, 0, 0, 0, 0, 0, 0,
2987+ 0, 0, 0, 0, 0, 0, 0, 0,
2988+ 0, 0, 0, 0, 0, 0, 0, 0,
2989+ 0, 0, 0, 0, 0, 0, 0, 0,
2990+ 0, 0, 0, 0, 0, 0, 0, 0,
2991+};
2992+static const unsigned short utf8_to_euc_E38F_mac[] = {
2993+ 0, 0, 0, 0, 0x2B2E, 0, 0, 0,
2994+ 0, 0, 0, 0, 0, 0x2B7C, 0, 0,
2995+ 0, 0, 0, 0, 0, 0, 0, 0,
2996+ 0, 0, 0, 0, 0, 0, 0, 0,
2997+ 0, 0, 0, 0, 0, 0, 0, 0,
2998+ 0, 0, 0, 0, 0, 0, 0, 0,
2999+ 0, 0, 0, 0, 0, 0, 0, 0,
3000+ 0, 0, 0, 0, 0, 0, 0, 0,
3001+};
3002+static const unsigned short utf8_to_euc_E4B8[] = {
3003+ 0x306C, 0x437A, 0xB021, 0x3C37, 0xB022, 0xB023, 0, 0x4B7C,
3004+ 0x3E66, 0x3B30, 0x3E65, 0x323C, 0xB024, 0x4954, 0x4D3F, 0,
3005+ 0x5022, 0x312F, 0xB025, 0, 0x336E, 0x5023, 0x4024, 0x5242,
3006+ 0x3556, 0x4A3A, 0, 0, 0, 0, 0x3E67, 0xB026,
3007+ 0, 0x4E3E, 0, 0xB027, 0xB028, 0, 0x4A42, 0,
3008+ 0xB029, 0, 0x5024, 0xB02A, 0, 0x4366, 0xB02B, 0xB02C,
3009+ 0xB02D, 0x5025, 0x367A, 0, 0, 0xB02E, 0x5026, 0,
3010+ 0x345D, 0x4330, 0, 0x3C67, 0x5027, 0, 0, 0x5028,
3011+};
3012+static const unsigned short utf8_to_euc_E4B9[] = {
3013+ 0xB02F, 0xB030, 0x5029, 0x4735, 0xB031, 0x3557, 0, 0xB032,
3014+ 0, 0, 0, 0x4737, 0, 0x4663, 0x3843, 0x4B33,
3015+ 0, 0xB033, 0, 0, 0, 0x6949, 0x502A, 0x3E68,
3016+ 0x502B, 0x3235, 0xB034, 0, 0xB035, 0x3665, 0x3870, 0x4C69,
3017+ 0, 0, 0x5626, 0xB036, 0, 0, 0, 0,
3018+ 0xB037, 0xB038, 0, 0, 0, 0, 0, 0,
3019+ 0, 0x4D70, 0, 0x467D, 0xB039, 0xB03A, 0, 0,
3020+ 0, 0xB03B, 0, 0, 0, 0, 0x3425, 0xB03C,
3021+};
3022+static const unsigned short utf8_to_euc_E4BA[] = {
3023+ 0x3535, 0, 0x502C, 0, 0, 0x502D, 0x4E3B, 0,
3024+ 0x4D3D, 0x4168, 0x502F, 0x3B76, 0x4673, 0xB03D, 0x5032, 0,
3025+ 0, 0x313E, 0x385F, 0, 0x385E, 0x3066, 0xB03E, 0xB03F,
3026+ 0x4F4B, 0x4F4A, 0, 0x3A33, 0x3021, 0xB040, 0x5033, 0x5034,
3027+ 0x5035, 0x4B34, 0x5036, 0, 0x3872, 0x3067, 0x4B72, 0,
3028+ 0x357C, 0, 0, 0x357D, 0x357E, 0x4462, 0x4E3C, 0xB041,
3029+ 0x5037, 0, 0, 0x5038, 0, 0, 0x5039, 0,
3030+ 0, 0xB042, 0x3F4D, 0, 0, 0, 0, 0,
3031+};
3032+static const unsigned short utf8_to_euc_E4BB[] = {
3033+ 0x3D3A, 0x3F4E, 0x503E, 0xB043, 0x503C, 0, 0x503D, 0x3558,
3034+ 0, 0, 0x3A23, 0x3270, 0, 0x503B, 0x503A, 0x4A29,
3035+ 0xB044, 0, 0, 0, 0x3B46, 0x3B45, 0x423E, 0x503F,
3036+ 0x4955, 0x4067, 0xB045, 0xB046, 0, 0x2138, 0x5040, 0x5042,
3037+ 0xB047, 0xB048, 0xB049, 0x4265, 0x4E61, 0x304A, 0, 0,
3038+ 0xB04A, 0, 0, 0, 0, 0x5041, 0x323E, 0xB04B,
3039+ 0x3644, 0xB04C, 0x4367, 0xB04D, 0, 0xB04E, 0x376F, 0x5043,
3040+ 0, 0, 0, 0x4724, 0xF42F, 0xB04F, 0xB050, 0xB051,
3041+};
3042+static const unsigned short utf8_to_euc_E4BC[] = {
3043+ 0xB052, 0x346B, 0xB053, 0xB054, 0, 0, 0, 0,
3044+ 0xB055, 0x5044, 0x304B, 0xB056, 0xB057, 0x3860, 0x346C, 0x497A,
3045+ 0x4832, 0x3559, 0xB058, 0, 0, 0xB059, 0xB05A, 0xB05B,
3046+ 0, 0xB05C, 0x3271, 0, 0x5067, 0x4541, 0, 0,
3047+ 0, 0, 0, 0, 0, 0, 0, 0,
3048+ 0, 0, 0, 0, 0, 0, 0xB05D, 0x476C,
3049+ 0x5046, 0xB05E, 0, 0xB060, 0x483C, 0xB061, 0x4E62, 0xB062,
3050+ 0x3F2D, 0xB063, 0x3B47, 0xB064, 0x3B77, 0x3240, 0xB065, 0,
3051+};
3052+static const unsigned short utf8_to_euc_E4BD[] = {
3053+ 0xB066, 0, 0xB067, 0x4451, 0, 0, 0x4322, 0x504A,
3054+ 0xB068, 0xB069, 0, 0xB06A, 0xB06B, 0x304C, 0x4463, 0x3D3B,
3055+ 0x3A34, 0x4D24, 0xB06C, 0x424E, 0xB06D, 0x323F, 0xB06E, 0x5049,
3056+ 0xB06F, 0x4D3E, 0x5045, 0x5047, 0x3A6E, 0x5048, 0x5524, 0xB070,
3057+ 0xB05F, 0, 0, 0xB071, 0, 0, 0, 0,
3058+ 0, 0x5050, 0xB072, 0, 0xB073, 0, 0xB074, 0x5053,
3059+ 0x5051, 0xB075, 0, 0x3242, 0, 0x4A3B, 0x504B, 0xB076,
3060+ 0xB077, 0xB078, 0xB079, 0x504F, 0x3873, 0xB07A, 0xB07B, 0x3B48,
3061+};
3062+static const unsigned short utf8_to_euc_E4BE[] = {
3063+ 0, 0xB07C, 0xB07D, 0x3426, 0xB07E, 0xB121, 0x5054, 0,
3064+ 0x504C, 0xB122, 0xB123, 0x4E63, 0xB124, 0x3B78, 0xB125, 0x504D,
3065+ 0xB126, 0x5052, 0xB127, 0xB128, 0xB129, 0, 0x5055, 0xB12A,
3066+ 0x504E, 0xB12B, 0xB12C, 0x3621, 0, 0x304D, 0xB12D, 0xB12E,
3067+ 0x3622, 0x3241, 0, 0, 0, 0, 0, 0,
3068+ 0, 0, 0, 0x5525, 0, 0x4B79, 0x496E, 0x3874,
3069+ 0, 0, 0xB12F, 0, 0, 0x3F2F, 0x4E37, 0xB130,
3070+ 0, 0xB131, 0, 0xB132, 0xB133, 0xB134, 0xB135, 0x4A58,
3071+};
3072+static const unsigned short utf8_to_euc_E4BF[] = {
3073+ 0xB136, 0xB137, 0x3738, 0x4225, 0x3264, 0xB138, 0xB139, 0,
3074+ 0xB13A, 0xB13B, 0x3D53, 0xB13C, 0xB13D, 0xB13E, 0x5059, 0xB13F,
3075+ 0x505E, 0x505C, 0xB140, 0, 0x5057, 0, 0, 0x422F,
3076+ 0x505A, 0, 0x505D, 0x505B, 0xB141, 0x4A5D, 0, 0x5058,
3077+ 0xB142, 0x3F2E, 0xB143, 0x4B73, 0x505F, 0x5060, 0, 0,
3078+ 0, 0, 0, 0, 0, 0, 0x3D24, 0x506D,
3079+ 0xB144, 0, 0xB145, 0x4750, 0, 0x4936, 0x5068, 0,
3080+ 0x4A70, 0, 0x3236, 0, 0xB146, 0xB147, 0x506C, 0xB148,
3081+};
3082+static const unsigned short utf8_to_euc_E580[] = {
3083+ 0xB149, 0xB14A, 0, 0, 0xB14B, 0x5066, 0x506F, 0xB14C,
3084+ 0, 0x4152, 0xB14D, 0x3844, 0xB14E, 0x475C, 0xB14F, 0x6047,
3085+ 0xB150, 0x506E, 0x455D, 0xB151, 0x5063, 0, 0x3876, 0xB152,
3086+ 0xB153, 0x3875, 0x5061, 0xB154, 0xB155, 0xB156, 0xB157, 0x3C5A,
3087+ 0, 0x5069, 0xB158, 0x4A6F, 0x434D, 0x5065, 0x3771, 0xB159,
3088+ 0x5062, 0x506A, 0x5064, 0x4E51, 0x506B, 0x4F41, 0xB15A, 0,
3089+ 0xB15B, 0, 0xB15C, 0xB15D, 0, 0xB15E, 0x3666, 0,
3090+ 0, 0x3770, 0, 0xB176, 0, 0, 0, 0,
3091+};
3092+static const unsigned short utf8_to_euc_E581[] = {
3093+ 0xB15F, 0xB160, 0xB161, 0x5070, 0, 0xB162, 0xB163, 0x5071,
3094+ 0x5075, 0x304E, 0xB164, 0, 0xB165, 0, 0xB166, 0x4A50,
3095+ 0x5074, 0xB167, 0xB168, 0xB169, 0, 0x5073, 0x5077, 0xB16A,
3096+ 0, 0xB16B, 0x5076, 0, 0x4464, 0, 0, 0xB16C,
3097+ 0xB16D, 0, 0xB16E, 0xB16F, 0, 0x3772, 0xB170, 0xB171,
3098+ 0, 0, 0xB172, 0, 0x5078, 0xB173, 0, 0,
3099+ 0xB174, 0xB175, 0x3C45, 0, 0x4226, 0x4465, 0x3676, 0,
3100+ 0x5079, 0, 0, 0, 0, 0x3536, 0, 0,
3101+};
3102+static const unsigned short utf8_to_euc_E582[] = {
3103+ 0x507A, 0xB177, 0, 0xB178, 0xB179, 0x507C, 0xB17A, 0,
3104+ 0, 0, 0xB17B, 0, 0, 0x4B35, 0xB17C, 0xB17D,
3105+ 0xB17E, 0x3766, 0xB221, 0xB222, 0xB223, 0, 0xB224, 0,
3106+ 0x3B31, 0x4877, 0x507B, 0xB225, 0xB226, 0, 0xB227, 0xB228,
3107+ 0xB229, 0xB22A, 0xB22B, 0, 0, 0, 0, 0,
3108+ 0, 0, 0xB22C, 0, 0x3A45, 0x4D43, 0, 0xB22D,
3109+ 0xB22E, 0, 0x507E, 0x5123, 0x507D, 0x3A44, 0, 0x3D7D,
3110+ 0, 0xB22F, 0xB230, 0, 0, 0xB231, 0x3739, 0,
3111+};
3112+static const unsigned short utf8_to_euc_E583[] = {
3113+ 0xB232, 0, 0x5124, 0xB233, 0xB234, 0x364F, 0, 0xB235,
3114+ 0, 0x5121, 0x5122, 0, 0xB236, 0x462F, 0xB237, 0x417C,
3115+ 0xB238, 0x3623, 0, 0xB239, 0xB23A, 0x4B4D, 0x5125, 0,
3116+ 0xB23B, 0, 0x4E3D, 0, 0xB23C, 0xB23D, 0x5126, 0xB23E,
3117+ 0, 0, 0xB23F, 0x5129, 0xB240, 0x5127, 0xB241, 0x414E,
3118+ 0xB242, 0xB243, 0, 0, 0, 0x5128, 0x512A, 0xB244,
3119+ 0, 0xB245, 0xB251, 0, 0xF430, 0x512C, 0xB246, 0,
3120+ 0, 0x512B, 0xB247, 0x4A48, 0, 0, 0xB248, 0,
3121+};
3122+static const unsigned short utf8_to_euc_E584[] = {
3123+ 0x3537, 0x512E, 0x512F, 0xB249, 0x322F, 0, 0xB24A, 0xB24B,
3124+ 0xB24C, 0x512D, 0, 0xB24D, 0xB24E, 0xB24F, 0xB250, 0,
3125+ 0xB252, 0, 0x3C74, 0, 0x5132, 0x5131, 0x5130, 0xB253,
3126+ 0x5056, 0xB254, 0x5133, 0xB255, 0xB256, 0xB257, 0xB258, 0x3D7E,
3127+ 0, 0x5134, 0, 0xB259, 0, 0, 0, 0xB25A,
3128+ 0xB25B, 0, 0x4D25, 0, 0xB25C, 0xB25D, 0, 0xB25E,
3129+ 0, 0xB25F, 0x4C59, 0xB260, 0xB261, 0xB262, 0, 0x5136,
3130+ 0xB263, 0xB264, 0x5135, 0x5138, 0x5137, 0, 0, 0x5139,
3131+};
3132+static const unsigned short utf8_to_euc_E585[] = {
3133+ 0x513A, 0x3074, 0xB265, 0x3835, 0x373B, 0x3D3C, 0x437B, 0x3624,
3134+ 0x4068, 0x3877, 0xB266, 0x396E, 0x513C, 0x4C48, 0x4546, 0xB267,
3135+ 0x3B79, 0, 0x513B, 0xB268, 0x513D, 0xB269, 0, 0xB26A,
3136+ 0xB26B, 0, 0x455E, 0, 0x3375, 0, 0, 0xB26C,
3137+ 0, 0, 0x513E, 0, 0xB26D, 0x467E, 0xB26E, 0,
3138+ 0x4134, 0x5140, 0x5141, 0x482C, 0x3878, 0x4F3B, 0x5142, 0,
3139+ 0, 0x3626, 0, 0, 0, 0x4A3C, 0x4236, 0x3671,
3140+ 0x4535, 0, 0, 0, 0x3773, 0, 0xB26F, 0,
3141+};
3142+static const unsigned short utf8_to_euc_E586[] = {
3143+ 0x5143, 0, 0x5144, 0xB270, 0xB271, 0x4662, 0x315F, 0,
3144+ 0, 0x5147, 0x3A7D, 0xB272, 0x5146, 0x3A46, 0xB273, 0x5148,
3145+ 0x666E, 0x5149, 0x4B41, 0x514A, 0, 0x514B, 0x514C, 0x3E69,
3146+ 0xB274, 0x3C4C, 0, 0, 0, 0xB275, 0, 0,
3147+ 0x3427, 0xB276, 0x514F, 0xB277, 0x514D, 0x4C3D, 0x514E, 0,
3148+ 0x495A, 0x5150, 0x5151, 0x5152, 0x455F, 0xB278, 0, 0,
3149+ 0x5156, 0x5154, 0x5155, 0x5153, 0x3A63, 0x5157, 0x4C6A, 0x4E64,
3150+ 0xB279, 0, 0xB27A, 0, 0xB27B, 0x5158, 0xB27C, 0xB27D,
3151+};
3152+static const unsigned short utf8_to_euc_E587[] = {
3153+ 0, 0, 0xB27E, 0, 0x4028, 0x5159, 0x3D5A, 0,
3154+ 0xB321, 0x515A, 0, 0x437C, 0x4E3F, 0x4560, 0, 0xB322,
3155+ 0, 0xB323, 0xB324, 0xB325, 0, 0xB326, 0x5245, 0,
3156+ 0xB327, 0, 0, 0x515B, 0x7425, 0x3645, 0xB328, 0,
3157+ 0x515C, 0x4B5E, 0xB329, 0, 0, 0xB32A, 0x3D68, 0x427C,
3158+ 0, 0x515E, 0x4664, 0, 0xF431, 0x515F, 0xB32B, 0,
3159+ 0x5160, 0x332E, 0xB32C, 0xB32D, 0xB32E, 0x5161, 0x3627, 0xB32F,
3160+ 0x464C, 0x317A, 0x3D50, 0, 0, 0x4821, 0x5162, 0,
3161+};
3162+static const unsigned short utf8_to_euc_E588[] = {
3163+ 0x4561, 0xB330, 0xB331, 0x3F4F, 0x5163, 0xB332, 0x4A2C, 0x405A,
3164+ 0x3422, 0, 0x3429, 0x5164, 0, 0, 0x5166, 0,
3165+ 0, 0x373A, 0xB333, 0xB334, 0x5165, 0xB335, 0xB336, 0x4E73,
3166+ 0xB337, 0, 0, 0, 0, 0x3D69, 0, 0,
3167+ 0, 0, 0xB338, 0, 0x483D, 0x4A4C, 0, 0x5167,
3168+ 0xB339, 0x4D78, 0x5168, 0, 0, 0, 0x5169, 0,
3169+ 0x457E, 0xB33A, 0xB33B, 0x516A, 0, 0xB33C, 0x4029, 0x3A7E,
3170+ 0x3774, 0x516B, 0x3B49, 0x396F, 0xB33D, 0, 0, 0,
3171+};
3172+static const unsigned short utf8_to_euc_E589[] = {
3173+ 0, 0, 0, 0x4466, 0x516D, 0xB33E, 0, 0x4227,
3174+ 0, 0xB33F, 0x3A6F, 0x516E, 0x516F, 0x4130, 0, 0x516C,
3175+ 0, 0, 0, 0, 0x5171, 0xB340, 0x4B36, 0xB341,
3176+ 0xB342, 0, 0xB343, 0x3964, 0xB344, 0, 0x5170, 0xB345,
3177+ 0xB346, 0xB347, 0, 0x3775, 0x3A5E, 0x476D, 0xB348, 0,
3178+ 0, 0x5174, 0x5172, 0, 0, 0, 0xB349, 0x497B,
3179+ 0x3E6A, 0x517B, 0x3364, 0x5175, 0x5173, 0x414F, 0, 0xB34A,
3180+ 0xB34B, 0xB34C, 0, 0, 0, 0x5177, 0, 0x5176,
3181+};
3182+static const unsigned short utf8_to_euc_E58A[] = {
3183+ 0xB34D, 0, 0xB34E, 0x3344, 0, 0xB34F, 0, 0x3760,
3184+ 0x517C, 0x4E2D, 0xB350, 0, 0xB351, 0x5178, 0, 0,
3185+ 0, 0x517D, 0x517A, 0xB352, 0x5179, 0xB353, 0xB354, 0xB355,
3186+ 0xB356, 0, 0xB357, 0x4E4F, 0xB358, 0, 0, 0x3879,
3187+ 0x3243, 0, 0, 0x4E74, 0xB359, 0xB35A, 0xB35B, 0xB35C,
3188+ 0, 0x3D75, 0x4558, 0x3965, 0x5222, 0x5223, 0, 0xB35D,
3189+ 0xB35E, 0x4E65, 0, 0, 0x4F2B, 0x5225, 0xB35F, 0xB360,
3190+ 0xB361, 0x387A, 0xB362, 0xB363, 0x5224, 0xB364, 0x332F, 0,
3191+};
3192+static const unsigned short utf8_to_euc_E58B[] = {
3193+ 0xB365, 0x5226, 0, 0x4B56, 0xB366, 0x443C, 0xB367, 0x4D26,
3194+ 0xB368, 0x4A59, 0, 0, 0xB369, 0x5227, 0, 0xB36A,
3195+ 0, 0xB36B, 0x7055, 0, 0xB36C, 0x4630, 0xB36D, 0x5228,
3196+ 0x342A, 0x4C33, 0, 0xB36E, 0xB36F, 0x3E21, 0x5229, 0x4A67,
3197+ 0x522D, 0xB370, 0x402A, 0x522A, 0x3650, 0xB371, 0x522B, 0x342B,
3198+ 0xB372, 0xB373, 0xB374, 0, 0xB375, 0, 0, 0,
3199+ 0xB376, 0xB377, 0x372E, 0x522E, 0xB378, 0x522F, 0xB379, 0xB37A,
3200+ 0x5230, 0x5231, 0x3C5B, 0, 0, 0, 0x387B, 0x4C5E,
3201+};
3202+static const unsigned short utf8_to_euc_E58C[] = {
3203+ 0xB37B, 0x4C68, 0x4677, 0xB37C, 0, 0x4A71, 0x5232, 0xF432,
3204+ 0x5233, 0, 0xB37D, 0xB37E, 0xB421, 0x5235, 0, 0x5237,
3205+ 0x5236, 0xB422, 0, 0xB423, 0, 0x5238, 0x323D, 0x4B4C,
3206+ 0xB424, 0x3A7C, 0x5239, 0xB425, 0xB426, 0x4159, 0xB427, 0xB428,
3207+ 0x3E22, 0x3629, 0, 0x523A, 0xF433, 0xB429, 0, 0xB42A,
3208+ 0xB42B, 0xB42C, 0x485B, 0xB42D, 0xB42E, 0xB42F, 0, 0x523B,
3209+ 0xB430, 0x523C, 0xB431, 0x523D, 0, 0xB432, 0, 0,
3210+ 0x523E, 0x4924, 0x3668, 0x3065, 0xB433, 0xB434, 0xB435, 0x463F,
3211+};
3212+static const unsigned short utf8_to_euc_E58D[] = {
3213+ 0x523F, 0x3D3D, 0xB436, 0x4069, 0, 0x5241, 0x5240, 0x3E23,
3214+ 0x3861, 0x5243, 0x483E, 0xB438, 0xB437, 0x5244, 0, 0,
3215+ 0, 0x485C, 0x4234, 0x426E, 0x3628, 0, 0, 0x466E,
3216+ 0x4331, 0xB439, 0x476E, 0xB43A, 0x4B4E, 0, 0x5246, 0,
3217+ 0x406A, 0xB43B, 0, 0xB43C, 0, 0xB43D, 0x3735, 0,
3218+ 0, 0x5247, 0, 0, 0xB43E, 0xB43F, 0x5248, 0x312C,
3219+ 0x3075, 0x346D, 0xB440, 0x4228, 0x3551, 0x4D71, 0, 0x524B,
3220+ 0x3237, 0xB441, 0, 0x524A, 0, 0, 0xB442, 0x362A,
3221+};
3222+static const unsigned short utf8_to_euc_E58E[] = {
3223+ 0, 0, 0x524C, 0xB443, 0x4C71, 0, 0, 0xB444,
3224+ 0xB445, 0, 0, 0, 0, 0, 0xB446, 0,
3225+ 0, 0, 0, 0xB447, 0xB448, 0, 0x524D, 0,
3226+ 0x4E52, 0xB449, 0x387C, 0, 0, 0xB44A, 0, 0x3836,
3227+ 0x524E, 0xB44B, 0, 0, 0xB44C, 0x5250, 0x524F, 0,
3228+ 0x3F5F, 0x3139, 0xB44D, 0xB44E, 0, 0x315E, 0x5251, 0xB44F,
3229+ 0x5252, 0, 0xB450, 0x3837, 0xB451, 0xB452, 0x5253, 0xB453,
3230+ 0xB454, 0, 0xB455, 0x356E, 0, 0xB456, 0, 0,
3231+};
3232+static const unsigned short utf8_to_euc_E58F[] = {
3233+ 0xB457, 0, 0x3B32, 0x5254, 0, 0xB458, 0, 0,
3234+ 0x4B74, 0x3A35, 0x355A, 0x4D27, 0x4150, 0x483F, 0x3C7D, 0xB459,
3235+ 0, 0, 0xB45A, 0xB45B, 0x3D47, 0xB45C, 0x3C68, 0x3C75,
3236+ 0, 0x3D76, 0xB45D, 0x4840, 0, 0xB45E, 0xB45F, 0x5257,
3237+ 0xB460, 0x3143, 0x4151, 0x387D, 0x3845, 0x3667, 0xB461, 0xB462,
3238+ 0x525B, 0x4321, 0x427E, 0x362B, 0x3E24, 0x525C, 0x525A, 0x3244,
3239+ 0x4266, 0x3C38, 0x3B4B, 0x3126, 0, 0xB463, 0x3370, 0x3966,
3240+ 0x3B4A, 0, 0x525D, 0, 0, 0, 0, 0,
3241+};
3242+static const unsigned short utf8_to_euc_E590[] = {
3243+ 0, 0x525E, 0xB464, 0x3549, 0x3346, 0, 0, 0,
3244+ 0x3967, 0x3548, 0x445F, 0x3125, 0x4631, 0x4C3E, 0x3921, 0x4D79,
3245+ 0x4547, 0x387E, 0, 0xB465, 0, 0, 0, 0,
3246+ 0, 0, 0xB466, 0x372F, 0, 0x5267, 0, 0x3663,
3247+ 0x4B4A, 0xB467, 0, 0, 0, 0, 0x485D, 0xB468,
3248+ 0xB469, 0x5266, 0xB46A, 0x345E, 0x5261, 0x5262, 0x5264, 0xB46B,
3249+ 0, 0xB46C, 0, 0, 0xB46D, 0xB46E, 0x5265, 0,
3250+ 0x355B, 0x3F61, 0, 0x4A2D, 0x5263, 0x525F, 0x3863, 0,
3251+};
3252+static const unsigned short utf8_to_euc_E591[] = {
3253+ 0x5260, 0, 0x4F24, 0xB46F, 0xB470, 0, 0x4A72, 0xB471,
3254+ 0x4468, 0x3862, 0x3970, 0, 0, 0xB472, 0x5268, 0xB473,
3255+ 0, 0x465D, 0, 0, 0, 0, 0, 0,
3256+ 0, 0, 0, 0, 0, 0, 0xB474, 0x526C,
3257+ 0, 0, 0xB475, 0, 0xB476, 0, 0xB477, 0xB478,
3258+ 0x3C7E, 0xB479, 0x3C76, 0xB47A, 0, 0xB47B, 0xB47C, 0,
3259+ 0x526F, 0x526D, 0, 0x4C23, 0xB47D, 0x526A, 0x5273, 0x526E,
3260+ 0, 0, 0, 0x5271, 0x3846, 0x4C3F, 0, 0xB47E,
3261+};
3262+static const unsigned short utf8_to_euc_E592[] = {
3263+ 0x5272, 0xB521, 0, 0xB522, 0x5274, 0xB523, 0x5276, 0,
3264+ 0xB524, 0xB525, 0xF435, 0x3A70, 0x4F42, 0xB526, 0x526B, 0x5269,
3265+ 0x5275, 0xB527, 0x5270, 0, 0, 0xB528, 0xB529, 0,
3266+ 0, 0, 0, 0, 0xB52A, 0, 0, 0xB52B,
3267+ 0, 0xB52C, 0x5278, 0, 0x5323, 0x527A, 0xB52D, 0xB52E,
3268+ 0x527E, 0xB52F, 0xB530, 0x5321, 0x527B, 0xB531, 0xB532, 0x533E,
3269+ 0, 0xB533, 0x3A69, 0x3331, 0, 0, 0, 0xB534,
3270+ 0x5279, 0xB535, 0xB536, 0xB537, 0x5325, 0x3076, 0x5324, 0xB538,
3271+};
3272+static const unsigned short utf8_to_euc_E593[] = {
3273+ 0x3025, 0x494A, 0x5322, 0, 0x527C, 0, 0xB539, 0x5277,
3274+ 0x527D, 0x3A48, 0xB53A, 0, 0, 0xB53B, 0xB53C, 0,
3275+ 0, 0, 0, 0, 0, 0, 0, 0,
3276+ 0x5326, 0, 0, 0, 0, 0, 0, 0,
3277+ 0xB53D, 0x3077, 0x532F, 0, 0, 0x5327, 0x5328, 0,
3278+ 0x3E25, 0x4B69, 0xB53E, 0, 0xB53F, 0x532D, 0x532C, 0xB540,
3279+ 0, 0, 0x452F, 0, 0, 0, 0xB541, 0,
3280+ 0, 0, 0x532E, 0, 0xB542, 0x532B, 0xB543, 0xB544,
3281+};
3282+static const unsigned short utf8_to_euc_E594[] = {
3283+ 0xB545, 0xB546, 0, 0, 0x3134, 0xB547, 0x3A36, 0x3F30,
3284+ 0xB548, 0xB549, 0, 0, 0xB54A, 0xB54B, 0xB54C, 0x5329,
3285+ 0x4562, 0, 0, 0, 0x532A, 0xB54D, 0x3022, 0,
3286+ 0, 0, 0, 0, 0, 0, 0, 0,
3287+ 0, 0, 0, 0, 0, 0, 0, 0,
3288+ 0, 0, 0xB54E, 0xB54F, 0, 0, 0x5334, 0x4D23,
3289+ 0, 0x3E27, 0xB550, 0x533A, 0, 0xB551, 0xB552, 0,
3290+ 0x5339, 0x5330, 0, 0xB553, 0xB554, 0xB555, 0x4243, 0,
3291+};
3292+static const unsigned short utf8_to_euc_E595[] = {
3293+ 0x5331, 0xB556, 0, 0, 0x426F, 0x5336, 0x3E26, 0xB557,
3294+ 0, 0xB558, 0xB559, 0, 0x5333, 0xB55A, 0, 0x4C64,
3295+ 0xB55B, 0xB55C, 0, 0x373C, 0, 0, 0x5337, 0x5338,
3296+ 0xB55D, 0, 0xB55E, 0xB55F, 0x5335, 0x533B, 0xB560, 0,
3297+ 0xB561, 0xB562, 0, 0x5332, 0xB563, 0, 0xB564, 0,
3298+ 0, 0, 0, 0, 0, 0, 0, 0,
3299+ 0, 0, 0, 0, 0, 0, 0, 0,
3300+ 0, 0, 0, 0x5341, 0x5346, 0, 0x5342, 0xB565,
3301+};
3302+static const unsigned short utf8_to_euc_E596[] = {
3303+ 0x533D, 0xB566, 0xB567, 0x5347, 0x4131, 0, 0xB568, 0x5349,
3304+ 0xB569, 0x3922, 0x533F, 0x437D, 0, 0, 0xB56A, 0xB56B,
3305+ 0, 0xB56C, 0xB56D, 0xB56E, 0xB56F, 0, 0, 0xB570,
3306+ 0x5343, 0x533C, 0x342D, 0, 0x346E, 0x3365, 0x5344, 0x5340,
3307+ 0, 0, 0, 0xB571, 0xB572, 0, 0, 0x3776,
3308+ 0x534A, 0x5348, 0x4153, 0x354A, 0x362C, 0xB573, 0x5345, 0,
3309+ 0x3674, 0, 0xB574, 0, 0, 0, 0x3144, 0,
3310+ 0, 0, 0, 0, 0, 0, 0, 0xB575,
3311+};
3312+static const unsigned short utf8_to_euc_E597[] = {
3313+ 0, 0xB576, 0, 0xB577, 0x534E, 0x534C, 0xB578, 0x5427,
3314+ 0, 0xB579, 0, 0xB57A, 0xB57B, 0, 0xB57C, 0,
3315+ 0, 0xB57D, 0xB57E, 0xB621, 0x5351, 0, 0, 0xB622,
3316+ 0xB623, 0, 0x534B, 0xB624, 0x534F, 0, 0xB625, 0x534D,
3317+ 0, 0, 0xB626, 0x3B4C, 0x5350, 0, 0, 0,
3318+ 0, 0xB627, 0, 0, 0, 0, 0, 0,
3319+ 0, 0, 0, 0, 0, 0, 0xB628, 0x5353,
3320+ 0, 0x5358, 0, 0, 0, 0x5356, 0x5355, 0xB629,
3321+};
3322+static const unsigned short utf8_to_euc_E598[] = {
3323+ 0, 0, 0, 0, 0, 0xB62A, 0x4332, 0,
3324+ 0xB62B, 0x3245, 0xB62C, 0, 0, 0xB62D, 0xB62E, 0xB62F,
3325+ 0xB630, 0xB631, 0xB632, 0, 0x5352, 0, 0x5354, 0x3E28,
3326+ 0x3133, 0xB633, 0, 0x5357, 0, 0, 0, 0,
3327+ 0, 0, 0, 0, 0, 0, 0, 0,
3328+ 0, 0x325E, 0, 0, 0xB634, 0, 0, 0x5362,
3329+ 0xB635, 0x3E7C, 0x535E, 0xB636, 0x535C, 0xB637, 0x535D, 0xB638,
3330+ 0x535F, 0xB639, 0, 0xB63A, 0xB63B, 0xB63C, 0, 0xB63D,
3331+};
3332+static const unsigned short utf8_to_euc_E599[] = {
3333+ 0xB63E, 0xB63F, 0x313D, 0xB640, 0xB641, 0, 0xB642, 0,
3334+ 0, 0xB643, 0, 0xB644, 0x4139, 0xB645, 0x5359, 0xB646,
3335+ 0x535A, 0, 0, 0, 0xB647, 0, 0, 0,
3336+ 0, 0, 0, 0x337A, 0, 0, 0xB648, 0,
3337+ 0xB649, 0xB64A, 0xB64B, 0xB64C, 0x5361, 0, 0xB64D, 0,
3338+ 0x346F, 0xB64E, 0x5364, 0x5360, 0x5363, 0xB64F, 0, 0xB650,
3339+ 0, 0xB651, 0xB652, 0, 0x4A2E, 0xB653, 0, 0,
3340+ 0x4655, 0, 0x4838, 0, 0, 0, 0, 0,
3341+};
3342+static const unsigned short utf8_to_euc_E59A[] = {
3343+ 0x5366, 0, 0, 0, 0xB654, 0xB655, 0x5365, 0x3345,
3344+ 0xB656, 0, 0x5367, 0xB657, 0xB658, 0, 0, 0x536A,
3345+ 0, 0, 0, 0, 0x5369, 0xB659, 0, 0,
3346+ 0, 0xB65A, 0xB65B, 0, 0, 0xB65C, 0xB65D, 0xB65E,
3347+ 0x5368, 0, 0x4739, 0, 0, 0x536B, 0xB65F, 0xB660,
3348+ 0xB661, 0xB662, 0, 0xB663, 0xB664, 0xB665, 0x536C, 0,
3349+ 0, 0xB666, 0, 0xB667, 0x536E, 0, 0x536D, 0xB668,
3350+ 0, 0, 0, 0, 0x5370, 0, 0xB669, 0,
3351+};
3352+static const unsigned short utf8_to_euc_E59B[] = {
3353+ 0x5373, 0x5371, 0x536F, 0x5372, 0, 0xB66A, 0, 0,
3354+ 0x5374, 0xB66B, 0xB66C, 0xB66D, 0xB670, 0xB671, 0x5375, 0xB66E,
3355+ 0xB66F, 0x5376, 0, 0x5377, 0, 0, 0, 0x5378,
3356+ 0x5145, 0xB672, 0x3C7C, 0x3B4D, 0xB673, 0xB674, 0x3273, 0xB675,
3357+ 0x3078, 0xB676, 0, 0x4344, 0xB677, 0xB678, 0xB679, 0xB67A,
3358+ 0xB67B, 0, 0, 0xB67D, 0, 0xB67E, 0x5379, 0,
3359+ 0x3A24, 0xB67C, 0x304F, 0x3F5E, 0, 0, 0xB721, 0xB722,
3360+ 0, 0x537A, 0x3847, 0, 0, 0x3971, 0, 0x537C,
3361+};
3362+static const unsigned short utf8_to_euc_E59C[] = {
3363+ 0x537B, 0xB723, 0xB724, 0x4A60, 0x537D, 0, 0, 0xB725,
3364+ 0x5421, 0x537E, 0xB726, 0x5422, 0xB727, 0x5423, 0, 0x3777,
3365+ 0, 0xB728, 0x3160, 0x5424, 0, 0xB729, 0x5426, 0,
3366+ 0x5425, 0, 0xB72A, 0xB72B, 0x5428, 0xB72C, 0, 0x455A,
3367+ 0xB72D, 0, 0xB72E, 0xB72F, 0xB730, 0xB731, 0x5429, 0x3035,
3368+ 0x3A5F, 0xB732, 0xB733, 0, 0xB734, 0x373D, 0xB735, 0xB736,
3369+ 0x434F, 0, 0, 0xB737, 0xB738, 0, 0, 0x542A,
3370+ 0x542B, 0, 0, 0x542D, 0, 0xB739, 0xB73A, 0xB73B,
3371+};
3372+static const unsigned short utf8_to_euc_E59D[] = {
3373+ 0x542E, 0, 0x3A64, 0, 0, 0xB73C, 0xB73D, 0x3651,
3374+ 0, 0, 0x4B37, 0, 0xB73E, 0xB73F, 0x542C, 0x542F,
3375+ 0x3A41, 0x3923, 0xB740, 0, 0, 0, 0, 0,
3376+ 0, 0xF436, 0, 0, 0, 0, 0, 0,
3377+ 0, 0x5433, 0xB741, 0, 0x3A25, 0xB742, 0x4333, 0xB743,
3378+ 0xB744, 0x5430, 0x445A, 0xB745, 0, 0xB746, 0xB747, 0xB748,
3379+ 0xB749, 0xB74A, 0, 0xB74B, 0xB74C, 0xB74D, 0, 0xB74E,
3380+ 0, 0xB74F, 0xB750, 0xB751, 0xB752, 0, 0xB753, 0x5434,
3381+};
3382+static const unsigned short utf8_to_euc_E59E[] = {
3383+ 0, 0xB754, 0x3F62, 0xB755, 0, 0, 0, 0,
3384+ 0x5432, 0x5435, 0, 0x373F, 0xB756, 0, 0, 0,
3385+ 0, 0, 0, 0x5436, 0xB757, 0xB760, 0, 0xB758,
3386+ 0, 0xB759, 0xB75A, 0, 0xB75B, 0xB75C, 0xB75D, 0xB75E,
3387+ 0x5437, 0xB75F, 0x3924, 0x3340, 0x5439, 0, 0, 0xB761,
3388+ 0xB762, 0xB763, 0x543A, 0, 0xB764, 0, 0, 0,
3389+ 0x543B, 0, 0, 0x5438, 0, 0, 0, 0,
3390+ 0xB765, 0, 0, 0, 0, 0xB766, 0, 0,
3391+};
3392+static const unsigned short utf8_to_euc_E59F[] = {
3393+ 0x5431, 0, 0, 0x543C, 0, 0, 0x543D, 0xB767,
3394+ 0xB768, 0, 0, 0x4B64, 0xB769, 0, 0x3E6B, 0xB76A,
3395+ 0, 0, 0x543F, 0x5440, 0x543E, 0xB76B, 0x5442, 0,
3396+ 0, 0, 0, 0, 0x4738, 0xB76C, 0xB76D, 0x3068,
3397+ 0x4956, 0xB77E, 0, 0x5443, 0xB76E, 0, 0xB76F, 0xB770,
3398+ 0, 0xB771, 0, 0, 0, 0xB772, 0, 0,
3399+ 0xB773, 0, 0, 0, 0x3E7D, 0xB774, 0xB775, 0x3C39,
3400+ 0xB776, 0x475D, 0x3470, 0, 0x3A6B, 0xB777, 0xB778, 0xB779,
3401+};
3402+static const unsigned short utf8_to_euc_E5A0[] = {
3403+ 0x4B59, 0, 0x4632, 0xB77A, 0xB77B, 0x3778, 0x424F, 0,
3404+ 0xB77C, 0xB77D, 0x5441, 0x5444, 0xB821, 0xB822, 0, 0,
3405+ 0, 0, 0, 0, 0, 0x4244, 0, 0,
3406+ 0, 0x5445, 0, 0xB823, 0, 0x5446, 0xB824, 0xB825,
3407+ 0xB826, 0x5448, 0, 0, 0x4469, 0, 0xB827, 0xB828,
3408+ 0, 0, 0x342E, 0, 0, 0xB829, 0, 0x7421,
3409+ 0x3161, 0x4A73, 0xB82A, 0, 0x3E6C, 0x4548, 0, 0,
3410+ 0, 0xB82B, 0x3A66, 0, 0, 0x544E, 0, 0xB82C,
3411+};
3412+static const unsigned short utf8_to_euc_E5A1[] = {
3413+ 0x4A3D, 0x4E5D, 0, 0, 0, 0, 0, 0,
3414+ 0, 0xB82D, 0x3274, 0x544A, 0xB82E, 0xB82F, 0, 0xB830,
3415+ 0xB831, 0x413A, 0x544D, 0, 0x4563, 0xB832, 0, 0x4549,
3416+ 0x4564, 0x4839, 0x444D, 0, 0, 0, 0x3A49, 0xB833,
3417+ 0, 0xB834, 0x5449, 0, 0xB835, 0, 0, 0xB836,
3418+ 0xB837, 0x3176, 0, 0x4536, 0, 0, 0, 0,
3419+ 0x544B, 0, 0x5447, 0, 0, 0x3F50, 0, 0,
3420+ 0xB838, 0x544F, 0, 0, 0xB839, 0, 0x3D4E, 0xB83A,
3421+};
3422+static const unsigned short utf8_to_euc_E5A2[] = {
3423+ 0xB83B, 0xB83C, 0, 0x362D, 0, 0x5450, 0, 0xB83D,
3424+ 0xB83E, 0xB83F, 0xB840, 0, 0xB841, 0xB842, 0, 0xB843,
3425+ 0xB844, 0, 0, 0x4A68, 0xB845, 0, 0xB846, 0x417D,
3426+ 0, 0, 0, 0, 0x4446, 0xB847, 0xF439, 0x5452,
3427+ 0xB848, 0xB849, 0xB84A, 0, 0, 0, 0xB84B, 0,
3428+ 0x4B4F, 0xB84C, 0, 0x5453, 0, 0, 0x5458, 0,
3429+ 0, 0xB84D, 0xB84E, 0x4A2F, 0, 0, 0, 0,
3430+ 0x5457, 0x5451, 0x5454, 0x5456, 0xB850, 0, 0x3A26, 0,
3431+};
3432+static const unsigned short utf8_to_euc_E5A3[] = {
3433+ 0, 0x4A49, 0xB851, 0, 0xB84F, 0x5459, 0, 0x4345,
3434+ 0xB852, 0, 0x3275, 0, 0x3E6D, 0xB853, 0xB854, 0,
3435+ 0xB855, 0x545B, 0xB856, 0x545A, 0xB857, 0x3968, 0xB858, 0x545C,
3436+ 0x545E, 0x545D, 0xB859, 0, 0x5460, 0xB85A, 0x5455, 0x5462,
3437+ 0, 0xB85B, 0xB85C, 0, 0x5461, 0x545F, 0, 0,
3438+ 0, 0xB85D, 0, 0x3B4E, 0x3F51, 0, 0x4154, 0x5463,
3439+ 0x403C, 0x306D, 0x4764, 0xB85E, 0, 0, 0, 0x445B,
3440+ 0, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468, 0, 0,
3441+};
3442+static const unsigned short utf8_to_euc_E5A4[] = {
3443+ 0, 0, 0x5469, 0, 0, 0xB85F, 0xB860, 0,
3444+ 0, 0x4A51, 0x546A, 0xB861, 0xB862, 0, 0, 0x3246,
3445+ 0x546B, 0, 0xB863, 0xB864, 0xB865, 0x4D3C, 0x3330, 0,
3446+ 0x5249, 0x3D48, 0x423F, 0x546C, 0x4C6B, 0xB867, 0, 0,
3447+ 0, 0xB868, 0x4C34, 0xB869, 0xB86A, 0x546E, 0, 0x4267,
3448+ 0xB86B, 0x4537, 0x4240, 0x4957, 0x546F, 0x5470, 0x317B, 0xB86C,
3449+ 0xB86D, 0x3C3A, 0x5471, 0xB86E, 0, 0xB86F, 0xB870, 0x3050,
3450+ 0x5472, 0, 0, 0, 0, 0, 0x5473, 0xB871,
3451+};
3452+static const unsigned short utf8_to_euc_E5A5[] = {
3453+ 0, 0, 0, 0xB872, 0x3162, 0, 0xB873, 0x3471,
3454+ 0x4660, 0x4A74, 0, 0, 0, 0, 0x5477, 0x4155,
3455+ 0x5476, 0x3740, 0xB874, 0xB875, 0x4B5B, 0x5475, 0, 0x4565,
3456+ 0x5479, 0xB876, 0x5478, 0xB877, 0, 0xB878, 0xB879, 0xB87A,
3457+ 0x547B, 0xB87B, 0x547A, 0xB87C, 0, 0x317C, 0, 0x547C,
3458+ 0x3E29, 0x547E, 0x4325, 0xB87D, 0x547D, 0xB87E, 0x4A33, 0xB921,
3459+ 0, 0, 0xB922, 0x3D77, 0x455B, 0xB923, 0xB924, 0,
3460+ 0x5521, 0xB925, 0, 0xB926, 0xB927, 0x3925, 0, 0,
3461+};
3462+static const unsigned short utf8_to_euc_E5A6[] = {
3463+ 0, 0x5522, 0x4721, 0x485E, 0x4C51, 0, 0, 0,
3464+ 0, 0, 0x4725, 0xB928, 0xB929, 0x552B, 0xB92A, 0,
3465+ 0, 0, 0xB92B, 0x3538, 0, 0xB92C, 0x4D45, 0xB92D,
3466+ 0, 0x4C2F, 0, 0x562C, 0, 0x5523, 0, 0xB92E,
3467+ 0, 0, 0, 0x5526, 0xB92F, 0x4245, 0, 0xB930,
3468+ 0x4B38, 0, 0, 0, 0x454A, 0xB931, 0xB932, 0xB933,
3469+ 0xB934, 0, 0x5527, 0xB935, 0, 0, 0, 0xB936,
3470+ 0, 0x4B65, 0xB937, 0x3A4A, 0xB938, 0, 0x3E2A, 0,
3471+};
3472+static const unsigned short utf8_to_euc_E5A7[] = {
3473+ 0, 0xB939, 0, 0xB93A, 0xB93B, 0, 0x5528, 0,
3474+ 0xB93C, 0x3B50, 0xB93D, 0x3B4F, 0, 0xB93E, 0, 0,
3475+ 0x3039, 0x3848, 0xB93F, 0x402B, 0x3051, 0, 0, 0,
3476+ 0, 0x552C, 0x552D, 0, 0x552A, 0xB940, 0xB941, 0xB942,
3477+ 0, 0, 0, 0xB943, 0xB944, 0x3138, 0x342F, 0xB945,
3478+ 0x5529, 0, 0x4C45, 0x4931, 0, 0, 0xB946, 0xB947,
3479+ 0, 0xB948, 0xB949, 0, 0xB94A, 0, 0x3028, 0xB94B,
3480+ 0, 0, 0, 0x3079, 0, 0, 0, 0x3B51,
3481+};
3482+static const unsigned short utf8_to_euc_E5A8[] = {
3483+ 0xB94C, 0x3052, 0, 0x3023, 0xB94D, 0, 0, 0,
3484+ 0, 0x5532, 0, 0, 0xB94E, 0xB94F, 0xB950, 0,
3485+ 0, 0x5530, 0xB951, 0xB952, 0, 0, 0, 0,
3486+ 0x4C3C, 0, 0x5533, 0, 0x5531, 0, 0xB953, 0x552F,
3487+ 0x3F31, 0, 0, 0xB954, 0xB955, 0x552E, 0, 0xB956,
3488+ 0xB957, 0x4A5A, 0xB958, 0, 0, 0xB959, 0, 0x3864,
3489+ 0xB95A, 0, 0, 0, 0, 0x5537, 0x5538, 0,
3490+ 0, 0, 0, 0, 0x3E2B, 0, 0, 0,
3491+};
3492+static const unsigned short utf8_to_euc_E5A9[] = {
3493+ 0x5534, 0x4F2C, 0, 0, 0xB95B, 0xB95C, 0x474C, 0xB95D,
3494+ 0xB95E, 0x5536, 0, 0, 0xB95F, 0, 0, 0,
3495+ 0xB960, 0, 0, 0, 0, 0xB961, 0, 0,
3496+ 0, 0, 0x3A27, 0, 0, 0, 0xB962, 0,
3497+ 0, 0, 0x5539, 0xB963, 0, 0xB964, 0x4958, 0xB965,
3498+ 0, 0, 0x553A, 0, 0x5535, 0xB966, 0, 0,
3499+ 0, 0, 0, 0, 0, 0, 0, 0xB967,
3500+ 0, 0, 0xB968, 0xB969, 0, 0, 0xB96A, 0x4C3B,
3501+};
3502+static const unsigned short utf8_to_euc_E5AA[] = {
3503+ 0, 0, 0, 0, 0, 0, 0, 0,
3504+ 0, 0, 0, 0xB96B, 0, 0, 0, 0,
3505+ 0xB96C, 0, 0x475E, 0xB96D, 0, 0, 0xB96E, 0,
3506+ 0, 0xB96F, 0x553B, 0x4932, 0xB970, 0, 0xB971, 0xB972,
3507+ 0xB973, 0, 0xB974, 0, 0, 0, 0, 0xB975,
3508+ 0, 0, 0, 0, 0xB976, 0, 0, 0,
3509+ 0, 0xB977, 0xB978, 0xB979, 0, 0xB97A, 0, 0,
3510+ 0xB97B, 0, 0xB97C, 0xB97D, 0x553C, 0x5540, 0x553D, 0xB97E,
3511+};
3512+static const unsigned short utf8_to_euc_E5AB[] = {
3513+ 0, 0x3247, 0x553F, 0, 0xBA21, 0, 0xBA22, 0,
3514+ 0xBA23, 0x3C3B, 0, 0x553E, 0x3779, 0, 0, 0xBA24,
3515+ 0x554C, 0, 0, 0, 0, 0, 0x5545, 0x5542,
3516+ 0, 0, 0xBA25, 0, 0xBA26, 0, 0, 0,
3517+ 0xBA27, 0x4364, 0, 0x5541, 0, 0xBA28, 0x5543, 0,
3518+ 0, 0x5544, 0xBA29, 0, 0, 0, 0xBA2A, 0,
3519+ 0, 0, 0, 0, 0, 0xBA2B, 0xBA2C, 0,
3520+ 0, 0, 0x5546, 0x5547, 0, 0xBA2D, 0, 0,
3521+};
3522+static const unsigned short utf8_to_euc_E5AC[] = {
3523+ 0xBA2E, 0xBA2F, 0, 0, 0, 0, 0, 0,
3524+ 0xBA30, 0x3472, 0, 0x5549, 0x5548, 0, 0, 0,
3525+ 0, 0, 0, 0, 0, 0, 0x554A, 0xBA31,
3526+ 0, 0xBA33, 0, 0xBA34, 0, 0xBA35, 0, 0,
3527+ 0, 0xBA36, 0x3E6E, 0, 0, 0xBA37, 0, 0,
3528+ 0, 0, 0x554D, 0, 0x445C, 0xBA38, 0, 0,
3529+ 0x3145, 0, 0x554B, 0, 0xBA32, 0, 0x554E, 0,
3530+ 0xBA39, 0, 0, 0, 0, 0, 0x554F, 0,
3531+};
3532+static const unsigned short utf8_to_euc_E5AD[] = {
3533+ 0x5552, 0xBA3A, 0, 0x5550, 0, 0x5551, 0, 0,
3534+ 0, 0, 0, 0xBA3B, 0xBA3C, 0, 0, 0,
3535+ 0x3B52, 0x5553, 0xBA3D, 0, 0x3926, 0x5554, 0xBA3E, 0x3B7A,
3536+ 0x4238, 0, 0x5555, 0x5556, 0x3B5A, 0x3927, 0xBA3F, 0x4C52,
3537+ 0, 0, 0, 0x3528, 0x3849, 0x5557, 0x3358, 0,
3538+ 0xBA40, 0x5558, 0, 0x4239, 0, 0, 0xBA41, 0xBA42,
3539+ 0x5559, 0x5623, 0, 0x555A, 0, 0x555B, 0, 0,
3540+ 0x555C, 0, 0x555E, 0, 0xBA43, 0xBA44, 0xBA45, 0xBA46,
3541+};
3542+static const unsigned short utf8_to_euc_E5AE[] = {
3543+ 0x555F, 0xBA47, 0, 0x5560, 0xBA48, 0x4270, 0xBA49, 0x3127,
3544+ 0x3C69, 0x3042, 0xBA4A, 0x4157, 0x3430, 0x3C35, 0xBA4B, 0x3928,
3545+ 0xBA4C, 0xBA4D, 0, 0xBA4E, 0xBA4F, 0x4566, 0xBA50, 0x3D21,
3546+ 0x3431, 0x4368, 0x446A, 0x3038, 0x3539, 0x4A75, 0, 0x3C42,
3547+ 0, 0, 0x3552, 0x406B, 0x3C3C, 0x4D28, 0x5561, 0,
3548+ 0xBA51, 0xBA52, 0, 0, 0xBA53, 0xBA54, 0x355C, 0xBA55,
3549+ 0x3A4B, 0xBA56, 0xBA57, 0x3332, 0x3163, 0x3E2C, 0x3248, 0xBA58,
3550+ 0x5562, 0x4D46, 0xBA59, 0, 0xBA5A, 0, 0, 0x3D49,
3551+};
3552+static const unsigned short utf8_to_euc_E5AF[] = {
3553+ 0xBA5B, 0xBA5C, 0x3C64, 0x5563, 0x3473, 0x4652, 0x4C29, 0x5564,
3554+ 0, 0x5565, 0, 0, 0x4959, 0xBA5D, 0, 0xBA5E,
3555+ 0x5567, 0, 0x3428, 0x3677, 0x5566, 0, 0xBA5F, 0xBA60,
3556+ 0xBA61, 0xBA62, 0xBA63, 0x3432, 0, 0x3F32, 0x556B, 0x3B21,
3557+ 0xBA64, 0x3249, 0x556A, 0, 0x5568, 0x556C, 0x5569, 0x472B,
3558+ 0x5C4D, 0x3F33, 0, 0x556D, 0xF43A, 0, 0x4E40, 0xBA65,
3559+ 0x556E, 0xBA66, 0, 0x5570, 0xBA67, 0x437E, 0x556F, 0,
3560+ 0x4023, 0, 0x3B7B, 0, 0, 0xBA68, 0x4250, 0x3C77,
3561+};
3562+static const unsigned short utf8_to_euc_E5B0[] = {
3563+ 0, 0x4975, 0x406C, 0, 0x3C4D, 0x5571, 0x3E2D, 0x5572,
3564+ 0x5573, 0x3053, 0x423A, 0x3F52, 0xBA69, 0x5574, 0x4633, 0x3E2E,
3565+ 0, 0x3E2F, 0, 0x5575, 0, 0, 0x406D, 0xBA6A,
3566+ 0, 0, 0x3E30, 0, 0, 0, 0xBA6B, 0xBA6C,
3567+ 0x5576, 0, 0x5577, 0xBA6D, 0x4C60, 0, 0xBA6E, 0,
3568+ 0x5578, 0xBA6F, 0, 0xBA70, 0xBA71, 0x3646, 0xBA72, 0,
3569+ 0xBA73, 0x3D22, 0xBA74, 0, 0, 0xBA75, 0xBA76, 0,
3570+ 0x5579, 0x557A, 0x3C5C, 0x3F2C, 0x4674, 0x3F54, 0x4878, 0x4722,
3571+};
3572+static const unsigned short utf8_to_euc_E5B1[] = {
3573+ 0x3649, 0x557B, 0, 0, 0, 0x356F, 0x557C, 0,
3574+ 0x367E, 0, 0x464F, 0x3230, 0, 0x3B53, 0x557D, 0x5622,
3575+ 0x5621, 0x367D, 0, 0x557E, 0, 0x4538, 0, 0,
3576+ 0, 0xBA77, 0xBA78, 0, 0xBA79, 0, 0x4230, 0,
3577+ 0x454B, 0x3C48, 0xBA7A, 0xBA7B, 0x4158, 0x4D7A, 0, 0xBA7C,
3578+ 0xBA7D, 0xBA7E, 0, 0, 0x5624, 0xBB21, 0x5625, 0x4656,
3579+ 0xBB22, 0x3B33, 0, 0, 0xBB23, 0xBB24, 0x5627, 0,
3580+ 0, 0x5628, 0xBB25, 0xBB26, 0xBB27, 0xBB28, 0, 0,
3581+};
3582+static const unsigned short utf8_to_euc_E5B2[] = {
3583+ 0, 0, 0, 0, 0, 0, 0, 0xBB29,
3584+ 0xBB2A, 0, 0xBB2B, 0, 0x5629, 0, 0, 0xBB2C,
3585+ 0x3474, 0x562A, 0xBB2D, 0, 0x562B, 0, 0, 0,
3586+ 0, 0, 0, 0, 0, 0xBB2E, 0, 0xBB2F,
3587+ 0xBB30, 0x322C, 0xBB31, 0xBB32, 0, 0, 0xBB33, 0,
3588+ 0x413B, 0x3464, 0xBB34, 0x562D, 0x4C28, 0, 0, 0,
3589+ 0, 0x4252, 0xBB35, 0x3359, 0xBB36, 0xBB37, 0x562F, 0x5631,
3590+ 0x345F, 0, 0xBB38, 0x562E, 0x5630, 0, 0x5633, 0,
3591+};
3592+static const unsigned short utf8_to_euc_E5B3[] = {
3593+ 0, 0, 0, 0, 0, 0x5632, 0, 0x5634,
3594+ 0, 0xBB39, 0, 0xBB3A, 0, 0, 0, 0,
3595+ 0, 0, 0xBB3B, 0, 0, 0, 0, 0xBB3D,
3596+ 0, 0x5635, 0, 0, 0, 0xBB3C, 0, 0,
3597+ 0x463D, 0x362E, 0, 0, 0, 0, 0, 0,
3598+ 0x3265, 0x5636, 0x563B, 0, 0, 0x5639, 0xBB3E, 0x4A77,
3599+ 0x4A76, 0xBB3F, 0xBB40, 0, 0xBB41, 0xF43B, 0x4567, 0,
3600+ 0, 0, 0x5638, 0x3D54, 0, 0x5637, 0, 0,
3601+};
3602+static const unsigned short utf8_to_euc_E5B4[] = {
3603+ 0, 0xBB42, 0, 0, 0, 0, 0xBB43, 0x3F72,
3604+ 0, 0, 0, 0x563C, 0, 0xBB44, 0x3A6A, 0,
3605+ 0, 0x5642, 0xBB45, 0, 0x5643, 0x563D, 0x3333, 0x563E,
3606+ 0x5647, 0x5646, 0x5645, 0x5641, 0, 0, 0, 0x5640,
3607+ 0, 0, 0x5644, 0xBB47, 0xBB48, 0, 0xBB49, 0xBB4A,
3608+ 0, 0x4A78, 0, 0xBB46, 0, 0, 0, 0,
3609+ 0, 0xBB4B, 0, 0, 0xBB4C, 0, 0, 0,
3610+ 0, 0xBB4D, 0, 0, 0, 0xBB4E, 0, 0xBB4F,
3611+};
3612+static const unsigned short utf8_to_euc_E5B5[] = {
3613+ 0, 0, 0xBB50, 0xBB51, 0, 0, 0xBB52, 0,
3614+ 0xBB53, 0, 0xBB57, 0x564B, 0x5648, 0, 0x564A, 0,
3615+ 0x4D72, 0xBB55, 0x5649, 0xF43C, 0, 0xBB54, 0, 0,
3616+ 0, 0xBB56, 0, 0, 0x563F, 0, 0, 0xBB58,
3617+ 0xBB59, 0xBB5A, 0xBB5B, 0, 0xBB5C, 0, 0, 0,
3618+ 0, 0x3F73, 0xBB5D, 0, 0x564C, 0xBB5E, 0, 0x3A37,
3619+ 0xBB5F, 0, 0, 0x564D, 0, 0, 0x564E, 0,
3620+ 0, 0xBB60, 0xBB61, 0, 0, 0, 0xBB62, 0xBB63,
3621+};
3622+static const unsigned short utf8_to_euc_E5B6[] = {
3623+ 0, 0xBB64, 0x5651, 0xBB65, 0x5650, 0, 0, 0x564F,
3624+ 0xBB66, 0, 0xBB67, 0x4568, 0x563A, 0, 0, 0,
3625+ 0x5657, 0, 0xBB68, 0xBB69, 0xBB6A, 0xBB6B, 0, 0,
3626+ 0, 0xBB6C, 0, 0xBB6D, 0, 0x5653, 0, 0xBB6E,
3627+ 0xBB6F, 0, 0x5652, 0, 0, 0, 0, 0xBB70,
3628+ 0, 0, 0, 0xBB71, 0x5654, 0, 0x5655, 0,
3629+ 0xBB72, 0, 0xE674, 0, 0xBB73, 0, 0, 0x5658,
3630+ 0xBB74, 0xBB75, 0x4E66, 0, 0x5659, 0x5656, 0, 0,
3631+};
3632+static const unsigned short utf8_to_euc_E5B7[] = {
3633+ 0, 0, 0, 0xBB76, 0, 0, 0, 0xBB77,
3634+ 0, 0x565A, 0, 0xBB78, 0x3460, 0x565B, 0xBB7A, 0,
3635+ 0xBB79, 0, 0x565D, 0x565C, 0, 0, 0x565E, 0,
3636+ 0xBB7B, 0xBB7C, 0, 0x565F, 0, 0x406E, 0x3D23, 0,
3637+ 0xBB7D, 0x3D64, 0, 0x4163, 0xBB7E, 0x3929, 0x3A38, 0x392A,
3638+ 0x3570, 0xBC21, 0, 0x5660, 0, 0, 0x3A39, 0,
3639+ 0, 0x384A, 0x5661, 0x4C26, 0x4743, 0x5662, 0, 0x392B,
3640+ 0xBC22, 0xBC23, 0, 0x342C, 0, 0x4327, 0x3652, 0,
3641+};
3642+static const unsigned short utf8_to_euc_E5B8[] = {
3643+ 0xBC24, 0, 0x3B54, 0x495B, 0, 0, 0x4841, 0xBC25,
3644+ 0, 0, 0, 0x5663, 0x3475, 0xBC26, 0, 0,
3645+ 0, 0x5666, 0xBC27, 0, 0xBC28, 0xBC29, 0x4421, 0,
3646+ 0xBC2A, 0x5665, 0x5664, 0x5667, 0, 0x446B, 0, 0xBC2B,
3647+ 0xBC2C, 0, 0, 0, 0, 0x3F63, 0, 0,
3648+ 0xBC2E, 0, 0, 0x3B55, 0, 0x404A, 0xBC2D, 0x4253,
3649+ 0x3522, 0, 0xBC2F, 0x4422, 0, 0xBC30, 0x5668, 0x5669,
3650+ 0x3E6F, 0, 0, 0, 0, 0x4B39, 0xBC31, 0,
3651+};
3652+static const unsigned short utf8_to_euc_E5B9[] = {
3653+ 0x566C, 0, 0, 0x566B, 0x566A, 0x497D, 0, 0x5673,
3654+ 0, 0xBC34, 0, 0xBC32, 0x4B5A, 0, 0x566D, 0,
3655+ 0xBC33, 0xBC35, 0, 0, 0x566F, 0x4B6B, 0xBC36, 0x566E,
3656+ 0xBC37, 0, 0, 0xBC38, 0xBC39, 0, 0xBC3A, 0x5670,
3657+ 0, 0x4828, 0x5671, 0x4A3E, 0x5672, 0, 0, 0,
3658+ 0xBC3B, 0, 0xBC3C, 0xBC3D, 0xBC3E, 0xBC3F, 0xBC40, 0,
3659+ 0xBC41, 0, 0x3433, 0x4A3F, 0x472F, 0x5674, 0x5675, 0,
3660+ 0x392C, 0x3434, 0x5676, 0x3838, 0x4D44, 0x4D29, 0x3476, 0x5678,
3661+};
3662+static const unsigned short utf8_to_euc_E5BA[] = {
3663+ 0xBC42, 0x4423, 0, 0x392D, 0x3E31, 0, 0, 0x485F,
3664+ 0, 0, 0x3E32, 0xBC43, 0, 0, 0xBC44, 0x3D78,
3665+ 0, 0, 0, 0, 0, 0x446C, 0x4A79, 0x4539,
3666+ 0, 0, 0x392E, 0, 0x495C, 0, 0, 0,
3667+ 0x5679, 0, 0xBC45, 0, 0xBC46, 0xBC47, 0x4559, 0x3A42,
3668+ 0xBC48, 0, 0xBC49, 0x384B, 0xBC4A, 0x446D, 0, 0,
3669+ 0, 0xBC4B, 0, 0xBC4C, 0, 0x3043, 0x3D6E, 0x392F,
3670+ 0x4D47, 0, 0, 0, 0, 0xBC4D, 0xBC4E, 0xBC4F,
3671+};
3672+static const unsigned short utf8_to_euc_E5BB[] = {
3673+ 0, 0x567A, 0x567B, 0x4751, 0, 0, 0xBC50, 0,
3674+ 0x567C, 0x4E77, 0x4F2D, 0xBC52, 0xBC51, 0, 0xBC53, 0x567E,
3675+ 0x567D, 0xBC54, 0xBC55, 0x3347, 0xBC56, 0xBC57, 0x5721, 0,
3676+ 0, 0, 0x5724, 0x5725, 0xBC58, 0x5723, 0xBC59, 0x4940,
3677+ 0x3E33, 0x5727, 0x5726, 0x5722, 0, 0xBC5A, 0, 0,
3678+ 0x5728, 0x5729, 0, 0xBC5B, 0x572A, 0, 0, 0,
3679+ 0x572D, 0x572B, 0, 0x572C, 0x572E, 0, 0x3164, 0x446E,
3680+ 0x572F, 0, 0x377A, 0x3276, 0x4736, 0, 0x5730, 0x467B,
3681+};
3682+static const unsigned short utf8_to_euc_E5BC[] = {
3683+ 0, 0x4A5B, 0xBC5C, 0x5731, 0x4F2E, 0, 0xBC5D, 0xBC5E,
3684+ 0xBC5F, 0x5732, 0x4A40, 0x5735, 0x5021, 0x5031, 0xBC60, 0x3C30,
3685+ 0x4675, 0x5736, 0, 0x355D, 0x4424, 0x307A, 0x5737, 0x4A26,
3686+ 0x3930, 0xBC61, 0, 0x4350, 0xBC62, 0xBC63, 0, 0x446F,
3687+ 0, 0xBC64, 0xBC65, 0xBC66, 0xBC67, 0x4C6F, 0x3839, 0x384C,
3688+ 0xBC68, 0x5738, 0, 0xBC69, 0xBC6A, 0x5739, 0xBC6B, 0x573F,
3689+ 0xBC6C, 0x3C65, 0, 0, 0xBC6D, 0x4425, 0xBC6E, 0x362F,
3690+ 0x573A, 0, 0, 0xBC6F, 0x492B, 0xBC70, 0x4346, 0xBC71,
3691+};
3692+static const unsigned short utf8_to_euc_E5BD[] = {
3693+ 0xBC72, 0x573B, 0, 0, 0xBC73, 0xBC74, 0, 0xBC75,
3694+ 0x573C, 0, 0x3630, 0, 0x573D, 0xBC76, 0x573E, 0,
3695+ 0xBC77, 0x5740, 0, 0x4576, 0xBC78, 0, 0x5741, 0x5742,
3696+ 0xBC79, 0x5743, 0, 0xBC7A, 0x5734, 0x5733, 0, 0,
3697+ 0xBC7B, 0x5744, 0x3741, 0xBC7C, 0xBC7D, 0, 0x4927, 0xBC7E,
3698+ 0, 0x3A4C, 0x4937, 0x4426, 0x494B, 0x5745, 0, 0xBD21,
3699+ 0x3E34, 0x3146, 0xBD22, 0x5746, 0xBD23, 0xBD24, 0, 0x5747,
3700+ 0xBD25, 0x4C72, 0xBD26, 0, 0x4860, 0xBD27, 0xBD28, 0x574A,
3701+};
3702+static const unsigned short utf8_to_euc_E5BE[] = {
3703+ 0x317D, 0x402C, 0x5749, 0x5748, 0x3742, 0x4254, 0, 0x574E,
3704+ 0x574C, 0xBD29, 0x574B, 0x4E27, 0x3865, 0xBD2A, 0, 0xBD2B,
3705+ 0x3D79, 0x574D, 0x454C, 0x3D3E, 0, 0, 0xBD2C, 0x4640,
3706+ 0x5751, 0x5750, 0, 0, 0xBD2D, 0xBD2E, 0x574F, 0,
3707+ 0x5752, 0x3866, 0xBD2F, 0, 0xBD32, 0, 0, 0xBD30,
3708+ 0x5753, 0x497C, 0x3D5B, 0xBD31, 0xBD33, 0x5754, 0x4879, 0xBD34,
3709+ 0xBD35, 0xBD36, 0, 0x4641, 0x4427, 0, 0, 0xF43E,
3710+ 0xBD37, 0x4530, 0, 0, 0x5755, 0x352B, 0, 0,
3711+};
3712+static const unsigned short utf8_to_euc_E5BF[] = {
3713+ 0, 0, 0, 0x3F34, 0xBD38, 0x492C, 0, 0xBD39,
3714+ 0xBD3A, 0xBD3B, 0, 0xBD3C, 0x3477, 0x4726, 0, 0,
3715+ 0xBD3D, 0xBD3E, 0xBD3F, 0xBD40, 0xBD41, 0, 0x5756, 0x3B56,
3716+ 0x4B3A, 0x4B3B, 0, 0, 0x317E, 0x575B, 0xBD42, 0,
3717+ 0x4369, 0xBD43, 0xBD44, 0, 0x5758, 0, 0, 0,
3718+ 0xBD45, 0xBD46, 0xBD47, 0x3277, 0xBD48, 0xBD49, 0xBD4A, 0xBD4B,
3719+ 0x582D, 0x575A, 0xBD4C, 0xBD4D, 0, 0x4730, 0xBD4E, 0,
3720+ 0x5759, 0, 0xBD4F, 0x5757, 0xBD50, 0x397A, 0, 0x575D,
3721+};
3722+static const unsigned short utf8_to_euc_E680[] = {
3723+ 0, 0, 0, 0, 0, 0, 0, 0xBD51,
3724+ 0, 0, 0xBD52, 0, 0, 0xBD53, 0x5763, 0x5769,
3725+ 0x5761, 0, 0x455C, 0xBD54, 0xBD55, 0x5766, 0x495D, 0xBD56,
3726+ 0xBD57, 0x5760, 0xBD58, 0x5765, 0x4E67, 0x3B57, 0, 0xBD59,
3727+ 0x4255, 0x575E, 0, 0, 0xBD5A, 0x355E, 0x5768, 0x402D,
3728+ 0x3165, 0x5762, 0x3278, 0x5767, 0, 0xBD5B, 0, 0x3631,
3729+ 0, 0x5764, 0, 0xBD5C, 0, 0xBD5D, 0, 0,
3730+ 0, 0, 0x576A, 0, 0, 0, 0, 0,
3731+};
3732+static const unsigned short utf8_to_euc_E681[] = {
3733+ 0xBD5E, 0x576C, 0x5776, 0x5774, 0, 0, 0x5771, 0xBD5F,
3734+ 0xBD60, 0xBD61, 0x5770, 0x4E78, 0xBD62, 0x5772, 0, 0,
3735+ 0x3632, 0xBD63, 0x3931, 0, 0xBD64, 0x3D7A, 0xBD65, 0xBD66,
3736+ 0, 0x5779, 0x576B, 0, 0, 0xBD67, 0, 0x576F,
3737+ 0x575F, 0xBD68, 0x327A, 0x5773, 0x5775, 0x4351, 0, 0xBD69,
3738+ 0x3A28, 0x3238, 0x576D, 0x5778, 0x5777, 0x3633, 0, 0x4229,
3739+ 0x3366, 0xBD6A, 0, 0, 0, 0x3743, 0, 0x576E,
3740+ 0, 0, 0, 0, 0, 0, 0xBD6B, 0xBD6C,
3741+};
3742+static const unsigned short utf8_to_euc_E682[] = {
3743+ 0, 0x577A, 0xBD6D, 0x577D, 0x5821, 0xF43F, 0xBD6E, 0,
3744+ 0xBD6F, 0x3C3D, 0xBD70, 0x5827, 0x4470, 0x577B, 0xBD71, 0,
3745+ 0, 0xBD72, 0x5825, 0xBD73, 0x3279, 0xBD74, 0x5823, 0x5824,
3746+ 0xBD75, 0, 0x577E, 0x5822, 0, 0xBD76, 0xBD77, 0x3867,
3747+ 0x4D2A, 0, 0xBD78, 0x3435, 0xBD79, 0xBD7A, 0x3159, 0x5826,
3748+ 0xBD7B, 0x473A, 0x302D, 0, 0, 0, 0, 0,
3749+ 0xBD7C, 0xBD7D, 0x4861, 0x575C, 0x582C, 0x5830, 0x4C65, 0xBD7E,
3750+ 0x5829, 0, 0, 0xBE21, 0x4569, 0x582E, 0xBE22, 0,
3751+};
3752+static const unsigned short utf8_to_euc_E683[] = {
3753+ 0, 0, 0xBE23, 0, 0xBE24, 0x3E70, 0x582F, 0x4657,
3754+ 0xBE25, 0xBE26, 0xBE27, 0xBE28, 0, 0, 0xBE29, 0xBE2A,
3755+ 0, 0x4F47, 0, 0x582B, 0xBE2B, 0xBE2C, 0, 0,
3756+ 0x5831, 0xBE2D, 0x397B, 0xBE2E, 0x404B, 0xBE2F, 0xBE30, 0x3054,
3757+ 0x582A, 0x5828, 0xBE31, 0x415A, 0, 0xBE32, 0, 0x577C,
3758+ 0x3B34, 0, 0, 0, 0, 0, 0, 0,
3759+ 0x4246, 0x583D, 0xBE33, 0x415B, 0x5838, 0xBE34, 0x5835, 0x5836,
3760+ 0xBE35, 0x3C66, 0x5839, 0x583C, 0xBE36, 0xBE37, 0, 0,
3761+};
3762+static const unsigned short utf8_to_euc_E684[] = {
3763+ 0x5837, 0x3D25, 0xBE38, 0x583A, 0, 0, 0x5834, 0xBE39,
3764+ 0x4C7C, 0x4C7B, 0xBE3A, 0, 0xBE3B, 0x583E, 0x583F, 0x3055,
3765+ 0xBE3C, 0xBE3D, 0xBE3E, 0xBE3F, 0xBE40, 0x5833, 0xBE41, 0xBE42,
3766+ 0, 0xBE43, 0x3672, 0x3026, 0xBE44, 0, 0xBE45, 0x3436,
3767+ 0xF440, 0x583B, 0xBE46, 0, 0, 0, 0, 0x5843,
3768+ 0x5842, 0, 0xBE47, 0xBE48, 0x5847, 0, 0, 0,
3769+ 0xBE49, 0xBE4A, 0, 0, 0x5848, 0xBE4B, 0xBE4C, 0xBE4D,
3770+ 0, 0xBE4E, 0, 0, 0x5846, 0x5849, 0x5841, 0x5845,
3771+};
3772+static const unsigned short utf8_to_euc_E685[] = {
3773+ 0, 0xBE4F, 0x584A, 0, 0x584B, 0xBE50, 0xBE51, 0x5840,
3774+ 0x3B7C, 0xBE52, 0x5844, 0x4256, 0x3932, 0x5832, 0x3F35, 0,
3775+ 0, 0, 0, 0x5858, 0, 0x4A69, 0, 0,
3776+ 0x584E, 0x584F, 0x5850, 0, 0, 0x5857, 0xBE53, 0x5856,
3777+ 0xBE54, 0, 0x4B7D, 0x3437, 0, 0x5854, 0, 0x3745,
3778+ 0x3334, 0, 0, 0x5851, 0xBE55, 0, 0x4E38, 0x5853,
3779+ 0x3056, 0x5855, 0xBE56, 0x584C, 0x5852, 0x5859, 0x3744, 0x584D,
3780+ 0xBE57, 0, 0, 0xBE58, 0xBE59, 0, 0x4D5D, 0xBE5A,
3781+};
3782+static const unsigned short utf8_to_euc_E686[] = {
3783+ 0xBE5B, 0xBE5C, 0x4D2B, 0xBE5D, 0xBE5E, 0, 0, 0x585C,
3784+ 0, 0, 0x5860, 0xBE5F, 0, 0xBE60, 0x417E, 0,
3785+ 0x4E79, 0x5861, 0xBE61, 0xBE62, 0x585E, 0, 0x585B, 0xBE63,
3786+ 0xBE64, 0x585A, 0x585F, 0, 0xBE65, 0xBE66, 0, 0xBE67,
3787+ 0xBE68, 0, 0, 0, 0x4A30, 0xBE69, 0, 0x4634,
3788+ 0xBE6A, 0x3746, 0xBE6B, 0x5862, 0x585D, 0xBE6C, 0x5863, 0,
3789+ 0, 0, 0x377B, 0, 0, 0, 0x3231, 0,
3790+ 0xBE6D, 0xBE6E, 0x586B, 0, 0xBE6F, 0, 0x3438, 0,
3791+};
3792+static const unsigned short utf8_to_euc_E687[] = {
3793+ 0xBE70, 0xBE71, 0xBE72, 0x5869, 0, 0, 0x586A, 0x3A29,
3794+ 0x5868, 0x5866, 0x5865, 0x586C, 0x5864, 0x586E, 0xBE73, 0xBE74,
3795+ 0x327B, 0, 0, 0, 0, 0xBE75, 0, 0,
3796+ 0, 0, 0, 0, 0xBE76, 0xBE77, 0xBE78, 0xBE79,
3797+ 0, 0xBE7A, 0xBE7B, 0x5870, 0, 0xBE7E, 0x586F, 0xBE7C,
3798+ 0, 0xBE7D, 0, 0, 0xBF21, 0xBF22, 0, 0xBF23,
3799+ 0, 0, 0x4428, 0, 0x5873, 0, 0x5871, 0x5867,
3800+ 0x377C, 0, 0x5872, 0, 0x5876, 0x5875, 0x5877, 0x5874,
3801+};
3802+static const unsigned short utf8_to_euc_E688[] = {
3803+ 0x5878, 0xBF24, 0, 0xBF25, 0xBF26, 0, 0, 0xBF27,
3804+ 0x5879, 0x587A, 0x4A6A, 0, 0x587C, 0x587B, 0x3D3F, 0,
3805+ 0x402E, 0x3266, 0x327C, 0xBF28, 0x587D, 0xBF29, 0x303F, 0,
3806+ 0, 0, 0x404C, 0x587E, 0xBF2A, 0x6C43, 0x5921, 0x3761,
3807+ 0xBF2B, 0x5922, 0xBF2C, 0xBF2D, 0, 0, 0x406F, 0xBF2E,
3808+ 0, 0xBF2F, 0x5923, 0xBF30, 0, 0, 0x5924, 0x353A,
3809+ 0x5925, 0, 0x5926, 0x5927, 0x4257, 0, 0, 0,
3810+ 0x384D, 0xBF31, 0, 0x4C61, 0, 0xBF32, 0, 0x4B3C,
3811+};
3812+static const unsigned short utf8_to_euc_E689[] = {
3813+ 0x3D6A, 0x5928, 0xBF33, 0xBF34, 0xBF35, 0, 0xBF36, 0x4070,
3814+ 0x6E3D, 0x4862, 0, 0x3C6A, 0xBF37, 0x3A4D, 0x5929, 0,
3815+ 0xBF38, 0xBF39, 0xBF3A, 0x4247, 0xBF3B, 0x4A27, 0xBF3C, 0,
3816+ 0x4271, 0, 0xBF3D, 0x592C, 0xBF3E, 0, 0x592A, 0,
3817+ 0x592D, 0, 0, 0x592B, 0xBF3F, 0, 0, 0,
3818+ 0x592E, 0, 0, 0, 0, 0xBF40, 0x4A31, 0xBF41,
3819+ 0, 0x3037, 0, 0xBF42, 0, 0, 0x495E, 0,
3820+ 0, 0x4863, 0xBF43, 0, 0x592F, 0xBF44, 0x5932, 0x3E35,
3821+};
3822+static const unsigned short utf8_to_euc_E68A[] = {
3823+ 0x353B, 0, 0x5930, 0x5937, 0x3E36, 0, 0, 0,
3824+ 0, 0x5931, 0x4744, 0, 0, 0xBF45, 0xBF46, 0xBF47,
3825+ 0xBF48, 0x4D5E, 0x5933, 0x5934, 0x5938, 0x456A, 0x5935, 0x3933,
3826+ 0x405E, 0, 0, 0x5946, 0x4834, 0, 0x4272, 0,
3827+ 0, 0, 0, 0, 0, 0, 0xBF49, 0,
3828+ 0xBF4A, 0, 0, 0x4864, 0x5A2D, 0, 0, 0,
3829+ 0, 0x4A7A, 0, 0xBF4B, 0, 0x4471, 0xBF4C, 0xBF4D,
3830+ 0, 0x4B75, 0xBF4E, 0x593B, 0x3221, 0x436A, 0xBF4F, 0xBF50,
3831+};
3832+static const unsigned short utf8_to_euc_E68B[] = {
3833+ 0, 0, 0x5944, 0, 0xBF51, 0x4334, 0x593E, 0x5945,
3834+ 0x5940, 0x5947, 0x5943, 0, 0x5942, 0x476F, 0xBF52, 0x593C,
3835+ 0x327D, 0x593A, 0x3571, 0x4273, 0x5936, 0xBF53, 0xBF54, 0x5939,
3836+ 0x3934, 0x405B, 0xBF55, 0x3E37, 0x5941, 0x4752, 0, 0,
3837+ 0x3572, 0x3348, 0, 0, 0, 0, 0, 0,
3838+ 0, 0, 0xBF56, 0, 0x3367, 0x3F21, 0x5949, 0x594E,
3839+ 0, 0x594A, 0xBF57, 0x377D, 0xBF58, 0x594F, 0x3B22, 0x3969,
3840+ 0, 0, 0, 0, 0xBF59, 0xBF5A, 0x3D26, 0x593D,
3841+};
3842+static const unsigned short utf8_to_euc_E68C[] = {
3843+ 0, 0x3B7D, 0x594C, 0xBF5B, 0xBF5C, 0, 0, 0x3B58,
3844+ 0x594D, 0x3044, 0xBF5D, 0xBF5E, 0x5948, 0xBF5F, 0, 0,
3845+ 0xBF60, 0x4429, 0, 0xBF61, 0, 0, 0xBF62, 0,
3846+ 0xBF63, 0x3573, 0, 0, 0, 0, 0, 0x3634,
3847+ 0, 0, 0, 0, 0, 0, 0, 0x594B,
3848+ 0x3027, 0xBF64, 0xBF65, 0x3A43, 0, 0xBF66, 0, 0x3F36,
3849+ 0, 0, 0, 0, 0, 0xBF67, 0xBF68, 0,
3850+ 0, 0xBF69, 0x4472, 0, 0xBF6A, 0x4854, 0x5951, 0x415E,
3851+};
3852+static const unsigned short utf8_to_euc_E68D[] = {
3853+ 0, 0xBF6B, 0xBF6C, 0xBF6D, 0xBF6E, 0, 0xBF6F, 0,
3854+ 0, 0x422A, 0xBF70, 0xBF71, 0x3B2B, 0x5952, 0xBF72, 0x5954,
3855+ 0x5950, 0, 0xBF73, 0xBF74, 0xBF75, 0x4A61, 0, 0x443D,
3856+ 0xBF76, 0, 0, 0xBF77, 0x415C, 0, 0, 0,
3857+ 0, 0, 0, 0, 0, 0xBF78, 0xBF79, 0x4A7B,
3858+ 0x3C4E, 0x5960, 0, 0x595F, 0xBF7A, 0xBF7B, 0x3F78, 0,
3859+ 0, 0xBF7C, 0x377E, 0, 0xBF7D, 0xBF7E, 0x5959, 0x3E39,
3860+ 0xC021, 0, 0x4668, 0x4731, 0xC022, 0xC023, 0, 0xC024,
3861+};
3862+static const unsigned short utf8_to_euc_E68E[] = {
3863+ 0x5957, 0, 0xC025, 0x415D, 0xC026, 0, 0, 0xC027,
3864+ 0x3C78, 0x595C, 0xC028, 0, 0x3E38, 0, 0x5956, 0x595B,
3865+ 0xC029, 0, 0x4753, 0, 0xC02A, 0xC02B, 0x5955, 0,
3866+ 0x3721, 0xC02C, 0xC02D, 0x335D, 0, 0, 0xC02E, 0x595D,
3867+ 0x4E2B, 0x3A4E, 0x4335, 0x595A, 0xC02F, 0x405C, 0xC030, 0x3935,
3868+ 0x3F64, 0x3166, 0x413C, 0x5958, 0x3545, 0xC031, 0xC032, 0xC033,
3869+ 0, 0, 0x3747, 0, 0x444F, 0x595E, 0, 0,
3870+ 0, 0, 0, 0x415F, 0, 0xC034, 0x5961, 0,
3871+};
3872+static const unsigned short utf8_to_euc_E68F[] = {
3873+ 0x5963, 0xC035, 0, 0x4237, 0x5969, 0xC036, 0x5964, 0,
3874+ 0xC037, 0x5966, 0, 0, 0, 0, 0xC038, 0x4941,
3875+ 0x4473, 0xC039, 0x5967, 0xC03A, 0xC03B, 0xC03C, 0x4D2C, 0,
3876+ 0, 0, 0x4D48, 0x3439, 0xC03D, 0, 0, 0,
3877+ 0xC03E, 0x302E, 0, 0x5965, 0, 0xC03F, 0, 0,
3878+ 0, 0x5962, 0xC040, 0, 0xC041, 0, 0x3478, 0,
3879+ 0, 0, 0xC042, 0xC043, 0x3167, 0xC044, 0x5968, 0,
3880+ 0xC045, 0xC046, 0x4D49, 0, 0, 0, 0, 0,
3881+};
3882+static const unsigned short utf8_to_euc_E690[] = {
3883+ 0, 0, 0, 0, 0, 0, 0x596C, 0,
3884+ 0, 0xC047, 0xC048, 0, 0, 0x423B, 0, 0x5973,
3885+ 0xC049, 0, 0xC04A, 0x596D, 0xC04B, 0, 0x596A, 0x5971,
3886+ 0xC04C, 0, 0, 0, 0x5953, 0, 0xC04D, 0,
3887+ 0xC04E, 0, 0xC04F, 0, 0xC050, 0xC051, 0x596E, 0,
3888+ 0x5972, 0xC052, 0xC053, 0, 0x4842, 0x456B, 0, 0xC054,
3889+ 0xC055, 0, 0, 0, 0x596B, 0xC056, 0x596F, 0,
3890+ 0, 0, 0x3748, 0, 0, 0xC057, 0x3A71, 0xC058,
3891+};
3892+static const unsigned short utf8_to_euc_E691[] = {
3893+ 0, 0, 0x405D, 0, 0, 0, 0, 0,
3894+ 0, 0, 0, 0xC059, 0, 0, 0x5977, 0xC05A,
3895+ 0, 0xC05B, 0xC05C, 0xC05D, 0xC05E, 0, 0, 0,
3896+ 0x4526, 0, 0xC05F, 0xC060, 0xC061, 0xC062, 0, 0xC063,
3897+ 0xC064, 0xC065, 0, 0xC066, 0, 0, 0, 0x5974,
3898+ 0, 0x4B60, 0, 0, 0, 0xC067, 0, 0x5975,
3899+ 0, 0, 0, 0xC068, 0xC069, 0, 0x5976, 0,
3900+ 0x4C4E, 0, 0x4022, 0xC06A, 0, 0xC06B, 0, 0,
3901+};
3902+static const unsigned short utf8_to_euc_E692[] = {
3903+ 0, 0, 0, 0x3762, 0, 0xC06C, 0, 0xC06D,
3904+ 0x597D, 0, 0, 0, 0, 0, 0, 0xC06E,
3905+ 0xC06F, 0xC070, 0x3B35, 0x597A, 0, 0x5979, 0, 0,
3906+ 0xC071, 0xC072, 0x4732, 0xC073, 0, 0xC074, 0x4635, 0xC075,
3907+ 0, 0xC076, 0, 0xC077, 0x4531, 0x597B, 0xC078, 0,
3908+ 0xC079, 0x597C, 0, 0x496F, 0xC07A, 0x4745, 0x3B23, 0,
3909+ 0x4071, 0, 0x4B50, 0xC07B, 0, 0, 0, 0,
3910+ 0, 0x3349, 0, 0x5A25, 0x597E, 0xC07C, 0xC07D, 0xC07E,
3911+};
3912+static const unsigned short utf8_to_euc_E693[] = {
3913+ 0, 0x4D4A, 0x5A27, 0, 0xC121, 0x5A23, 0, 0x5A24,
3914+ 0, 0xC122, 0xC123, 0xC124, 0xC125, 0x4160, 0xC126, 0,
3915+ 0xC127, 0xC128, 0x5A22, 0, 0x593F, 0xC129, 0, 0xC12A,
3916+ 0x5A26, 0, 0x5A21, 0, 0, 0, 0, 0,
3917+ 0x5A2B, 0x5A2C, 0x4527, 0x5A2E, 0xC12B, 0xC12C, 0x3B24, 0x5A29,
3918+ 0, 0xC12D, 0xC12E, 0, 0x353C, 0xC12F, 0, 0x5A2F,
3919+ 0xC130, 0x5A28, 0x5A33, 0, 0x5A32, 0xC131, 0x5A31, 0xC132,
3920+ 0, 0, 0x5A34, 0xC133, 0, 0x5A36, 0x3E71, 0xC134,
3921+};
3922+static const unsigned short utf8_to_euc_E694[] = {
3923+ 0x5A35, 0xC135, 0, 0, 0xC136, 0x5A39, 0, 0,
3924+ 0xC137, 0xC138, 0xC139, 0, 0, 0, 0, 0xC13A,
3925+ 0, 0, 0, 0xC13B, 0xC13C, 0, 0xC13D, 0,
3926+ 0x5A37, 0xC13E, 0, 0xC13F, 0x5A38, 0x5970, 0xC140, 0xC141,
3927+ 0, 0, 0xC142, 0x5A3B, 0x5A3A, 0, 0xC143, 0,
3928+ 0, 0xC144, 0x5978, 0x5A3C, 0x5A30, 0, 0xC145, 0x3B59,
3929+ 0, 0xC146, 0, 0, 0x5A3D, 0x5A3E, 0x5A40, 0x5A3F,
3930+ 0x5A41, 0x327E, 0xC147, 0x3936, 0xC148, 0xC149, 0x4A7C, 0x402F,
3931+};
3932+static const unsigned short utf8_to_euc_E695[] = {
3933+ 0, 0, 0, 0xC14A, 0, 0x384E, 0, 0xC14B,
3934+ 0x5A43, 0xC14C, 0, 0, 0, 0x5A46, 0xF441, 0x4952,
3935+ 0xC14D, 0x355F, 0xC14E, 0, 0xC14F, 0x5A45, 0x5A44, 0x4754,
3936+ 0x5A47, 0x3635, 0, 0, 0, 0x5A49, 0x5A48, 0xC150,
3937+ 0xC151, 0, 0x343A, 0x3B36, 0, 0, 0x4658, 0xC152,
3938+ 0, 0, 0, 0xC153, 0x3749, 0, 0, 0,
3939+ 0x3F74, 0, 0x5A4A, 0, 0x4030, 0x4528, 0, 0x495F,
3940+ 0x5A4B, 0, 0xC154, 0, 0, 0xC155, 0, 0,
3941+};
3942+static const unsigned short utf8_to_euc_E696[] = {
3943+ 0, 0xC156, 0x5A4C, 0x5A4D, 0, 0xC157, 0, 0x4A38,
3944+ 0x555D, 0x4046, 0xC158, 0, 0x494C, 0, 0x3A58, 0,
3945+ 0x4865, 0x4843, 0xC159, 0, 0, 0xC15A, 0, 0x454D,
3946+ 0xC15B, 0x4E41, 0, 0x5A4F, 0x3C50, 0xC15C, 0, 0x5A50,
3947+ 0xC15D, 0x3036, 0, 0xC15E, 0x3654, 0x404D, 0xC15F, 0x4960,
3948+ 0, 0, 0, 0x5A51, 0x3B42, 0x4347, 0xC160, 0x3B5B,
3949+ 0x3F37, 0, 0xC161, 0xC162, 0xC163, 0, 0, 0x5A52,
3950+ 0, 0x4A7D, 0, 0, 0x3177, 0x3B5C, 0, 0xC164,
3951+};
3952+static const unsigned short utf8_to_euc_E697[] = {
3953+ 0, 0x5A55, 0xC165, 0x5A53, 0x5A56, 0x4E39, 0x5A54, 0,
3954+ 0xC166, 0xC167, 0, 0x407B, 0x5A57, 0, 0xC168, 0x4232,
3955+ 0xC169, 0, 0x5A58, 0, 0xC16A, 0, 0xC16B, 0x347A,
3956+ 0xC16C, 0x5A5A, 0, 0x5A59, 0, 0, 0, 0xC16D,
3957+ 0x5A5B, 0x5A5C, 0x347B, 0, 0, 0x467C, 0x4336, 0x356C,
3958+ 0x3B5D, 0x4161, 0, 0, 0x3D5C, 0x3030, 0, 0,
3959+ 0xC16E, 0x5A5D, 0xC16F, 0, 0xC170, 0xC171, 0, 0,
3960+ 0, 0xC172, 0x3222, 0x5A61, 0, 0, 0xC173, 0xC174,
3961+};
3962+static const unsigned short utf8_to_euc_E698[] = {
3963+ 0xC175, 0, 0x3937, 0x5A60, 0xC176, 0, 0x3A2B, 0x3E3A,
3964+ 0xC177, 0xC178, 0x5A5F, 0, 0x3E3B, 0xC179, 0x4C40, 0x3A2A,
3965+ 0, 0xC17A, 0xC17B, 0x3057, 0x404E, 0xC17C, 0xC17D, 0,
3966+ 0, 0, 0, 0, 0x5A66, 0xC17E, 0xC221, 0x4031,
3967+ 0x3147, 0xC222, 0xC223, 0xC224, 0xC225, 0x3D55, 0xC226, 0x4B66,
3968+ 0x3A72, 0xC227, 0xC228, 0xC229, 0xC22A, 0x3E3C, 0xC22B, 0x4027,
3969+ 0xC22C, 0xC22D, 0, 0xC22E, 0x5A65, 0x5A63, 0x5A64, 0xC230,
3970+ 0, 0xC22F, 0, 0xF442, 0x436B, 0, 0, 0x5B26,
3971+};
3972+static const unsigned short utf8_to_euc_E699[] = {
3973+ 0xC231, 0x5A6A, 0x3B7E, 0x3938, 0x5A68, 0xC232, 0xC233, 0,
3974+ 0, 0x5A69, 0xC234, 0x3F38, 0xC235, 0, 0xC237, 0x5A67,
3975+ 0, 0xC236, 0x3B2F, 0, 0, 0, 0, 0xC238,
3976+ 0xC239, 0xC23A, 0, 0xC23B, 0xC23C, 0x5A6C, 0x5A6B, 0x5A70,
3977+ 0xC23D, 0xC23E, 0x5A71, 0, 0x5A6D, 0xF443, 0x3322, 0x5A6E,
3978+ 0x5A6F, 0x4855, 0xC240, 0xC241, 0xC242, 0, 0x4961, 0x374A,
3979+ 0x5A72, 0, 0, 0xC244, 0x4032, 0xC245, 0x3E3D, 0xC247,
3980+ 0xC248, 0xC249, 0x4352, 0xC24A, 0xC24C, 0, 0xC243, 0xC246,
3981+};
3982+static const unsigned short utf8_to_euc_E69A[] = {
3983+ 0xC24B, 0x3647, 0, 0x5A73, 0x5A77, 0, 0, 0x324B,
3984+ 0x5A74, 0x5A76, 0, 0xC24D, 0xC24E, 0xC24F, 0x5A75, 0,
3985+ 0xC250, 0x3D6B, 0xC251, 0, 0, 0, 0x4348, 0x3045,
3986+ 0x5A78, 0xC252, 0xC253, 0xC254, 0xC255, 0x5A79, 0, 0xC256,
3987+ 0xC257, 0, 0x442A, 0, 0xC258, 0, 0x4E71, 0,
3988+ 0, 0, 0, 0x3B43, 0, 0xC259, 0x4A6B, 0,
3989+ 0, 0xC25A, 0xC25B, 0, 0x4B3D, 0xC25C, 0, 0,
3990+ 0x5B22, 0x5A7B, 0, 0xC25D, 0x5A7E, 0, 0x5A7D, 0xC25E,
3991+};
3992+static const unsigned short utf8_to_euc_E69B[] = {
3993+ 0xC25F, 0x5A7A, 0xC260, 0xC261, 0x5B21, 0, 0, 0x465E,
3994+ 0xC262, 0x5A7C, 0, 0, 0xC263, 0, 0xC264, 0xC265,
3995+ 0, 0, 0, 0, 0xC266, 0, 0x5B23, 0,
3996+ 0, 0x3D6C, 0x5B24, 0xC267, 0x4D4B, 0x4778, 0, 0xC268,
3997+ 0x5B25, 0, 0, 0, 0, 0, 0x5B27, 0,
3998+ 0xC269, 0x5B28, 0, 0xC26A, 0xC26B, 0, 0xC26C, 0,
3999+ 0x5B29, 0, 0x364A, 0x3148, 0x3939, 0x5B2A, 0, 0x5B2B,
4000+ 0x3D71, 0x4162, 0xC26D, 0xC23F, 0x5258, 0x413E, 0x413D, 0x4258,
4001+};
4002+static const unsigned short utf8_to_euc_E69C[] = {
4003+ 0x3A47, 0, 0, 0x5072, 0, 0xC26E, 0, 0xC26F,
4004+ 0x376E, 0x4D2D, 0, 0x4A7E, 0, 0x497E, 0xC270, 0x5B2C,
4005+ 0, 0, 0, 0xC271, 0x3A73, 0x443F, 0x5B2D, 0x4F2F,
4006+ 0, 0xC272, 0, 0x4B3E, 0xC273, 0x442B, 0x5B2E, 0x347C,
4007+ 0xC274, 0, 0xC275, 0, 0, 0, 0x5B2F, 0x5B30,
4008+ 0x4C5A, 0, 0x4C24, 0x4B76, 0x4B5C, 0x3B25, 0x5B32, 0,
4009+ 0, 0x3C6B, 0, 0xC276, 0x4B51, 0, 0x5B34, 0x5B37,
4010+ 0x5B36, 0, 0x3479, 0, 0, 0x3560, 0xC277, 0x5B33,
4011+};
4012+static const unsigned short utf8_to_euc_E69D[] = {
4013+ 0, 0x5B35, 0, 0, 0, 0xC278, 0x5B38, 0xC279,
4014+ 0xC27A, 0x3F79, 0, 0, 0xC27B, 0, 0x4D7B, 0x3049,
4015+ 0x3A60, 0x423C, 0, 0x3C5D, 0xC27C, 0xC27D, 0x3E73, 0,
4016+ 0, 0x5B3B, 0, 0, 0x454E, 0xC27E, 0x5B39, 0x422B,
4017+ 0x5B3A, 0x3E72, 0x4C5D, 0x5B3C, 0x5B3D, 0x4D68, 0xC321, 0,
4018+ 0, 0, 0x5B42, 0, 0xC322, 0x393A, 0xC323, 0x4755,
4019+ 0x5B3F, 0x456C, 0x5A5E, 0x5A62, 0xC324, 0x354F, 0xC325, 0x4747,
4020+ 0, 0, 0, 0xC326, 0x5B41, 0, 0x3E3E, 0x4844,
4021+};
4022+static const unsigned short utf8_to_euc_E69E[] = {
4023+ 0, 0xC327, 0, 0, 0xC328, 0x5B47, 0, 0x487A,
4024+ 0, 0x5B3E, 0, 0x5B44, 0x5B43, 0, 0xC329, 0xC32A,
4025+ 0x404F, 0xC32B, 0, 0xC32C, 0, 0x4B6D, 0xC32D, 0x4E53,
4026+ 0xC32E, 0xC32F, 0x4B67, 0xC330, 0x324C, 0x3B5E, 0, 0,
4027+ 0x4F48, 0x5B46, 0x3F75, 0, 0, 0, 0x5B45, 0,
4028+ 0, 0x5B40, 0, 0, 0, 0, 0, 0x384F,
4029+ 0xC331, 0xC332, 0xC333, 0x5B4C, 0x5B4A, 0xC334, 0x324D, 0x5B48,
4030+ 0x5B4E, 0x5B54, 0, 0xC335, 0xC336, 0xC337, 0, 0,
4031+};
4032+static const unsigned short utf8_to_euc_E69F[] = {
4033+ 0xC339, 0x4248, 0xC33A, 0xC33B, 0x4A41, 0xC33C, 0x5B56, 0,
4034+ 0xC33D, 0xC33E, 0x4922, 0, 0, 0, 0x5B55, 0x4770,
4035+ 0x4B3F, 0x343B, 0xC33F, 0x4077, 0x3D40, 0, 0, 0xC340,
4036+ 0x4453, 0xC341, 0x4D2E, 0, 0xC342, 0x5B51, 0x5B50, 0,
4037+ 0, 0xC343, 0x5B52, 0, 0x5B4F, 0, 0xC344, 0x5B57,
4038+ 0, 0x5B4D, 0, 0, 0x5B4B, 0, 0x5B53, 0x5B49,
4039+ 0xC345, 0x436C, 0xC346, 0x4C78, 0x3C46, 0x3A74, 0xC347, 0xC348,
4040+ 0, 0xC338, 0, 0x3A3A, 0, 0, 0x4B6F, 0x3341,
4041+};
4042+static const unsigned short utf8_to_euc_E6A0[] = {
4043+ 0, 0xF446, 0x444E, 0x464A, 0x3149, 0, 0, 0,
4044+ 0, 0, 0, 0, 0, 0, 0, 0,
4045+ 0, 0, 0, 0x4072, 0xC34A, 0, 0x4034, 0x372A,
4046+ 0, 0xC34B, 0, 0, 0, 0xC34C, 0x5B59, 0xC34D,
4047+ 0, 0x393B, 0x337C, 0, 0, 0, 0, 0xC34F,
4048+ 0xC34E, 0x5B5B, 0x3374, 0x5B61, 0xC350, 0xC351, 0, 0xC352,
4049+ 0xC353, 0xC354, 0x5B5E, 0xC355, 0x4073, 0, 0, 0,
4050+ 0x334B, 0x3A2C, 0, 0xC356, 0x334A, 0x3A4F, 0, 0xC357,
4051+};
4052+static const unsigned short utf8_to_euc_E6A1[] = {
4053+ 0x5B5C, 0x3765, 0x374B, 0x456D, 0xC358, 0xC359, 0x5B5A, 0,
4054+ 0x3046, 0, 0xC35A, 0, 0xC35B, 0x5B5D, 0x5B5F, 0,
4055+ 0x364D, 0x372C, 0xC349, 0x343C, 0x354B, 0xC35C, 0, 0xC35D,
4056+ 0xC35E, 0x5B62, 0, 0xC35F, 0x3A79, 0x4B71, 0, 0x3B37,
4057+ 0, 0, 0, 0x5B63, 0, 0, 0, 0x4930,
4058+ 0, 0, 0, 0xC360, 0, 0, 0xC361, 0xC362,
4059+ 0xC363, 0xC364, 0xC365, 0, 0x5B6F, 0xC366, 0x3233, 0x5B64,
4060+ 0, 0xC367, 0xC368, 0xC369, 0xC36A, 0, 0x5B75, 0x5B65,
4061+};
4062+static const unsigned short utf8_to_euc_E6A2[] = {
4063+ 0, 0x4E42, 0xC36B, 0x5B6C, 0xC36C, 0x475F, 0xC36D, 0,
4064+ 0xC36E, 0, 0, 0, 0, 0x5B74, 0, 0x5B67,
4065+ 0, 0, 0, 0x3034, 0x5B69, 0, 0xC36F, 0x393C,
4066+ 0xC370, 0, 0xC371, 0x5B6B, 0xC372, 0x5B6A, 0, 0x5B66,
4067+ 0x5B71, 0xC373, 0x3E3F, 0xC374, 0, 0xC375, 0x546D, 0x3868,
4068+ 0x4D7C, 0xC376, 0xC377, 0, 0, 0x5B68, 0xC378, 0x4474,
4069+ 0x3323, 0x3A2D, 0xC379, 0x5B60, 0, 0x5B70, 0x3361, 0,
4070+ 0, 0x5B6E, 0x5B72, 0xC37A, 0x456E, 0, 0, 0,
4071+};
4072+static const unsigned short utf8_to_euc_E6A3[] = {
4073+ 0, 0, 0, 0, 0x347E, 0xC37B, 0x5C32, 0,
4074+ 0xC37C, 0x4C49, 0x5B77, 0x347D, 0xC37D, 0x5B7E, 0, 0xC37E,
4075+ 0xC421, 0xC422, 0x4B40, 0xC423, 0x5C21, 0x5C23, 0xC424, 0x5C27,
4076+ 0x5B79, 0xC425, 0x432A, 0, 0xC426, 0xC427, 0, 0x456F,
4077+ 0x5C2B, 0x5B7C, 0, 0x5C28, 0, 0xC428, 0, 0x5C22,
4078+ 0xC429, 0, 0xC42A, 0xC42B, 0xC42C, 0xC42D, 0x3F39, 0x5C2C,
4079+ 0xC42E, 0xC42F, 0x4033, 0, 0, 0xC430, 0xC431, 0,
4080+ 0, 0x5C2A, 0x343D, 0xC432, 0xC433, 0xC434, 0, 0,
4081+};
4082+static const unsigned short utf8_to_euc_E6A4[] = {
4083+ 0x4F50, 0x5B76, 0, 0, 0x5C26, 0x3058, 0xC435, 0,
4084+ 0x5B78, 0xC436, 0xC437, 0x4C3A, 0x5B7D, 0x3F22, 0x4447, 0x5B73,
4085+ 0xC438, 0xC439, 0x5C25, 0xC43A, 0, 0, 0xC43B, 0xC43C,
4086+ 0, 0x3F7A, 0x5C2F, 0x3371, 0x3821, 0, 0, 0,
4087+ 0, 0x5C31, 0x5B7A, 0x5C30, 0, 0x5C29, 0x5B7B, 0,
4088+ 0x5C2D, 0, 0x5C2E, 0, 0, 0, 0, 0,
4089+ 0x5C3F, 0xC43D, 0, 0xC43E, 0x464E, 0xC43F, 0x5C24, 0,
4090+ 0xC440, 0x5C3B, 0, 0xC441, 0, 0x5C3D, 0, 0x4458,
4091+};
4092+static const unsigned short utf8_to_euc_E6A5[] = {
4093+ 0, 0, 0xC442, 0, 0, 0xC443, 0, 0,
4094+ 0, 0xC444, 0x4D4C, 0, 0, 0, 0xC445, 0,
4095+ 0, 0, 0, 0x4976, 0x5C38, 0x424A, 0, 0xC446,
4096+ 0, 0x5C3E, 0x413F, 0xC447, 0x5C35, 0x5C42, 0x5C41, 0,
4097+ 0x466F, 0x5C40, 0x466A, 0xC448, 0xC449, 0xC44A, 0xC44B, 0,
4098+ 0xC44C, 0xC44D, 0x5C44, 0x5C37, 0xC44E, 0x3648, 0x5C3A, 0x3D5D,
4099+ 0xC44F, 0xC450, 0xC451, 0x4760, 0x5C3C, 0x364B, 0, 0x5C34,
4100+ 0x5C36, 0x5C33, 0xC452, 0xC453, 0x4F30, 0x335A, 0x5C39, 0xC454,
4101+};
4102+static const unsigned short utf8_to_euc_E6A6[] = {
4103+ 0xC455, 0x5C43, 0x3335, 0, 0, 0, 0, 0,
4104+ 0, 0, 0x3A67, 0, 0, 0xC456, 0x315D, 0,
4105+ 0, 0x5C54, 0xC457, 0, 0x4F31, 0x5C57, 0xC458, 0,
4106+ 0xC459, 0, 0, 0x3F3A, 0x5C56, 0, 0, 0,
4107+ 0x5C55, 0xC45A, 0, 0, 0, 0xC45B, 0xC45C, 0x5C52,
4108+ 0xC45D, 0, 0, 0xC45E, 0, 0xC45F, 0x5C46, 0xC460,
4109+ 0, 0x5C63, 0x5C45, 0, 0x5C58, 0, 0, 0xC461,
4110+ 0xC462, 0, 0xC463, 0x5C50, 0xC464, 0, 0x5C4B, 0x5C48,
4111+};
4112+static const unsigned short utf8_to_euc_E6A7[] = {
4113+ 0, 0x5C49, 0, 0x5C51, 0, 0xC465, 0, 0x7422,
4114+ 0xC466, 0, 0x5C4E, 0x393D, 0x4448, 0x4164, 0x5C4C, 0,
4115+ 0x5C47, 0xC467, 0, 0x5C4A, 0, 0, 0xC468, 0xC469,
4116+ 0x4D4D, 0x4B6A, 0, 0, 0, 0x5C4F, 0x5C59, 0,
4117+ 0, 0, 0xC46A, 0, 0, 0xC46B, 0, 0x5C61,
4118+ 0x5C5A, 0, 0, 0x5C67, 0, 0x5C65, 0xC46C, 0xC46D,
4119+ 0, 0xC46E, 0x5C60, 0xC46F, 0, 0xC470, 0, 0,
4120+ 0, 0x5C5F, 0, 0x4450, 0, 0x4165, 0xC471, 0x5C5D,
4121+};
4122+static const unsigned short utf8_to_euc_E6A8[] = {
4123+ 0xC472, 0xC473, 0x5C5B, 0xC474, 0, 0x5C62, 0, 0,
4124+ 0, 0, 0x5C68, 0x4875, 0x5C6E, 0, 0, 0xC475,
4125+ 0, 0xC476, 0x5C69, 0x5C6C, 0x5C66, 0xC477, 0, 0x4374,
4126+ 0, 0x4938, 0xC478, 0x5C5C, 0, 0xC479, 0x5C64, 0x3E40,
4127+ 0xC47A, 0x4C4F, 0x5C78, 0x5C6B, 0xC47B, 0, 0, 0,
4128+ 0xC47C, 0x3822, 0x3223, 0x335F, 0, 0, 0x5C53, 0,
4129+ 0xC47D, 0, 0xC47E, 0, 0xC521, 0x3E41, 0x5C70, 0xC522,
4130+ 0x5C77, 0x3C79, 0x3372, 0xC523, 0, 0x432E, 0xC524, 0xC525,
4131+};
4132+static const unsigned short utf8_to_euc_E6A9[] = {
4133+ 0, 0, 0, 0, 0x5C6D, 0xC526, 0xC527, 0x5C72,
4134+ 0x5C76, 0xC528, 0xC529, 0x3636, 0, 0, 0xC52A, 0,
4135+ 0xC52B, 0xC52C, 0xC52D, 0, 0, 0xC52E, 0xC52F, 0,
4136+ 0x354C, 0x5C74, 0, 0xC530, 0, 0, 0, 0x3521,
4137+ 0, 0x464B, 0x5C73, 0, 0xC531, 0, 0x5C75, 0xC532,
4138+ 0, 0, 0xC533, 0xF449, 0, 0, 0, 0,
4139+ 0, 0xC534, 0x5C6F, 0xC535, 0, 0, 0, 0,
4140+ 0x5C71, 0, 0, 0, 0, 0, 0xC536, 0x3360,
4141+};
4142+static const unsigned short utf8_to_euc_E6AA[] = {
4143+ 0x4349, 0xC537, 0, 0xC538, 0x5C7C, 0, 0xC539, 0xC53A,
4144+ 0, 0xC53B, 0, 0xC53C, 0, 0x5C7A, 0x3869, 0,
4145+ 0x5C79, 0xC53D, 0, 0, 0, 0, 0, 0x5D21,
4146+ 0, 0, 0, 0xC53E, 0x5B58, 0xC53F, 0xC540, 0xC541,
4147+ 0x5C7B, 0, 0x5C7D, 0x5C7E, 0, 0xC542, 0, 0,
4148+ 0, 0, 0x5D2C, 0xC543, 0x5D28, 0, 0x5B6D, 0xC544,
4149+ 0xC545, 0xC546, 0, 0x5D27, 0xC547, 0, 0, 0,
4150+ 0x5D26, 0, 0, 0x5D23, 0, 0xC548, 0xC549, 0xC54A,
4151+};
4152+static const unsigned short utf8_to_euc_E6AB[] = {
4153+ 0, 0x5C6A, 0x5D25, 0x5D24, 0, 0, 0xC54B, 0,
4154+ 0xC54D, 0xC54C, 0, 0, 0xC54E, 0, 0, 0,
4155+ 0xC54F, 0x5D2A, 0, 0x4F26, 0xC550, 0xC551, 0xC552, 0,
4156+ 0, 0, 0x5D2D, 0x367B, 0xC553, 0xC554, 0x5D29, 0x5D2B,
4157+ 0, 0, 0xF44A, 0, 0xC555, 0, 0, 0xC556,
4158+ 0x4827, 0, 0x5D2E, 0, 0xC557, 0, 0, 0,
4159+ 0xC558, 0xC559, 0xC55A, 0, 0, 0, 0, 0,
4160+ 0, 0, 0x5D32, 0x5D2F, 0xC55B, 0xC55C, 0, 0,
4161+};
4162+static const unsigned short utf8_to_euc_E6AC[] = {
4163+ 0, 0, 0xC55D, 0xC55E, 0x4D73, 0x5D30, 0xC55F, 0xC560,
4164+ 0, 0xC561, 0x5C5E, 0, 0, 0, 0, 0xC562,
4165+ 0xC563, 0xC564, 0x5D33, 0, 0, 0, 0x5D34, 0xC565,
4166+ 0, 0, 0, 0xC566, 0, 0x3135, 0xC567, 0x5D36,
4167+ 0x3767, 0x3C21, 0, 0x3655, 0xC568, 0, 0, 0x3224,
4168+ 0xC569, 0, 0, 0xC56A, 0xC56B, 0, 0, 0xC56C,
4169+ 0, 0, 0x4D5F, 0, 0, 0xC56D, 0xC56E, 0x5D38,
4170+ 0x5D37, 0x5D3A, 0x353D, 0xC56F, 0, 0x3656, 0x343E, 0xC570,
4171+};
4172+static const unsigned short utf8_to_euc_E6AD[] = {
4173+ 0, 0, 0, 0x5D3D, 0, 0, 0xC571, 0x5D3C,
4174+ 0, 0x5D3E, 0xC572, 0, 0x324E, 0xC573, 0x4337, 0,
4175+ 0x5D3F, 0, 0xC574, 0x343F, 0x5D41, 0, 0xC575, 0,
4176+ 0xC576, 0x5D40, 0, 0x5D42, 0, 0xC577, 0, 0x5D43,
4177+ 0xC578, 0x5D44, 0x3B5F, 0x4035, 0x3A21, 0, 0x4970, 0xC579,
4178+ 0, 0x4A62, 0x4F44, 0xC57A, 0, 0, 0xC57B, 0x3B75,
4179+ 0xC57C, 0, 0, 0x3A50, 0x4E72, 0xC57D, 0, 0,
4180+ 0x5D45, 0x5D46, 0, 0x3B60, 0, 0xC57E, 0xC621, 0x5D47,
4181+};
4182+static const unsigned short utf8_to_euc_E6AE[] = {
4183+ 0x5D48, 0, 0xC622, 0x5D4A, 0x5D49, 0xC623, 0x4B58, 0,
4184+ 0, 0x3D5E, 0x3C6C, 0x3B44, 0, 0x5D4B, 0, 0,
4185+ 0, 0, 0, 0, 0, 0x5D4D, 0x3F23, 0xC624,
4186+ 0x5D4C, 0, 0, 0xC625, 0, 0, 0x5D4E, 0xC626,
4187+ 0xC627, 0, 0xC628, 0xC629, 0x5D4F, 0, 0, 0,
4188+ 0xC62A, 0xC62B, 0x5D50, 0x5D51, 0xC62C, 0xC62D, 0xC62E, 0x5D52,
4189+ 0xC62F, 0x5D54, 0x5D53, 0x5D55, 0x3225, 0x434A, 0, 0x5D56,
4190+ 0xC630, 0xC631, 0x3B26, 0x334C, 0x5D57, 0xC632, 0xC633, 0x4542,
4191+};
4192+static const unsigned short utf8_to_euc_E6AF[] = {
4193+ 0x544C, 0, 0, 0xC634, 0xC635, 0x3523, 0x5D58, 0,
4194+ 0, 0xC636, 0, 0x5D59, 0xC637, 0x4A6C, 0x4B68, 0,
4195+ 0, 0, 0x4647, 0x5D5A, 0x4866, 0, 0xC638, 0,
4196+ 0x487B, 0, 0xC639, 0x4C53, 0, 0, 0, 0x5D5B,
4197+ 0, 0xC63A, 0, 0xC63B, 0, 0, 0xC63C, 0xC63D,
4198+ 0, 0, 0, 0x5D5D, 0x5D5C, 0, 0xC63E, 0x5D5F,
4199+ 0, 0xC63F, 0, 0x5D5E, 0, 0, 0, 0xC640,
4200+ 0, 0xC641, 0, 0, 0, 0, 0, 0xC642,
4201+};
4202+static const unsigned short utf8_to_euc_E6B0[] = {
4203+ 0, 0, 0xC643, 0, 0xC644, 0xC645, 0, 0,
4204+ 0x5D61, 0xC646, 0, 0, 0, 0xC647, 0xC648, 0x3B61,
4205+ 0xC649, 0x4C31, 0xC64A, 0x5D62, 0x5D63, 0, 0, 0x3524,
4206+ 0, 0xC64B, 0, 0x5D64, 0, 0, 0, 0xC64C,
4207+ 0, 0, 0, 0x5D66, 0x5D65, 0, 0xC64D, 0xC64E,
4208+ 0xC64F, 0, 0, 0, 0xC650, 0, 0xC651, 0,
4209+ 0, 0, 0, 0xC652, 0x3F65, 0xC653, 0xC654, 0x4939,
4210+ 0x314A, 0, 0xC655, 0xC656, 0, 0, 0x4845, 0xC657,
4211+};
4212+static const unsigned short utf8_to_euc_E6B1[] = {
4213+ 0x4475, 0x3D41, 0x3561, 0, 0, 0, 0, 0,
4214+ 0, 0, 0xC658, 0xC659, 0, 0xC65A, 0x4846, 0xC65B,
4215+ 0x3C2E, 0, 0xC65C, 0, 0xC65D, 0x5D68, 0, 0x3440,
4216+ 0, 0xC65E, 0x3178, 0xC65F, 0xC660, 0x4672, 0x5D67, 0x393E,
4217+ 0x4353, 0, 0x5D69, 0, 0, 0, 0, 0xC736,
4218+ 0x5D71, 0, 0x5D6A, 0xC661, 0, 0xC662, 0, 0xC663,
4219+ 0x4241, 0, 0x3562, 0x5D72, 0xC664, 0, 0xC665, 0,
4220+ 0xC666, 0xC667, 0x3768, 0xC668, 0, 0x3525, 0x5D70, 0,
4221+};
4222+static const unsigned short utf8_to_euc_E6B2[] = {
4223+ 0, 0x5D6E, 0x5D6B, 0x4D60, 0, 0xC669, 0xC66A, 0xC66B,
4224+ 0x4440, 0xC66C, 0, 0, 0x4659, 0x5D6C, 0, 0,
4225+ 0x5D74, 0, 0x5D73, 0x3723, 0xC66D, 0xC66E, 0x322D, 0xC66F,
4226+ 0xC670, 0x3A3B, 0x5D6D, 0x5D6F, 0xC671, 0, 0, 0xC672,
4227+ 0, 0x4B57, 0x4274, 0, 0, 0, 0, 0,
4228+ 0, 0, 0, 0x4B77, 0, 0, 0x5D7C, 0,
4229+ 0xC673, 0x5D7D, 0xC674, 0x324F, 0xC675, 0, 0, 0,
4230+ 0x4A28, 0x4C7D, 0x5E21, 0x3C23, 0x3E42, 0x5D78, 0x5D7E, 0x3168,
4231+};
4232+static const unsigned short utf8_to_euc_E6B3[] = {
4233+ 0, 0x3637, 0xC676, 0, 0x5D75, 0x5D7A, 0xC677, 0,
4234+ 0, 0x4074, 0x4771, 0, 0x4867, 0xC678, 0, 0xC679,
4235+ 0xC67A, 0xC67B, 0xC67C, 0x5D77, 0xC67D, 0x4B21, 0xC67E, 0x5D79,
4236+ 0, 0x5E24, 0xC721, 0x5E22, 0xC722, 0x5D7B, 0, 0,
4237+ 0xC723, 0x4B22, 0x4748, 0x3563, 0, 0x4525, 0, 0xC724,
4238+ 0x436D, 0xC725, 0x5E25, 0xC726, 0xC727, 0, 0xC728, 0x5E23,
4239+ 0x4259, 0x5D76, 0xC729, 0x314B, 0xC72A, 0, 0, 0,
4240+ 0, 0, 0, 0, 0, 0, 0, 0,
4241+};
4242+static const unsigned short utf8_to_euc_E6B4[] = {
4243+ 0, 0, 0, 0, 0xC72B, 0, 0, 0xC72C,
4244+ 0, 0, 0xC72D, 0x4D4E, 0x5E30, 0, 0xC72E, 0xC72F,
4245+ 0, 0xC730, 0x5E2F, 0xC731, 0, 0, 0, 0x4076,
4246+ 0, 0x5E2C, 0xC732, 0x4D6C, 0, 0, 0x4636, 0x5E26,
4247+ 0, 0, 0, 0, 0, 0x4445, 0xC733, 0xC734,
4248+ 0xC735, 0x314C, 0x393F, 0x5E29, 0, 0, 0xC737, 0xC738,
4249+ 0, 0xC739, 0x3D27, 0x5E2E, 0, 0x5E2D, 0x5E28, 0,
4250+ 0x5E2B, 0xC73A, 0, 0x3368, 0xC73B, 0x5E2A, 0x4749, 0xC73C,
4251+};
4252+static const unsigned short utf8_to_euc_E6B5[] = {
4253+ 0, 0x4E2E, 0, 0, 0x3E74, 0x4075, 0, 0,
4254+ 0, 0, 0, 0, 0, 0, 0, 0,
4255+ 0, 0, 0, 0, 0, 0, 0, 0xC73D,
4256+ 0, 0x5E36, 0x5E34, 0, 0x494D, 0, 0xC73E, 0xC73F,
4257+ 0, 0xC740, 0, 0x5E31, 0x5E33, 0xC741, 0x313A, 0xC742,
4258+ 0, 0x3940, 0x4F32, 0, 0x333D, 0, 0x4962, 0xC743,
4259+ 0xC744, 0, 0, 0, 0x4D61, 0, 0, 0x3324,
4260+ 0x3F3B, 0x5E35, 0, 0, 0xC745, 0, 0, 0,
4261+};
4262+static const unsigned short utf8_to_euc_E6B6[] = {
4263+ 0, 0, 0xC746, 0, 0, 0x5E3A, 0, 0xC747,
4264+ 0x3E43, 0, 0, 0, 0x4D30, 0, 0x5E37, 0,
4265+ 0, 0xC748, 0xC749, 0x5E32, 0xC74A, 0x5E38, 0xC74B, 0xC74C,
4266+ 0xC74D, 0x4E5E, 0, 0x4573, 0x4642, 0, 0, 0,
4267+ 0, 0, 0, 0, 0, 0, 0, 0,
4268+ 0, 0, 0xC74E, 0, 0xC74F, 0, 0, 0x3336,
4269+ 0, 0, 0x3155, 0, 0xC750, 0x5E3E, 0, 0xC751,
4270+ 0x5E41, 0xC752, 0, 0, 0x4E43, 0xC753, 0, 0xC754,
4271+};
4272+static const unsigned short utf8_to_euc_E6B7[] = {
4273+ 0x4D64, 0, 0, 0, 0xC755, 0x5E48, 0x5E42, 0x5E3F,
4274+ 0xC756, 0, 0xC757, 0x4E54, 0x5E45, 0, 0xC758, 0xC759,
4275+ 0, 0x3D4A, 0x5E47, 0, 0, 0x5E4C, 0xC75A, 0,
4276+ 0x4571, 0x5E4A, 0, 0xC75B, 0, 0xC75C, 0x5E44, 0xC75D,
4277+ 0xC75E, 0x4338, 0xC75F, 0, 0x5E4B, 0xC760, 0x5E40, 0,
4278+ 0x5E46, 0xC761, 0x5E4D, 0x307C, 0x5E43, 0, 0x5E4E, 0xC762,
4279+ 0xC763, 0x3F3C, 0xF44C, 0x3D5F, 0xC764, 0x4A25, 0xC765, 0x3A2E,
4280+ 0xF44B, 0x5E3B, 0x5E49, 0x453A, 0xC766, 0, 0, 0,
4281+};
4282+static const unsigned short utf8_to_euc_E6B8[] = {
4283+ 0xC767, 0, 0, 0, 0xC768, 0x4036, 0, 0x3369,
4284+ 0x3A51, 0x3E44, 0x5E3D, 0x3D42, 0, 0, 0, 0,
4285+ 0, 0, 0, 0x374C, 0, 0x5E3C, 0, 0,
4286+ 0, 0x5E52, 0x3D6D, 0x383A, 0, 0x5E61, 0xC769, 0x5E5B,
4287+ 0x3574, 0x454F, 0xC76A, 0x5E56, 0x5E5F, 0x302F, 0x3132, 0xC76B,
4288+ 0, 0x3239, 0, 0x5E58, 0x422C, 0x5E4F, 0x5E51, 0x3941,
4289+ 0, 0, 0xC76C, 0, 0, 0, 0xC76D, 0,
4290+ 0x5E62, 0xC76E, 0x5E5D, 0xC76F, 0xC770, 0, 0x5E55, 0,
4291+};
4292+static const unsigned short utf8_to_euc_E6B9[] = {
4293+ 0, 0, 0, 0x5E5C, 0xC771, 0xC772, 0, 0,
4294+ 0xC773, 0xC774, 0x4C2B, 0xC775, 0, 0x5E5A, 0x5E5E, 0xC776,
4295+ 0, 0xC777, 0xC778, 0xC779, 0xC77A, 0, 0x3850, 0xC77B,
4296+ 0x3E45, 0, 0, 0x4339, 0xC77C, 0xC77D, 0xC77E, 0x5E54,
4297+ 0, 0, 0xC821, 0xC822, 0, 0, 0, 0x4D2F,
4298+ 0xC823, 0, 0, 0x5E57, 0, 0, 0x5E50, 0x4572,
4299+ 0, 0, 0x5E53, 0xC824, 0, 0, 0x5E59, 0,
4300+ 0, 0, 0, 0xC825, 0, 0xC826, 0x4F51, 0x3C3E,
4301+};
4302+static const unsigned short utf8_to_euc_E6BA[] = {
4303+ 0x4B7E, 0, 0x5E63, 0, 0, 0, 0, 0,
4304+ 0, 0, 0, 0, 0x482E, 0xC827, 0, 0x5E6F,
4305+ 0x383B, 0, 0, 0xC828, 0, 0, 0x3D60, 0,
4306+ 0x5E65, 0xC829, 0, 0, 0x4E2F, 0x3942, 0, 0x5E72,
4307+ 0xC82A, 0, 0x306E, 0, 0, 0x5E70, 0, 0xC82B,
4308+ 0, 0, 0x5E64, 0, 0, 0xC82C, 0xC82D, 0x5E6A,
4309+ 0, 0xC82E, 0x5E6C, 0xC82F, 0, 0, 0x4D4F, 0x5E67,
4310+ 0, 0, 0x452E, 0xC830, 0, 0x5E69, 0, 0xC831,
4311+};
4312+static const unsigned short utf8_to_euc_E6BB[] = {
4313+ 0xC832, 0xC833, 0x5E71, 0xC834, 0x5E6B, 0x4C47, 0, 0xC835,
4314+ 0xC836, 0x5E66, 0xC837, 0x3C22, 0x5E7E, 0xC838, 0xC839, 0xC83A,
4315+ 0, 0x336A, 0, 0x5E68, 0x5E6D, 0x5E6E, 0, 0,
4316+ 0, 0, 0, 0, 0, 0x426C, 0x425A, 0,
4317+ 0, 0, 0, 0, 0, 0, 0, 0,
4318+ 0, 0, 0, 0xC83B, 0x5E76, 0xC83C, 0xC83D, 0x5E7C,
4319+ 0, 0, 0x5E7A, 0, 0x4529, 0, 0, 0x5F23,
4320+ 0x5E77, 0xC83E, 0, 0xC83F, 0, 0xC840, 0x5E78, 0x5E60,
4321+};
4322+static const unsigned short utf8_to_euc_E6BC[] = {
4323+ 0, 0x3579, 0x493A, 0, 0xC841, 0, 0x3C3F, 0,
4324+ 0xC842, 0x3977, 0xC843, 0, 0xC844, 0xC845, 0, 0x4F33,
4325+ 0, 0x5E74, 0, 0x5F22, 0x3169, 0x4166, 0xC846, 0,
4326+ 0xC847, 0, 0xC848, 0xC849, 0, 0, 0, 0,
4327+ 0x4779, 0, 0x3441, 0x4E7A, 0, 0, 0xC84A, 0,
4328+ 0, 0xC84B, 0xC84C, 0x4C21, 0x4452, 0xC853, 0, 0xC84D,
4329+ 0xC84E, 0x5E7B, 0x5E7D, 0xC84F, 0, 0, 0xC850, 0,
4330+ 0x4132, 0, 0, 0xC851, 0xC852, 0, 0x5F21, 0x5E79,
4331+};
4332+static const unsigned short utf8_to_euc_E6BD[] = {
4333+ 0, 0x5E73, 0, 0, 0, 0x3443, 0, 0,
4334+ 0, 0, 0, 0, 0, 0, 0, 0xC854,
4335+ 0, 0xC855, 0xC856, 0xC857, 0x3769, 0, 0, 0xC858,
4336+ 0x5F2F, 0xC859, 0xC85A, 0x5F2A, 0x4078, 0xC85B, 0xC85C, 0x3363,
4337+ 0, 0xC85D, 0xC85E, 0, 0x3D61, 0, 0x5F33, 0,
4338+ 0xC85F, 0, 0, 0, 0xC860, 0x5F2C, 0x442C, 0x5F29,
4339+ 0x4459, 0, 0, 0, 0x5F4C, 0, 0, 0,
4340+ 0x5F26, 0, 0x5F25, 0, 0x5F2E, 0xC861, 0xC862, 0,
4341+};
4342+static const unsigned short utf8_to_euc_E6BE[] = {
4343+ 0x5F28, 0x5F27, 0x5F2D, 0xC863, 0x4021, 0, 0x5F24, 0xC864,
4344+ 0xC865, 0, 0, 0xC866, 0xC867, 0xC868, 0x5F30, 0,
4345+ 0xC869, 0x5F31, 0xC86A, 0xC86B, 0xC86C, 0, 0xC86D, 0x3442,
4346+ 0, 0, 0xC86E, 0, 0, 0, 0, 0xC86F,
4347+ 0xC870, 0x5F36, 0, 0x5F35, 0x5F37, 0xC871, 0xC872, 0xC873,
4348+ 0xC874, 0, 0x5F3A, 0, 0, 0, 0xC875, 0xC876,
4349+ 0xC877, 0x4543, 0, 0x5F34, 0, 0xC878, 0xC879, 0,
4350+ 0, 0x5F38, 0, 0, 0xC87A, 0, 0, 0,
4351+};
4352+static const unsigned short utf8_to_euc_E6BF[] = {
4353+ 0x3763, 0x4279, 0x5F32, 0x473B, 0, 0xC87B, 0x5F39, 0xC87C,
4354+ 0xC87D, 0, 0xC87E, 0, 0, 0, 0, 0,
4355+ 0, 0, 0, 0, 0x5F3E, 0x5F3C, 0, 0,
4356+ 0x5F3F, 0, 0xC921, 0x5F42, 0, 0, 0xC922, 0x5F3B,
4357+ 0x396A, 0x4728, 0, 0, 0x5E39, 0, 0, 0,
4358+ 0xC923, 0xC924, 0, 0x4D74, 0x5F3D, 0, 0x5F41, 0x4275,
4359+ 0xC925, 0x5F40, 0, 0x5F2B, 0, 0xC926, 0x6F69, 0,
4360+ 0, 0xC927, 0x5F45, 0, 0xC928, 0xC929, 0x5F49, 0,
4361+};
4362+static const unsigned short utf8_to_euc_E780[] = {
4363+ 0xC92A, 0x5F47, 0, 0, 0, 0xC92B, 0xC92C, 0xC92D,
4364+ 0, 0x5F43, 0, 0x5F44, 0, 0xC92E, 0, 0x5F48,
4365+ 0, 0x5F46, 0, 0, 0, 0x494E, 0, 0xC92F,
4366+ 0x5F4E, 0, 0x5F4B, 0x5F4A, 0, 0x5F4D, 0x4654, 0x5F4F,
4367+ 0xC930, 0, 0, 0xC931, 0, 0, 0x4375, 0x426D,
4368+ 0xF44D, 0, 0, 0, 0x4025, 0, 0, 0xC932,
4369+ 0x5F50, 0, 0x5F52, 0, 0xC933, 0, 0, 0xC934,
4370+ 0, 0xC935, 0, 0, 0xC936, 0, 0x5F51, 0,
4371+};
4372+static const unsigned short utf8_to_euc_E781[] = {
4373+ 0, 0, 0, 0xC937, 0xC938, 0, 0, 0,
4374+ 0xC939, 0xC93A, 0xC93B, 0xC93C, 0x5E75, 0, 0xC941, 0,
4375+ 0, 0x5F53, 0, 0, 0xC93D, 0xC93E, 0, 0,
4376+ 0x4667, 0, 0, 0, 0, 0xC93F, 0xC940, 0,
4377+ 0, 0, 0, 0x5F54, 0xC942, 0xC943, 0, 0,
4378+ 0, 0, 0, 0x3250, 0xC944, 0, 0xC945, 0x4574,
4379+ 0x3325, 0, 0, 0, 0, 0xC946, 0xC947, 0,
4380+ 0x3564, 0, 0, 0, 0x3C5E, 0x3A52, 0xC948, 0,
4381+};
4382+static const unsigned short utf8_to_euc_E782[] = {
4383+ 0, 0xC949, 0, 0, 0, 0xC94A, 0xC94B, 0,
4384+ 0, 0x4F27, 0x3F66, 0, 0, 0, 0x316A, 0,
4385+ 0, 0, 0x5F56, 0, 0xC94C, 0xC94D, 0xC94E, 0xC94F,
4386+ 0xC950, 0x5F55, 0, 0xC951, 0, 0, 0, 0,
4387+ 0, 0, 0, 0, 0xC952, 0, 0, 0,
4388+ 0, 0, 0, 0xC953, 0x5F59, 0x433A, 0x5F5C, 0x5F57,
4389+ 0xC954, 0xC955, 0, 0x5F5B, 0xC956, 0, 0, 0xC957,
4390+ 0x5F5A, 0x4540, 0x3059, 0xF42E, 0, 0, 0, 0,
4391+};
4392+static const unsigned short utf8_to_euc_E783[] = {
4393+ 0, 0, 0, 0, 0, 0, 0, 0,
4394+ 0x4E75, 0, 0xC958, 0x5F5E, 0, 0, 0, 0x3128,
4395+ 0, 0xC959, 0, 0xC95A, 0xC95B, 0xC95C, 0xC95D, 0,
4396+ 0xC95E, 0x5F60, 0, 0, 0xC95F, 0x5F5F, 0, 0x5F5D,
4397+ 0, 0, 0, 0, 0xC960, 0, 0, 0,
4398+ 0, 0, 0, 0, 0, 0, 0, 0,
4399+ 0, 0x5F58, 0, 0, 0, 0, 0, 0,
4400+ 0, 0x4B23, 0xC961, 0, 0, 0x5F62, 0, 0,
4401+};
4402+static const unsigned short utf8_to_euc_E784[] = {
4403+ 0, 0, 0, 0xC962, 0xC963, 0xC964, 0xC965, 0xC966,
4404+ 0, 0x5F61, 0, 0xC967, 0xC968, 0, 0, 0xC969,
4405+ 0, 0, 0, 0, 0x316B, 0, 0, 0,
4406+ 0, 0x5F64, 0x4A32, 0, 0x5F63, 0, 0xC96A, 0,
4407+ 0xC96B, 0x4C35, 0, 0, 0, 0, 0x3E47, 0,
4408+ 0, 0, 0, 0xC96C, 0, 0xC96D, 0, 0xC96E,
4409+ 0xC96F, 0xC970, 0, 0, 0, 0, 0x4133, 0,
4410+ 0xC971, 0, 0, 0, 0x3E46, 0, 0, 0,
4411+};
4412+static const unsigned short utf8_to_euc_E785[] = {
4413+ 0, 0xC972, 0, 0, 0, 0xC973, 0xC974, 0xC975,
4414+ 0, 0x4E7B, 0xC976, 0xC977, 0x5F6A, 0, 0x4079, 0,
4415+ 0xC978, 0, 0xC979, 0, 0, 0x5F66, 0x5F6B, 0xC97A,
4416+ 0, 0x316C, 0xC97B, 0, 0xC97C, 0, 0xC97D, 0,
4417+ 0xC97E, 0, 0x5F69, 0, 0x4761, 0x5F65, 0x5F68, 0x3E48,
4418+ 0xCA21, 0x4851, 0, 0, 0x5F6C, 0, 0x3C51, 0,
4419+ 0, 0, 0, 0, 0, 0, 0, 0,
4420+ 0, 0xCA22, 0, 0, 0, 0x407A, 0, 0,
4421+};
4422+static const unsigned short utf8_to_euc_E786[] = {
4423+ 0xCA23, 0, 0, 0, 0x5F6F, 0xCA24, 0, 0xCA25,
4424+ 0x5F67, 0, 0x3727, 0, 0xCA26, 0, 0, 0x5F6D,
4425+ 0, 0, 0xCA27, 0, 0x4D50, 0x5F70, 0, 0,
4426+ 0, 0x7426, 0xCA28, 0xCA29, 0, 0, 0, 0x3D4F,
4427+ 0xCA2A, 0, 0xCA2B, 0, 0, 0, 0, 0,
4428+ 0x5F71, 0, 0, 0, 0x5F72, 0, 0, 0xCA2C,
4429+ 0xCA2D, 0x472E, 0xCA2E, 0xCA2F, 0, 0, 0, 0,
4430+ 0, 0x5F74, 0xCA30, 0, 0, 0, 0x5F75, 0xCA31,
4431+};
4432+static const unsigned short utf8_to_euc_E787[] = {
4433+ 0xCA32, 0xCA33, 0, 0x4733, 0xCA34, 0, 0, 0,
4434+ 0x4575, 0x5F77, 0, 0xCA35, 0xCA36, 0, 0x5F79, 0,
4435+ 0x4E55, 0, 0x5F76, 0xCA37, 0x5F78, 0x316D, 0xCA38, 0x5F73,
4436+ 0, 0xCA39, 0xCA3A, 0, 0xCA3B, 0, 0, 0x535B,
4437+ 0x5F7A, 0, 0, 0, 0, 0x4167, 0x3B38, 0x5F7C,
4438+ 0, 0, 0, 0, 0x5F7B, 0x3F24, 0x5259, 0,
4439+ 0, 0, 0, 0, 0, 0x5F7D, 0, 0,
4440+ 0xCA3C, 0x6021, 0, 0x5F6E, 0x5F7E, 0, 0xCA3D, 0x6022,
4441+};
4442+static const unsigned short utf8_to_euc_E788[] = {
4443+ 0xCA3E, 0, 0, 0, 0, 0, 0x477A, 0xCA3F,
4444+ 0xCA40, 0xCA41, 0, 0, 0, 0x6023, 0, 0,
4445+ 0x6024, 0, 0, 0xCA42, 0, 0, 0, 0xCA43,
4446+ 0, 0, 0xCA44, 0x6025, 0, 0xCA45, 0, 0xCA46,
4447+ 0, 0, 0, 0, 0xCA47, 0, 0, 0,
4448+ 0x6026, 0, 0x445E, 0xCA48, 0x6028, 0x6027, 0, 0xCA49,
4449+ 0x6029, 0, 0x602A, 0, 0xCA4A, 0x3C5F, 0x4963, 0,
4450+ 0xCA4B, 0xCA4C, 0x4C6C, 0x602B, 0x602C, 0x4156, 0x3C24, 0x602D,
4451+};
4452+static const unsigned short utf8_to_euc_E789[] = {
4453+ 0x602E, 0xCA4D, 0xCA4E, 0xCA4F, 0, 0xCA50, 0x602F, 0x4A52,
4454+ 0x4847, 0, 0, 0x6030, 0x4757, 0, 0xCA51, 0xCA52,
4455+ 0xCA53, 0, 0x442D, 0xCA54, 0, 0xCA55, 0xCA56, 0,
4456+ 0x6031, 0x3267, 0xCA57, 0x356D, 0xCA58, 0x4C46, 0xCA59, 0x4C36,
4457+ 0xCA5A, 0x3234, 0x4F34, 0xCA5B, 0, 0, 0, 0x4B52,
4458+ 0xCA5C, 0x4A2A, 0, 0xCA5D, 0, 0, 0xCA5E, 0xCA5F,
4459+ 0, 0xCA60, 0x4037, 0, 0x6032, 0, 0, 0xCA61,
4460+ 0xCA62, 0x4643, 0, 0xCA63, 0xCA64, 0x3823, 0x6033, 0xCA65,
4461+};
4462+static const unsigned short utf8_to_euc_E78A[] = {
4463+ 0x3A54, 0x6035, 0x6034, 0, 0xCA66, 0, 0, 0x6036,
4464+ 0, 0xCA67, 0, 0, 0, 0xCA68, 0xCA69, 0,
4465+ 0, 0, 0x6037, 0xCA6A, 0, 0, 0x6038, 0,
4466+ 0, 0, 0, 0xCA6B, 0, 0, 0, 0,
4467+ 0x353E, 0, 0x6039, 0, 0, 0, 0, 0x603A,
4468+ 0xCA6C, 0, 0, 0, 0x3824, 0xCA6D, 0xCA6E, 0x4848,
4469+ 0, 0xCA6F, 0x603C, 0, 0xCA70, 0, 0x3E75, 0,
4470+ 0, 0x603B, 0, 0, 0, 0, 0xCA71, 0,
4471+};
4472+static const unsigned short utf8_to_euc_E78B[] = {
4473+ 0, 0xCA72, 0x3638, 0x603D, 0x603F, 0, 0x603E, 0xCA73,
4474+ 0, 0xCA74, 0, 0, 0xCA75, 0, 0x6040, 0,
4475+ 0x3851, 0, 0x6041, 0, 0, 0xCA76, 0xCA77, 0x3669,
4476+ 0xCA78, 0x4140, 0, 0x397D, 0, 0, 0, 0xCA79,
4477+ 0x6043, 0x6044, 0x6042, 0, 0, 0xCA7A, 0, 0,
4478+ 0, 0x3C6D, 0, 0, 0x4648, 0x3639, 0, 0,
4479+ 0, 0, 0, 0xCA7B, 0xCA7C, 0, 0, 0x6046,
4480+ 0x432C, 0x6045, 0xCA7D, 0xCA7E, 0x4F35, 0x4762, 0xCB21, 0,
4481+};
4482+static const unsigned short utf8_to_euc_E78C[] = {
4483+ 0, 0, 0xCB22, 0, 0xCB23, 0xCB24, 0, 0xCB25,
4484+ 0, 0, 0x6049, 0xCB26, 0, 0xCB27, 0, 0,
4485+ 0, 0, 0xCB28, 0xCB29, 0, 0, 0x604B, 0x6048,
4486+ 0xCB2A, 0xCB2B, 0, 0x4C54, 0x604A, 0x604C, 0xCB2C, 0x4E44,
4487+ 0, 0, 0xCB2D, 0, 0xCB2E, 0x6050, 0, 0xCB2F,
4488+ 0xCB30, 0x604F, 0x4376, 0x472D, 0xCB31, 0, 0x3825, 0x604E,
4489+ 0, 0xCB32, 0xCB33, 0, 0x604D, 0xCB34, 0x4D31, 0x4D32,
4490+ 0, 0, 0xCB35, 0xCB36, 0, 0xCB37, 0x6051, 0x316E,
4491+};
4492+static const unsigned short utf8_to_euc_E78D[] = {
4493+ 0, 0, 0, 0xCB38, 0x3976, 0x3B62, 0, 0,
4494+ 0, 0, 0, 0, 0, 0xCB39, 0x6052, 0x6053,
4495+ 0xCB3A, 0, 0xCB3B, 0, 0, 0, 0xCB3C, 0x6055,
4496+ 0xCB3D, 0, 0, 0, 0, 0xCB3E, 0xCB3F, 0xCB40,
4497+ 0xCB41, 0, 0, 0x3D43, 0, 0, 0xCB42, 0xCB43,
4498+ 0x6057, 0xCB44, 0x6056, 0xCB45, 0xCB46, 0, 0xCB47, 0xCB48,
4499+ 0x6058, 0xCB49, 0x334D, 0, 0, 0x605A, 0, 0xCB4A,
4500+ 0x6059, 0xCB4B, 0x605C, 0x605B, 0xCB4C, 0, 0, 0,
4501+};
4502+static const unsigned short utf8_to_euc_E78E[] = {
4503+ 0xCB4D, 0xCB4E, 0, 0xCB4F, 0x383C, 0xCB50, 0xCB51, 0x4E28,
4504+ 0, 0x364C, 0, 0x3226, 0, 0, 0xCB52, 0,
4505+ 0xCB53, 0, 0, 0xCB54, 0, 0xCB55, 0x366A, 0xCB56,
4506+ 0xCB57, 0, 0, 0, 0xCB58, 0, 0xCB59, 0xCB5A,
4507+ 0xCB5B, 0, 0xCB5C, 0, 0, 0xCB5D, 0xCB5E, 0,
4508+ 0, 0x3461, 0xCB5F, 0xCB60, 0, 0xCB61, 0, 0,
4509+ 0, 0, 0x4E68, 0x605E, 0, 0xCB62, 0, 0xCB63,
4510+ 0, 0xCB64, 0, 0x6060, 0xCB65, 0xCB66, 0, 0xCB67,
4511+};
4512+static const unsigned short utf8_to_euc_E78F[] = {
4513+ 0x6061, 0, 0x3251, 0, 0, 0xCB68, 0xCB69, 0,
4514+ 0x605D, 0xCB6A, 0x3B39, 0xCB6B, 0xCB6C, 0x4441, 0x605F, 0xCB6D,
4515+ 0, 0, 0xCB6E, 0xCB6F, 0, 0, 0xCB70, 0,
4516+ 0, 0xCB71, 0, 0, 0, 0xCB72, 0x6064, 0,
4517+ 0x3C6E, 0xCB73, 0, 0xCB74, 0, 0x6062, 0xCB75, 0xCB76,
4518+ 0, 0xCB77, 0x373E, 0, 0, 0x4849, 0x6063, 0,
4519+ 0, 0x607E, 0, 0, 0xCB78, 0xCB79, 0, 0xCB7A,
4520+ 0x6069, 0xCB7B, 0xCB7C, 0xCB7D, 0, 0xCB7E, 0x383D, 0xCC21,
4521+};
4522+static const unsigned short utf8_to_euc_E790[] = {
4523+ 0xCC22, 0xCC23, 0, 0x3565, 0xCC24, 0x6066, 0x4D7D, 0xCC25,
4524+ 0, 0x4E30, 0xCC26, 0, 0, 0, 0, 0,
4525+ 0, 0xCC27, 0, 0, 0, 0, 0, 0,
4526+ 0, 0, 0xCC28, 0xCC29, 0, 0, 0, 0,
4527+ 0, 0, 0x4276, 0, 0xCC2A, 0x6068, 0xCC2B, 0,
4528+ 0xCC2C, 0xCC2D, 0xCC2E, 0xCC2F, 0xCC30, 0xCC31, 0xCC32, 0xCC33,
4529+ 0xCC34, 0xCC35, 0x606A, 0x4E56, 0x3657, 0x487C, 0x474A, 0,
4530+ 0, 0xCC36, 0x606B, 0, 0, 0, 0, 0x606D,
4531+};
4532+static const unsigned short utf8_to_euc_E791[] = {
4533+ 0xCC37, 0x6070, 0, 0xCC38, 0xCC39, 0, 0xCC3A, 0xCC3B,
4534+ 0, 0, 0, 0xCC3C, 0, 0xCC3D, 0, 0,
4535+ 0, 0xCC3E, 0xCC3F, 0, 0, 0x606C, 0, 0xCC40,
4536+ 0, 0x606F, 0x386A, 0x314D, 0x6071, 0xCC41, 0x3F70, 0x606E,
4537+ 0x4E5C, 0, 0xCC42, 0x6074, 0x7424, 0, 0xCC43, 0xCC44,
4538+ 0xCC45, 0x6072, 0x6075, 0xCC46, 0, 0xCC47, 0xCC48, 0x6067,
4539+ 0x6073, 0xCC49, 0xCC4A, 0x3A3C, 0, 0, 0x6076, 0,
4540+ 0, 0, 0, 0, 0, 0, 0x6077, 0,
4541+};
4542+static const unsigned short utf8_to_euc_E792[] = {
4543+ 0xCC4B, 0xCC4C, 0, 0x4D7E, 0, 0xCC4D, 0xCC4E, 0xCC4F,
4544+ 0, 0xCC50, 0, 0x6078, 0, 0, 0, 0xCC51,
4545+ 0xCC52, 0xCC53, 0xCC54, 0, 0, 0, 0, 0,
4546+ 0xCC55, 0xCC56, 0xCC57, 0, 0xCC58, 0, 0x6079, 0xCC59,
4547+ 0xCC5A, 0xCC5B, 0x6065, 0xCC5C, 0, 0, 0xCC5D, 0x607A,
4548+ 0xCC5E, 0xCC5F, 0xCC60, 0xCC61, 0, 0, 0xCC62, 0xCC63,
4549+ 0x3444, 0xCC64, 0xCC65, 0, 0, 0xCC66, 0, 0,
4550+ 0, 0xCC67, 0, 0xCC68, 0, 0x3C25, 0, 0xCC69,
4551+};
4552+static const unsigned short utf8_to_euc_E793[] = {
4553+ 0, 0, 0, 0, 0, 0, 0, 0,
4554+ 0xCC6A, 0xCC6B, 0x607B, 0, 0xCC6C, 0, 0, 0x607C,
4555+ 0xCC6D, 0, 0, 0xCC6E, 0x607D, 0, 0, 0,
4556+ 0xCC6F, 0, 0xCC70, 0xCC71, 0x313B, 0, 0xCC72, 0xCC73,
4557+ 0x6121, 0, 0x493B, 0x6122, 0xCC74, 0, 0x3424, 0x6123,
4558+ 0xCC75, 0x6124, 0xCC76, 0xCC77, 0, 0, 0x6125, 0xCC78,
4559+ 0x6127, 0x6128, 0x6126, 0, 0xCC79, 0, 0x4953, 0x612A,
4560+ 0x6129, 0, 0xCC7A, 0xCC7B, 0xCC7C, 0, 0, 0xCC7D,
4561+};
4562+static const unsigned short utf8_to_euc_E794[] = {
4563+ 0, 0xF450, 0, 0x612C, 0x612B, 0x612D, 0xCC7E, 0,
4564+ 0, 0, 0, 0, 0x612E, 0x6130, 0x612F, 0,
4565+ 0, 0x3979, 0xCD21, 0x6132, 0, 0x6131, 0xCD22, 0xCD23,
4566+ 0x3445, 0, 0x3F53, 0, 0x453C, 0, 0x6133, 0x4038,
4567+ 0xCD24, 0xCD25, 0, 0x3B3A, 0xCD26, 0x3179, 0x6134, 0xCD27,
4568+ 0x4D51, 0xCD28, 0xCD29, 0x4A63, 0x6135, 0, 0, 0xCD2A,
4569+ 0x4544, 0x4D33, 0x3943, 0x3F3D, 0, 0, 0xCD2B, 0x434B,
4570+ 0x5234, 0xCD2C, 0x442E, 0x3268, 0x6136, 0xCD2D, 0xCD2E, 0xCD2F,
4571+};
4572+static const unsigned short utf8_to_euc_E795[] = {
4573+ 0xCD30, 0, 0, 0xCD31, 0x6137, 0, 0x613C, 0xCD32,
4574+ 0xCD33, 0x613A, 0x6139, 0x5A42, 0x3326, 0x6138, 0xCD34, 0x305A,
4575+ 0xCD35, 0x482A, 0xCD36, 0, 0x484A, 0, 0, 0xCD37,
4576+ 0, 0x4E31, 0x613D, 0x613B, 0x435C, 0x4026, 0xCD38, 0xCD39,
4577+ 0x482B, 0xCD3A, 0x492D, 0, 0x613F, 0x4E2C, 0x374D, 0x6140,
4578+ 0, 0x613E, 0x4856, 0x6141, 0, 0x6142, 0, 0xCD3B,
4579+ 0x305B, 0xCD3C, 0, 0x3E76, 0x6147, 0, 0x6144, 0x466D,
4580+ 0x6143, 0xCD3D, 0xCD3E, 0xCD3F, 0xCD40, 0xCD41, 0xCD42, 0x3526,
4581+};
4582+static const unsigned short utf8_to_euc_E796[] = {
4583+ 0, 0xCD43, 0x614A, 0, 0, 0xCD44, 0x6145, 0x6146,
4584+ 0, 0x6149, 0x6148, 0x4925, 0, 0, 0x4142, 0x4141,
4585+ 0xCD45, 0x353F, 0xCD46, 0xCD47, 0x614B, 0xCD48, 0, 0,
4586+ 0, 0xCD49, 0x614C, 0, 0xCD4A, 0x614D, 0, 0,
4587+ 0, 0, 0xCD4B, 0x614F, 0xCD4C, 0x614E, 0, 0,
4588+ 0, 0, 0, 0x3156, 0, 0, 0, 0,
4589+ 0, 0x6157, 0x4868, 0x6151, 0xCD4D, 0x6153, 0, 0,
4590+ 0x6155, 0x3F3E, 0xCD4E, 0, 0x6156, 0x6154, 0x3C40, 0xCD4F,
4591+};
4592+static const unsigned short utf8_to_euc_E797[] = {
4593+ 0xCD50, 0xCD51, 0x6150, 0x6152, 0xCD52, 0x4942, 0xCD53, 0x3E49,
4594+ 0, 0, 0x6159, 0, 0xCD54, 0x6158, 0xCD55, 0xCD56,
4595+ 0, 0, 0x615A, 0, 0x3C26, 0x3A2F, 0, 0xCD57,
4596+ 0x4577, 0x615B, 0, 0x444B, 0xCD58, 0, 0x615D, 0xCD59,
4597+ 0xCD5A, 0xCD5B, 0x4E21, 0x615C, 0xCD5C, 0, 0, 0xCD5D,
4598+ 0, 0x4169, 0, 0, 0xCD5E, 0, 0xCD5F, 0xCD60,
4599+ 0x6162, 0xCD61, 0x6164, 0x6165, 0x4354, 0, 0, 0,
4600+ 0, 0xCD62, 0x6163, 0, 0x6160, 0, 0x615E, 0x615F,
4601+};
4602+static const unsigned short utf8_to_euc_E798[] = {
4603+ 0xCD63, 0x6161, 0xCD64, 0xCD65, 0xCD66, 0, 0, 0xCD67,
4604+ 0xCD68, 0x6168, 0xCD69, 0x6166, 0xCD6A, 0x6167, 0, 0xCD6B,
4605+ 0, 0, 0xCD6C, 0xCD6D, 0, 0xCD6E, 0xCD6F, 0,
4606+ 0, 0xCD70, 0, 0xCD71, 0xCD72, 0xCD73, 0xCD74, 0x6169,
4607+ 0x616B, 0x616C, 0x616D, 0xCD75, 0x616E, 0xCD76, 0xCD77, 0x616A,
4608+ 0, 0xCD78, 0, 0, 0, 0xCD79, 0, 0,
4609+ 0x6170, 0, 0xCD7A, 0xCD7B, 0x616F, 0xCD7C, 0, 0,
4610+ 0xCD7D, 0xCD7E, 0xCE21, 0x6171, 0xCE22, 0, 0, 0,
4611+};
4612+static const unsigned short utf8_to_euc_E799[] = {
4613+ 0xCE24, 0xCE25, 0x4E45, 0xCE26, 0xCE27, 0xCE28, 0x6174, 0x6172,
4614+ 0x6173, 0xCE29, 0xCE23, 0xCE2A, 0x3462, 0, 0, 0,
4615+ 0, 0, 0x4C7E, 0, 0, 0xCE2B, 0x4A4A, 0,
4616+ 0x6176, 0xCE2C, 0, 0, 0x6175, 0, 0, 0xCE2D,
4617+ 0, 0x6177, 0x6178, 0, 0xCE2E, 0xCE2F, 0, 0x617C,
4618+ 0x6179, 0x617A, 0x617B, 0, 0x617D, 0xCE30, 0xCE31, 0xCE32,
4619+ 0x617E, 0xCE33, 0x6221, 0, 0xCE34, 0, 0x6222, 0,
4620+ 0x6223, 0, 0x482F, 0x4550, 0x6224, 0x4772, 0x4934, 0,
4621+};
4622+static const unsigned short utf8_to_euc_E79A[] = {
4623+ 0x6225, 0xCE35, 0xF451, 0x6226, 0x452A, 0xCE36, 0x3327, 0x3944,
4624+ 0x6227, 0, 0, 0x6228, 0xCE37, 0xCE38, 0x6229, 0,
4625+ 0x3B29, 0, 0, 0x622B, 0, 0xCE39, 0x622A, 0,
4626+ 0, 0x622C, 0x622D, 0xCE3A, 0xCE3B, 0xCE3C, 0xF452, 0xCE3D,
4627+ 0xCE3E, 0, 0xCE3F, 0xCE40, 0xCE41, 0xCE42, 0xCE43, 0xCE44,
4628+ 0xCE45, 0, 0xCE46, 0, 0, 0xCE47, 0x4869, 0,
4629+ 0x622E, 0, 0, 0, 0x622F, 0, 0, 0x7369,
4630+ 0x6230, 0x6231, 0x6232, 0, 0, 0xCE48, 0, 0x3B2E,
4631+};
4632+static const unsigned short utf8_to_euc_E79B[] = {
4633+ 0, 0xCE49, 0x6233, 0x4756, 0, 0xCE4A, 0x4B5F, 0,
4634+ 0x314E, 0xCE4B, 0x3157, 0xCE4C, 0xCE4D, 0x6234, 0xCE4E, 0,
4635+ 0, 0, 0x6236, 0, 0xCE4F, 0, 0x6235, 0x4570,
4636+ 0, 0xCE50, 0, 0x4039, 0x5D39, 0, 0x6237, 0x4C41,
4637+ 0xCE51, 0x6238, 0, 0x3446, 0x4857, 0x6239, 0xCE52, 0x623A,
4638+ 0xCE53, 0, 0x623B, 0, 0xCE54, 0, 0x4C5C, 0,
4639+ 0xCE55, 0xCE56, 0x4C55, 0, 0x443E, 0, 0xCE57, 0,
4640+ 0x416A, 0xCE58, 0, 0x623D, 0xCE59, 0, 0x3D62, 0,
4641+};
4642+static const unsigned short utf8_to_euc_E79C[] = {
4643+ 0xCE5A, 0x3E4A, 0, 0, 0x6240, 0, 0xCE5B, 0x623F,
4644+ 0x623E, 0x487D, 0xCE5C, 0x3447, 0x3829, 0, 0xCE5D, 0,
4645+ 0, 0, 0xCE5E, 0, 0xCE5F, 0xCE60, 0, 0xCE61,
4646+ 0, 0xCE62, 0xCE63, 0x6246, 0xCE64, 0, 0x6243, 0x3F3F,
4647+ 0x4C32, 0, 0xCE65, 0, 0x6242, 0x6244, 0x6245, 0,
4648+ 0xCE66, 0x6241, 0, 0, 0, 0xCE67, 0xCE68, 0xCE69,
4649+ 0, 0, 0, 0, 0xCE6A, 0xCE6B, 0xCE6C, 0x6247,
4650+ 0x6248, 0xCE6D, 0x442F, 0, 0x3463, 0xCE6E, 0xCE6F, 0,
4651+};
4652+static const unsigned short utf8_to_euc_E79D[] = {
4653+ 0x4365, 0, 0xCE70, 0, 0, 0xCE71, 0xCE72, 0x6249,
4654+ 0, 0, 0xCE73, 0, 0, 0xCE74, 0xCE75, 0xCE76,
4655+ 0, 0, 0xCE77, 0, 0, 0, 0xCE78, 0xCE79,
4656+ 0, 0, 0x624A, 0x624D, 0xCE7A, 0, 0xCE7B, 0xCE7C,
4657+ 0xCE7D, 0x3F67, 0xCE7E, 0x4644, 0xCF21, 0x624E, 0x4B53, 0xCF22,
4658+ 0x624B, 0, 0xCF23, 0x624C, 0xCF24, 0, 0, 0,
4659+ 0xCF25, 0, 0xCF26, 0xCF27, 0xCF28, 0, 0, 0,
4660+ 0, 0x6251, 0xCF29, 0, 0, 0xCF2A, 0x6250, 0x624F,
4661+};
4662+static const unsigned short utf8_to_euc_E79E[] = {
4663+ 0xCF2B, 0, 0, 0, 0xCF2C, 0, 0, 0,
4664+ 0, 0, 0, 0x6253, 0xCF2D, 0xCF2E, 0x6252, 0,
4665+ 0, 0x6254, 0, 0, 0xCF2F, 0xCF30, 0xCF31, 0,
4666+ 0, 0, 0xCF32, 0, 0, 0, 0x6256, 0xCF33,
4667+ 0x6255, 0, 0xCF34, 0, 0, 0x4A4D, 0, 0xCF35,
4668+ 0, 0, 0xCF36, 0, 0x3D56, 0x4E46, 0xCF37, 0xCF38,
4669+ 0x6257, 0xCF39, 0, 0x4637, 0, 0xCF3A, 0x6258, 0,
4670+ 0, 0x6259, 0, 0x625D, 0x625B, 0x625C, 0xCF3B, 0x625A,
4671+};
4672+static const unsigned short utf8_to_euc_E79F[] = {
4673+ 0, 0, 0, 0xCF3C, 0, 0, 0, 0x625E,
4674+ 0, 0xCF3D, 0, 0, 0, 0x625F, 0, 0,
4675+ 0, 0xCF3E, 0xCF3F, 0, 0, 0xCF40, 0, 0x6260,
4676+ 0, 0xCF41, 0x6261, 0x4C37, 0x6262, 0, 0xCF42, 0xCF43,
4677+ 0xCF44, 0, 0x4C70, 0x6263, 0xCF45, 0x434E, 0xCF46, 0x476A,
4678+ 0, 0x366B, 0xCF47, 0, 0xCF48, 0x433B, 0x6264, 0x363A,
4679+ 0xCF49, 0xCF4A, 0, 0x4050, 0xCF4B, 0, 0, 0,
4680+ 0xCF4C, 0, 0, 0xCF4D, 0x6265, 0, 0, 0,
4681+};
4682+static const unsigned short utf8_to_euc_E7A0[] = {
4683+ 0, 0, 0x3A3D, 0, 0, 0xCF4E, 0xCF4F, 0,
4684+ 0, 0xCF50, 0, 0, 0x6266, 0xCF51, 0xCF52, 0,
4685+ 0, 0xCF53, 0x6267, 0, 0x3826, 0x3A55, 0, 0,
4686+ 0, 0, 0, 0, 0, 0xCF54, 0, 0,
4687+ 0x6269, 0xCF55, 0xCF56, 0xCF57, 0, 0x4556, 0x3A56, 0x354E,
4688+ 0, 0, 0, 0, 0, 0xCF58, 0xCF59, 0,
4689+ 0xCF5A, 0, 0x4B24, 0, 0x474B, 0xCF5B, 0, 0xCF5C,
4690+ 0, 0, 0x4557, 0, 0, 0, 0, 0x395C,
4691+};
4692+static const unsigned short utf8_to_euc_E7A1[] = {
4693+ 0, 0, 0, 0xCF5D, 0xCF5E, 0x626B, 0, 0xCF5F,
4694+ 0xCF60, 0, 0, 0, 0xCF61, 0, 0xCF62, 0,
4695+ 0, 0, 0xCF63, 0, 0, 0, 0, 0,
4696+ 0, 0, 0, 0, 0xCF64, 0x3E4B, 0xCF65, 0,
4697+ 0xCF66, 0xCF67, 0, 0xCF68, 0xCF69, 0, 0, 0,
4698+ 0xCF6A, 0, 0xCF6B, 0x4E32, 0x3945, 0, 0xCF6C, 0x3827,
4699+ 0, 0, 0x4823, 0, 0x626D, 0, 0, 0,
4700+ 0, 0, 0xCF6D, 0, 0x626F, 0, 0xCF6E, 0,
4701+};
4702+static const unsigned short utf8_to_euc_E7A2[] = {
4703+ 0, 0x386B, 0, 0, 0, 0, 0x626E, 0x4476,
4704+ 0, 0, 0xCF6F, 0, 0x6271, 0x3337, 0x626C, 0xCF70,
4705+ 0, 0x486A, 0, 0x3130, 0xCF71, 0x3A6C, 0, 0x4F52,
4706+ 0xCF72, 0, 0x6270, 0, 0, 0xCF74, 0xCF75, 0xCF76,
4707+ 0, 0xCF73, 0, 0x6272, 0xCF77, 0, 0, 0x4A4B,
4708+ 0xCF78, 0x4059, 0x6274, 0, 0xCF79, 0xCF7A, 0, 0x6275,
4709+ 0xCF7B, 0xCF7C, 0xCF7D, 0xCF7E, 0, 0x6273, 0, 0,
4710+ 0, 0, 0x334E, 0xD021, 0x627B, 0xD022, 0x627A, 0xD023,
4711+};
4712+static const unsigned short utf8_to_euc_E7A3[] = {
4713+ 0, 0x3C27, 0, 0, 0, 0x627C, 0x6277, 0xD024,
4714+ 0xD025, 0xD026, 0x627D, 0x6278, 0xD027, 0, 0xD028, 0,
4715+ 0x4858, 0x6276, 0xD029, 0xD02A, 0x6279, 0xD02B, 0xD02C, 0,
4716+ 0, 0, 0x6322, 0xD02E, 0, 0, 0, 0xD02F,
4717+ 0xD030, 0xD031, 0, 0, 0xD02D, 0, 0xD032, 0x6321,
4718+ 0x4B61, 0, 0xD033, 0, 0x627E, 0, 0, 0x306B,
4719+ 0, 0, 0xD034, 0xD035, 0x6324, 0, 0xD037, 0xD038,
4720+ 0, 0, 0xD039, 0xD03A, 0, 0x6323, 0, 0xD03B,
4721+};
4722+static const unsigned short utf8_to_euc_E7A4[] = {
4723+ 0xD036, 0x3E4C, 0, 0, 0, 0, 0xD03C, 0x6325,
4724+ 0, 0, 0, 0, 0xD03D, 0, 0x4143, 0,
4725+ 0xD03E, 0x6327, 0x6326, 0, 0, 0, 0, 0,
4726+ 0, 0x6328, 0xD03F, 0, 0xD040, 0, 0xD041, 0xD042,
4727+ 0xD043, 0, 0, 0, 0, 0xD044, 0x6268, 0xD045,
4728+ 0, 0xD046, 0x626A, 0x632A, 0x6329, 0xD047, 0, 0,
4729+ 0xF454, 0xD048, 0, 0, 0xD049, 0xD04A, 0, 0,
4730+ 0, 0, 0x3C28, 0xD04B, 0x4E69, 0xD04C, 0x3C52, 0xD04D,
4731+};
4732+static const unsigned short utf8_to_euc_E7A5[] = {
4733+ 0x632B, 0x3737, 0, 0, 0xD04E, 0xD04F, 0xD050, 0x3540,
4734+ 0x3527, 0x3B63, 0xD051, 0xD052, 0, 0, 0, 0xD053,
4735+ 0x4D34, 0xD054, 0, 0x6331, 0xD055, 0x6330, 0x4144, 0x632D,
4736+ 0xD056, 0, 0x632F, 0xD057, 0xD058, 0x3D4B, 0x3F40, 0x632E,
4737+ 0x632C, 0, 0x472A, 0, 0, 0x3E4D, 0, 0xD059,
4738+ 0x493C, 0xD05A, 0, 0xD05B, 0, 0x3A57, 0, 0,
4739+ 0, 0, 0xD05C, 0, 0, 0, 0, 0x4578,
4740+ 0, 0xD05D, 0x6332, 0xD05E, 0xD05F, 0, 0xD060, 0x6333,
4741+};
4742+static const unsigned short utf8_to_euc_E7A6[] = {
4743+ 0x6349, 0x3658, 0, 0, 0x4F3D, 0x4135, 0, 0,
4744+ 0, 0, 0x6334, 0xD061, 0xD062, 0x3252, 0x4477, 0x4A21,
4745+ 0, 0xD063, 0, 0xD064, 0xD065, 0xD066, 0xD067, 0,
4746+ 0xD068, 0, 0, 0xD069, 0xD06A, 0x6335, 0, 0,
4747+ 0, 0xD06B, 0, 0, 0, 0, 0x357A, 0x6336,
4748+ 0xD06C, 0xD06D, 0x6338, 0xD06E, 0, 0, 0x6339, 0xD06F,
4749+ 0x4729, 0xD070, 0, 0x633A, 0xD071, 0, 0, 0,
4750+ 0xD072, 0x633B, 0x633C, 0xD073, 0, 0x3659, 0x3253, 0x4645,
4751+};
4752+static const unsigned short utf8_to_euc_E7A7[] = {
4753+ 0x3D28, 0x3B64, 0xD074, 0, 0xD075, 0, 0, 0xD076,
4754+ 0xD077, 0x633D, 0xD078, 0x3D29, 0, 0, 0, 0xD079,
4755+ 0, 0x324A, 0x4943, 0, 0xD07A, 0x633E, 0xD07B, 0,
4756+ 0x486B, 0, 0xD07C, 0, 0, 0xD07D, 0xD07E, 0x4145,
4757+ 0xD121, 0x6341, 0xD122, 0x6342, 0x4769, 0xD123, 0x3F41, 0x633F,
4758+ 0, 0x4361, 0xD124, 0xD125, 0x6340, 0xD126, 0, 0,
4759+ 0x3E4E, 0xD127, 0, 0, 0, 0, 0, 0,
4760+ 0xD128, 0, 0, 0x305C, 0xD129, 0, 0, 0,
4761+};
4762+static const unsigned short utf8_to_euc_E7A8[] = {
4763+ 0x3529, 0, 0xD12A, 0xD12B, 0, 0, 0, 0xD12C,
4764+ 0x6343, 0xD12D, 0xD12E, 0x4478, 0xD12F, 0x6344, 0x4047, 0,
4765+ 0, 0xD130, 0, 0, 0x4C2D, 0xD131, 0, 0x4923,
4766+ 0x6345, 0x6346, 0x4355, 0xD132, 0x4E47, 0, 0xD133, 0x6348,
4767+ 0x6347, 0xD134, 0, 0, 0, 0, 0, 0xD135,
4768+ 0, 0, 0, 0xD136, 0, 0xD137, 0x3C6F, 0xD138,
4769+ 0xD139, 0x634A, 0x3070, 0, 0xD13A, 0xD13B, 0, 0x634D,
4770+ 0xD13C, 0xD13D, 0xD13E, 0x634B, 0x3254, 0x374E, 0x634C, 0x3946,
4771+};
4772+static const unsigned short utf8_to_euc_E7A9[] = {
4773+ 0x3972, 0, 0x4A66, 0x634E, 0xD13F, 0xD140, 0x4B54, 0xD141,
4774+ 0xD142, 0x6350, 0, 0, 0xD143, 0x4051, 0x314F, 0x323A,
4775+ 0x302C, 0, 0, 0, 0, 0xD144, 0xD145, 0x634F,
4776+ 0, 0xD146, 0, 0, 0xD147, 0xD148, 0, 0xD149,
4777+ 0xD14A, 0x6351, 0x6352, 0x3E77, 0, 0xD14B, 0, 0xD14C,
4778+ 0, 0x6353, 0xD14D, 0x334F, 0, 0xD14E, 0, 0,
4779+ 0x6355, 0, 0, 0, 0x376A, 0xD14F, 0x3566, 0,
4780+ 0xD150, 0x6356, 0x3675, 0, 0, 0x6357, 0xD151, 0x407C,
4781+};
4782+static const unsigned short utf8_to_euc_E7AA[] = {
4783+ 0xD152, 0x464D, 0xD153, 0x4060, 0x3A75, 0xD154, 0xD155, 0,
4784+ 0x6358, 0, 0xD156, 0xD157, 0, 0, 0, 0,
4785+ 0xD158, 0xD159, 0x4362, 0x416B, 0xD15A, 0x635A, 0x635C, 0x6359,
4786+ 0x635B, 0, 0, 0, 0, 0, 0xD15B, 0x3722,
4787+ 0xD15C, 0, 0, 0xD15D, 0, 0, 0, 0,
4788+ 0, 0x635D, 0x3726, 0, 0xD15E, 0, 0x3567, 0x4D52,
4789+ 0x635F, 0, 0, 0xD15F, 0, 0xD160, 0x6360, 0,
4790+ 0, 0xD161, 0x312E, 0xD162, 0xD163, 0, 0, 0x6363,
4791+};
4792+static const unsigned short utf8_to_euc_E7AB[] = {
4793+ 0, 0, 0, 0x3376, 0x6362, 0x6361, 0xD164, 0x6365,
4794+ 0x635E, 0xD165, 0x6366, 0x4E29, 0xD166, 0x6367, 0xD167, 0x6368,
4795+ 0, 0xD168, 0x5474, 0x636A, 0, 0x6369, 0, 0,
4796+ 0, 0x636B, 0x636C, 0xD169, 0x4E35, 0x636D, 0, 0x706F,
4797+ 0x3E4F, 0x636E, 0x636F, 0x3D57, 0, 0x4638, 0x6370, 0xF459,
4798+ 0xD16A, 0xD16B, 0x4328, 0xD16C, 0xD16D, 0x6371, 0, 0x433C,
4799+ 0x6372, 0xD16E, 0, 0, 0xD16F, 0, 0x3625, 0,
4800+ 0x513F, 0x435D, 0x3C33, 0xD170, 0, 0xD171, 0xD172, 0x3448,
4801+};
4802+static const unsigned short utf8_to_euc_E7AC[] = {
4803+ 0, 0, 0x6373, 0, 0x6422, 0, 0x6376, 0xD173,
4804+ 0x3568, 0, 0x6375, 0x6424, 0, 0, 0, 0x6374,
4805+ 0, 0x3E50, 0, 0, 0xD174, 0, 0, 0,
4806+ 0x6378, 0x6379, 0, 0x452B, 0, 0, 0x637A, 0xD175,
4807+ 0x335E, 0, 0, 0xD176, 0, 0x3F5A, 0x4964, 0xD177,
4808+ 0x637C, 0xD178, 0xD179, 0xD17A, 0x4268, 0xD17B, 0xD17C, 0xD17D,
4809+ 0xD17E, 0xD221, 0, 0x6377, 0xD222, 0x637B, 0x637D, 0,
4810+ 0, 0x3A7B, 0, 0, 0, 0xD223, 0, 0xD224,
4811+};
4812+static const unsigned short utf8_to_euc_E7AD[] = {
4813+ 0xD225, 0xD226, 0, 0, 0, 0x6426, 0x492E, 0xD227,
4814+ 0x4826, 0x4579, 0, 0x365A, 0x6425, 0x6423, 0xD228, 0x4835,
4815+ 0x637E, 0x435E, 0x457B, 0, 0x457A, 0xD229, 0x3A76, 0,
4816+ 0, 0, 0, 0, 0, 0x6438, 0, 0,
4817+ 0xD22A, 0, 0, 0, 0xD22B, 0x6428, 0xD22C, 0x642A,
4818+ 0, 0xD22D, 0xD22E, 0, 0x642D, 0xD22F, 0x642E, 0xD230,
4819+ 0x642B, 0x642C, 0xD231, 0xD232, 0x6429, 0x6427, 0, 0xD233,
4820+ 0, 0, 0x6421, 0, 0, 0, 0, 0,
4821+};
4822+static const unsigned short utf8_to_euc_E7AE[] = {
4823+ 0, 0, 0, 0, 0xD234, 0, 0x4A4F, 0x3255,
4824+ 0, 0xD235, 0, 0x6435, 0, 0x6432, 0xD236, 0x6437,
4825+ 0xD237, 0xD238, 0x6436, 0, 0x4773, 0x4C27, 0xD239, 0x3B3B,
4826+ 0x6430, 0x6439, 0x6434, 0xD23A, 0x6433, 0x642F, 0xD23B, 0x6431,
4827+ 0xD23C, 0x3449, 0, 0, 0, 0xD23D, 0, 0,
4828+ 0, 0, 0x433D, 0, 0xD23E, 0x407D, 0, 0xD23F,
4829+ 0xD240, 0x4822, 0xD241, 0, 0x643E, 0xD242, 0xD243, 0,
4830+ 0x4824, 0, 0xD244, 0xD245, 0xD246, 0xD247, 0, 0,
4831+};
4832+static const unsigned short utf8_to_euc_E7AF[] = {
4833+ 0x4061, 0x643B, 0xD248, 0, 0x484F, 0xD249, 0x643F, 0x4A53,
4834+ 0xD24A, 0x435B, 0xD24B, 0x643A, 0x643C, 0, 0, 0x643D,
4835+ 0, 0, 0, 0, 0xD24C, 0, 0xD24D, 0xD24E,
4836+ 0, 0xD24F, 0xD250, 0xD251, 0, 0x6440, 0, 0,
4837+ 0x3C44, 0, 0, 0, 0x4646, 0x6445, 0x6444, 0,
4838+ 0xD252, 0x6441, 0xD253, 0, 0, 0x4F36, 0, 0,
4839+ 0, 0, 0xD254, 0x644A, 0xD255, 0xD256, 0x644E, 0x644B,
4840+ 0xD257, 0xD258, 0xD259, 0, 0xD25A, 0, 0xD25B, 0,
4841+};
4842+static const unsigned short utf8_to_euc_E7B0[] = {
4843+ 0x6447, 0xD25C, 0xD25D, 0xD25E, 0xD25F, 0, 0xD260, 0x6448,
4844+ 0, 0xD261, 0, 0xD262, 0xD263, 0x644D, 0xD264, 0xD265,
4845+ 0, 0x6442, 0x5255, 0x6449, 0x6443, 0, 0, 0x644C,
4846+ 0, 0xD266, 0, 0xD267, 0, 0, 0, 0x6452,
4847+ 0xD268, 0x344A, 0, 0x644F, 0, 0xD269, 0xD26A, 0x6450,
4848+ 0xD26B, 0, 0x6451, 0x6454, 0xD26C, 0, 0, 0,
4849+ 0, 0xD26D, 0, 0xD26E, 0xD26F, 0, 0xD270, 0x6453,
4850+ 0x4876, 0xD271, 0xD272, 0, 0, 0x6455, 0x4E7C, 0x4A6D,
4851+};
4852+static const unsigned short utf8_to_euc_E7B1[] = {
4853+ 0x645A, 0, 0, 0x6457, 0, 0, 0xD273, 0,
4854+ 0, 0, 0xD274, 0, 0x6456, 0x4052, 0, 0x6459,
4855+ 0x645B, 0xD276, 0xD277, 0xD278, 0x6458, 0xD275, 0x645F, 0,
4856+ 0x645C, 0xD279, 0xD27A, 0xD27B, 0xD27C, 0xD27D, 0xD27E, 0x645D,
4857+ 0x6446, 0xD321, 0, 0xD322, 0x645E, 0x6460, 0, 0xD323,
4858+ 0, 0xD324, 0, 0, 0x6461, 0xD325, 0xD326, 0,
4859+ 0xD327, 0, 0xD328, 0x4A46, 0, 0x6462, 0, 0,
4860+ 0, 0xD329, 0, 0, 0xD32A, 0xD32B, 0x4C62, 0,
4861+};
4862+static const unsigned short utf8_to_euc_E7B2[] = {
4863+ 0, 0x364E, 0x3729, 0x6463, 0, 0, 0xD32C, 0xD32D,
4864+ 0, 0x4A34, 0, 0x3F68, 0, 0x4C30, 0, 0xD32E,
4865+ 0x6464, 0, 0x4E33, 0, 0xD32F, 0x4774, 0, 0x4146,
4866+ 0x4734, 0, 0, 0x3D4D, 0, 0, 0xD330, 0x3040,
4867+ 0xD331, 0x6469, 0x6467, 0, 0x6465, 0x3421, 0xD332, 0x3E51,
4868+ 0x646A, 0, 0, 0x6468, 0, 0x6466, 0x646E, 0,
4869+ 0xD333, 0x646D, 0x646C, 0x646B, 0, 0, 0xD334, 0xD335,
4870+ 0, 0x646F, 0xD336, 0xD337, 0xD338, 0x6470, 0x403A, 0xD339,
4871+};
4872+static const unsigned short utf8_to_euc_E7B3[] = {
4873+ 0x6471, 0, 0x6473, 0, 0xD33A, 0x6472, 0, 0xD33B,
4874+ 0xD33C, 0xD33D, 0x3852, 0, 0, 0xD33E, 0x4138, 0xD33F,
4875+ 0, 0, 0x6475, 0xD340, 0xD341, 0xD342, 0x457C, 0xD343,
4876+ 0x6474, 0xD344, 0xD345, 0, 0x6476, 0xD346, 0x4A35, 0x416C,
4877+ 0x3947, 0, 0x6477, 0, 0, 0, 0xD347, 0x4E48,
4878+ 0, 0xD348, 0, 0xD349, 0, 0, 0, 0x6479,
4879+ 0, 0, 0x647A, 0, 0x647B, 0xD34A, 0x647C, 0,
4880+ 0x3B65, 0, 0x647D, 0x374F, 0, 0, 0x356A, 0,
4881+};
4882+static const unsigned short utf8_to_euc_E7B4[] = {
4883+ 0x352A, 0, 0x6521, 0xD34B, 0x4C73, 0x3948, 0x647E, 0xD34C,
4884+ 0xD34D, 0xD34E, 0x6524, 0x4C66, 0, 0x473C, 0, 0xD34F,
4885+ 0x4933, 0xD350, 0xD351, 0xD352, 0x3D63, 0x6523, 0xD353, 0x3C53,
4886+ 0x3949, 0x3B66, 0x3569, 0x4A36, 0x6522, 0xD354, 0xD355, 0,
4887+ 0x4147, 0x4B42, 0x3A77, 0xD356, 0, 0, 0xD357, 0,
4888+ 0, 0, 0xD358, 0x3B67, 0x445D, 0xD359, 0x6527, 0x4E5F,
4889+ 0x3A59, 0xD35A, 0x6528, 0x3F42, 0, 0x652A, 0, 0,
4890+ 0, 0x3E52, 0x3A30, 0, 0xD35B, 0xD35C, 0xD35D, 0x6529,
4891+};
4892+static const unsigned short utf8_to_euc_E7B5[] = {
4893+ 0xD35E, 0xD35F, 0x3D2A, 0x383E, 0x4148, 0x6525, 0x652B, 0xD360,
4894+ 0xD361, 0, 0, 0x6526, 0x3750, 0xD362, 0x652E, 0x6532,
4895+ 0x376B, 0xD363, 0, 0xD364, 0, 0, 0x652D, 0xD365,
4896+ 0, 0xD366, 0xD367, 0x6536, 0xD368, 0xD369, 0x394A, 0,
4897+ 0, 0x4D6D, 0x303C, 0x6533, 0, 0xD36A, 0x356B, 0xD36B,
4898+ 0x6530, 0, 0xD36C, 0, 0, 0, 0x6531, 0,
4899+ 0xD36D, 0x457D, 0x652F, 0x652C, 0, 0x3328, 0x4064, 0,
4900+ 0xD36E, 0x3828, 0xD36F, 0xD370, 0, 0x6538, 0, 0xD371,
4901+};
4902+static const unsigned short utf8_to_euc_E7B6[] = {
4903+ 0, 0xD372, 0xD373, 0xD374, 0, 0xD375, 0xD376, 0,
4904+ 0xD377, 0x6535, 0, 0xD378, 0xD379, 0xD37A, 0, 0x6537,
4905+ 0, 0xD37B, 0, 0x6534, 0, 0, 0xD37C, 0xD37D,
4906+ 0, 0x3751, 0x4233, 0x6539, 0x416E, 0xD37E, 0xD421, 0x6546,
4907+ 0xF45C, 0, 0x6542, 0x653C, 0, 0, 0xD422, 0xD423,
4908+ 0, 0, 0xD424, 0x6540, 0x3C7A, 0x305D, 0x653B, 0x6543,
4909+ 0x6547, 0x394B, 0x4C56, 0xD425, 0x4456, 0x653D, 0xD426, 0xD427,
4910+ 0x6545, 0xD428, 0x653A, 0x433E, 0, 0x653F, 0x303D, 0x4C4A,
4911+};
4912+static const unsigned short utf8_to_euc_E7B7[] = {
4913+ 0, 0, 0xD429, 0xD42A, 0xD42B, 0xD42C, 0xD42D, 0x653E,
4914+ 0, 0, 0x365B, 0x486C, 0xD42E, 0xD42F, 0xD430, 0x416D,
4915+ 0, 0x4E50, 0x3D6F, 0, 0, 0x656E, 0xF45D, 0xD431,
4916+ 0x6548, 0xD432, 0x407E, 0, 0x6544, 0x6549, 0x654B, 0,
4917+ 0x4479, 0x654E, 0xD434, 0, 0x654A, 0xD435, 0xD436, 0,
4918+ 0x4A54, 0x344B, 0xD437, 0xD438, 0x4C4B, 0xD439, 0, 0x305E,
4919+ 0, 0xD43A, 0x654D, 0, 0x4E7D, 0xD43B, 0xD43C, 0,
4920+ 0, 0xD43D, 0xD43E, 0x654C, 0, 0, 0, 0,
4921+};
4922+static const unsigned short utf8_to_euc_E7B8[] = {
4923+ 0xD433, 0x316F, 0, 0, 0x466C, 0x654F, 0, 0,
4924+ 0xD43F, 0x6556, 0x6550, 0x6557, 0, 0, 0, 0,
4925+ 0xD440, 0xD441, 0x6553, 0, 0, 0xD442, 0, 0xD443,
4926+ 0, 0, 0, 0x477B, 0xD444, 0xD445, 0x3C4A, 0x6555,
4927+ 0xD446, 0x6552, 0x6558, 0x6551, 0, 0, 0x3D44, 0xD447,
4928+ 0xD448, 0, 0, 0x4B25, 0xD449, 0xD44A, 0x3D4C, 0xD44B,
4929+ 0, 0x6554, 0x6560, 0xD44C, 0, 0x655C, 0xD44D, 0x655F,
4930+ 0, 0x655D, 0x6561, 0x655B, 0, 0x6541, 0x4053, 0xD44E,
4931+};
4932+static const unsigned short utf8_to_euc_E7B9[] = {
4933+ 0, 0x484B, 0, 0x655E, 0xD44F, 0xD450, 0x6559, 0xD451,
4934+ 0, 0, 0x4121, 0x3752, 0, 0x3D2B, 0xD452, 0,
4935+ 0xD453, 0, 0xD454, 0, 0x3F25, 0x4136, 0x6564, 0,
4936+ 0xD455, 0x6566, 0x6567, 0, 0, 0x6563, 0x6565, 0xD456,
4937+ 0, 0xD457, 0xD458, 0, 0, 0xD459, 0x655A, 0x6562,
4938+ 0, 0x656A, 0x6569, 0xD45A, 0, 0x4B7A, 0xD45B, 0xD45C,
4939+ 0x372B, 0, 0, 0xD45D, 0, 0, 0, 0,
4940+ 0xD45E, 0x6568, 0, 0x656C, 0x656B, 0x656F, 0xD45F, 0x6571,
4941+};
4942+static const unsigned short utf8_to_euc_E7BA[] = {
4943+ 0, 0xD460, 0x3B3C, 0x656D, 0, 0, 0xD461, 0xD462,
4944+ 0x6572, 0x6573, 0xD463, 0, 0x6574, 0xD464, 0x657A, 0x453B,
4945+ 0x6576, 0xD465, 0x6575, 0x6577, 0x6578, 0xD466, 0x6579, 0,
4946+ 0xD467, 0, 0xD468, 0x657B, 0x657C, 0xD469, 0xD46A, 0,
4947+ 0, 0, 0, 0, 0, 0, 0, 0,
4948+ 0, 0, 0, 0, 0, 0, 0, 0,
4949+ 0, 0, 0, 0, 0, 0, 0, 0,
4950+ 0, 0, 0, 0, 0, 0, 0, 0,
4951+};
4952+static const unsigned short utf8_to_euc_E7BC[] = {
4953+ 0, 0, 0, 0, 0, 0, 0, 0,
4954+ 0, 0, 0, 0, 0, 0, 0, 0,
4955+ 0, 0, 0, 0, 0, 0, 0, 0,
4956+ 0, 0, 0, 0, 0, 0, 0, 0,
4957+ 0, 0, 0, 0, 0, 0, 0, 0,
4958+ 0, 0, 0, 0, 0, 0, 0, 0,
4959+ 0, 0, 0, 0, 0, 0, 0x344C, 0,
4960+ 0x657D, 0, 0x657E, 0xD46C, 0xD46B, 0xD46D, 0xD46E, 0xD46F,
4961+};
4962+static const unsigned short utf8_to_euc_E7BD[] = {
4963+ 0, 0, 0, 0xD470, 0xD471, 0x6621, 0, 0xD472,
4964+ 0, 0, 0, 0, 0x6622, 0x6623, 0x6624, 0xD473,
4965+ 0x6625, 0x6626, 0xD474, 0xD475, 0x6628, 0x6627, 0, 0,
4966+ 0x6629, 0, 0, 0xD476, 0xD477, 0xD478, 0, 0x662A,
4967+ 0x662B, 0xD479, 0, 0xD47A, 0xD47B, 0xD47C, 0xD47D, 0x662E,
4968+ 0x662C, 0x662D, 0x3A61, 0x3753, 0, 0xD47E, 0x4356, 0,
4969+ 0x4833, 0xD521, 0x3D70, 0, 0, 0x474D, 0, 0x486D,
4970+ 0x662F, 0x586D, 0, 0, 0, 0xD522, 0xD523, 0xD524,
4971+};
4972+static const unsigned short utf8_to_euc_E7BE[] = {
4973+ 0xD525, 0, 0x6630, 0x6632, 0, 0x4D65, 0x6631, 0x6634,
4974+ 0x6633, 0, 0x4D53, 0xD526, 0x6635, 0xD527, 0x487E, 0xD528,
4975+ 0xD529, 0xD52A, 0, 0, 0x6636, 0, 0xD52B, 0xD52C,
4976+ 0, 0, 0x6639, 0, 0xD52D, 0x6638, 0x6637, 0,
4977+ 0, 0xD52E, 0xD52F, 0x663A, 0x3732, 0, 0xD530, 0,
4978+ 0x4122, 0x3541, 0xD531, 0, 0, 0xD532, 0x663E, 0x663B,
4979+ 0, 0, 0x663C, 0, 0xD533, 0, 0x663F, 0,
4980+ 0x6640, 0x663D, 0, 0, 0xD534, 0x3129, 0, 0xD535,
4981+};
4982+static const unsigned short utf8_to_euc_E7BF[] = {
4983+ 0xD536, 0x3227, 0, 0xD537, 0, 0x6642, 0x6643, 0,
4984+ 0xD538, 0, 0x6644, 0, 0x4D62, 0, 0xD539, 0xD53A,
4985+ 0, 0, 0x3D2C, 0, 0x6646, 0x6645, 0, 0,
4986+ 0, 0, 0, 0xD53B, 0, 0, 0, 0xD53C,
4987+ 0x3F69, 0x6647, 0, 0xD53D, 0, 0xD53E, 0x6648, 0,
4988+ 0xD53F, 0x6649, 0, 0x3465, 0xD540, 0, 0xD541, 0xD542,
4989+ 0x344D, 0, 0xD543, 0x664A, 0, 0, 0, 0,
4990+ 0, 0x664B, 0xD544, 0x4B5D, 0x4D63, 0xD545, 0xD546, 0xD547,
4991+};
4992+static const unsigned short utf8_to_euc_E880[] = {
4993+ 0x4D54, 0x4F37, 0, 0x394D, 0x664E, 0x3C54, 0x664D, 0xD548,
4994+ 0xD549, 0, 0xD54A, 0x664F, 0x3C29, 0xD54B, 0xD54C, 0xD54D,
4995+ 0x4251, 0xD54E, 0x6650, 0xD54F, 0xD550, 0x394C, 0xD551, 0x4C57,
4996+ 0x6651, 0x6652, 0, 0, 0x6653, 0xD552, 0xD553, 0xD554,
4997+ 0xD555, 0x6654, 0, 0, 0xD556, 0, 0xD557, 0,
4998+ 0x6655, 0, 0, 0, 0xD558, 0, 0xD559, 0,
4999+ 0xD55A, 0, 0, 0x3C2A, 0xD55B, 0xD55C, 0x4C6D, 0xD55D,
5000+ 0, 0xD55E, 0xD55F, 0x6657, 0xD560, 0x433F, 0xD561, 0x6656,
5001+};
5002+static const unsigned short utf8_to_euc_E881[] = {
5003+ 0xD562, 0, 0, 0, 0xD563, 0, 0x6659, 0,
5004+ 0, 0, 0x6658, 0, 0, 0, 0, 0,
5005+ 0, 0, 0x665A, 0, 0, 0, 0x403B, 0,
5006+ 0x665B, 0, 0x665C, 0, 0, 0, 0x4A39, 0x665D,
5007+ 0xD564, 0x416F, 0x665E, 0, 0xD565, 0, 0xD566, 0,
5008+ 0x665F, 0, 0, 0, 0, 0xD567, 0, 0x4E7E,
5009+ 0x6662, 0xD568, 0x6661, 0x6660, 0x4430, 0xD569, 0x6663, 0x3F26,
5010+ 0, 0x6664, 0, 0, 0, 0x6665, 0x4F38, 0x6666,
5011+};
5012+static const unsigned short utf8_to_euc_E882[] = {
5013+ 0, 0xD56A, 0, 0, 0x6667, 0x6669, 0x6668, 0x4825,
5014+ 0xD56B, 0x4679, 0, 0x4F3E, 0x4829, 0, 0xD56C, 0,
5015+ 0, 0, 0, 0x666B, 0, 0, 0x3E53, 0,
5016+ 0x492A, 0, 0x666C, 0x666A, 0xD56D, 0x344E, 0xD56E, 0,
5017+ 0, 0x3854, 0x3B68, 0, 0, 0x486E, 0xD56F, 0xD570,
5018+ 0, 0x382A, 0x4B43, 0xD571, 0x666F, 0x666D, 0, 0x394E,
5019+ 0, 0x394F, 0x3069, 0, 0x3A68, 0, 0, 0,
5020+ 0xD572, 0xD573, 0x4759, 0, 0, 0, 0, 0,
5021+};
5022+static const unsigned short utf8_to_euc_E883[] = {
5023+ 0, 0, 0, 0x305F, 0x6674, 0, 0x4340, 0,
5024+ 0xD574, 0, 0, 0, 0x4758, 0xD575, 0x425B, 0xD576,
5025+ 0, 0, 0xD577, 0, 0xD578, 0xD579, 0x6676, 0xD57A,
5026+ 0xD57B, 0x6672, 0x6675, 0x6670, 0, 0x6673, 0x4B26, 0,
5027+ 0xD57C, 0x3855, 0, 0, 0x307D, 0x6671, 0, 0,
5028+ 0, 0, 0, 0, 0, 0xD57D, 0xD57E, 0x6678,
5029+ 0xD621, 0x6679, 0xD622, 0xD623, 0x4639, 0, 0xD624, 0,
5030+ 0x363B, 0xD625, 0xD626, 0, 0x6726, 0x473D, 0xD627, 0,
5031+};
5032+static const unsigned short utf8_to_euc_E884[] = {
5033+ 0, 0, 0x3B69, 0xD628, 0, 0x363C, 0x4048, 0x4F46,
5034+ 0x4C2E, 0x6677, 0x4054, 0xD629, 0, 0, 0, 0,
5035+ 0, 0, 0, 0, 0, 0, 0xD62A, 0xD62B,
5036+ 0xD62C, 0, 0x3553, 0x667A, 0xD62D, 0, 0xD62E, 0,
5037+ 0xD62F, 0, 0, 0x667C, 0xD630, 0, 0, 0xD631,
5038+ 0, 0x667B, 0, 0, 0xD632, 0, 0, 0x667D,
5039+ 0xD633, 0x4326, 0, 0x473E, 0, 0xD634, 0, 0,
5040+ 0, 0x4431, 0xD635, 0, 0xD636, 0, 0x6723, 0,
5041+};
5042+static const unsigned short utf8_to_euc_E885[] = {
5043+ 0, 0, 0, 0, 0, 0xD637, 0x6722, 0xD638,
5044+ 0, 0, 0xD639, 0x667E, 0xD63A, 0, 0x3F55, 0,
5045+ 0x4965, 0x6725, 0xD63B, 0x6724, 0x3950, 0x4F53, 0, 0xD63C,
5046+ 0, 0, 0, 0, 0, 0, 0, 0x6735,
5047+ 0xD63D, 0xD63E, 0, 0, 0, 0x6729, 0x672A, 0xD63F,
5048+ 0xD640, 0xD641, 0, 0x3C70, 0, 0xD642, 0x6728, 0xD643,
5049+ 0x3978, 0x6727, 0, 0, 0x672B, 0, 0, 0xD644,
5050+ 0x4432, 0x4A22, 0x4123, 0, 0, 0, 0, 0x425C,
5051+};
5052+static const unsigned short utf8_to_euc_E886[] = {
5053+ 0x672F, 0xD645, 0x6730, 0x672C, 0xD647, 0xD648, 0xD649, 0,
5054+ 0x672D, 0, 0x672E, 0xD64A, 0, 0, 0xD64B, 0x3951,
5055+ 0xD646, 0, 0, 0x6736, 0, 0x6732, 0xD64C, 0,
5056+ 0xD64D, 0, 0x4966, 0xD64E, 0x4B6C, 0x4928, 0xD64F, 0,
5057+ 0x6731, 0, 0xD650, 0x6734, 0x6733, 0, 0, 0,
5058+ 0x4B44, 0x6737, 0, 0, 0, 0, 0xD651, 0,
5059+ 0x6738, 0, 0xD652, 0x4137, 0xD653, 0x6739, 0, 0,
5060+ 0x673B, 0, 0x673F, 0xD654, 0, 0x673C, 0x673A, 0x473F,
5061+};
5062+static const unsigned short utf8_to_euc_E887[] = {
5063+ 0x673D, 0, 0x673E, 0xD656, 0, 0xD657, 0x3232, 0,
5064+ 0x6745, 0x6740, 0xD658, 0xD655, 0, 0x6741, 0xD659, 0xD65A,
5065+ 0, 0x6742, 0, 0x4221, 0, 0xD65B, 0, 0xD65C,
5066+ 0x6744, 0x6743, 0x6746, 0xD65D, 0, 0xD65E, 0xD65F, 0x6747,
5067+ 0x6748, 0xD660, 0, 0x3F43, 0xD661, 0x3269, 0, 0x6749,
5068+ 0x4E57, 0, 0x3C2B, 0xD662, 0xD663, 0x3D2D, 0, 0,
5069+ 0xD664, 0xD665, 0xD666, 0x3B6A, 0x4357, 0xD667, 0xD668, 0,
5070+ 0xD669, 0xD66A, 0x674A, 0x674B, 0x3131, 0xD66B, 0x674C, 0xD66C,
5071+};
5072+static const unsigned short utf8_to_euc_E888[] = {
5073+ 0xD66D, 0x674D, 0x674E, 0xD66E, 0, 0x674F, 0, 0x6750,
5074+ 0x363D, 0x5A2A, 0x6751, 0, 0x4065, 0x6752, 0x3C4B, 0xD66F,
5075+ 0x6753, 0, 0x5030, 0xD670, 0xD671, 0, 0x6754, 0x4A5E,
5076+ 0x345C, 0xD672, 0xD673, 0x4124, 0x3D58, 0xD674, 0x4971, 0x3D2E,
5077+ 0, 0xD675, 0xD676, 0, 0, 0, 0, 0,
5078+ 0xD677, 0x6755, 0x3952, 0x6756, 0x484C, 0, 0x6764, 0,
5079+ 0, 0, 0xD678, 0x6758, 0xD679, 0x4249, 0x4775, 0x383F,
5080+ 0x6757, 0x4125, 0xD67A, 0, 0, 0, 0, 0,
5081+};
5082+static const unsigned short utf8_to_euc_E889[] = {
5083+ 0x6759, 0, 0, 0xD67B, 0xD67C, 0xD67D, 0xD67E, 0x447A,
5084+ 0, 0, 0, 0xD721, 0, 0, 0xD722, 0xD723,
5085+ 0, 0xD724, 0, 0, 0, 0, 0xD725, 0,
5086+ 0x675B, 0x675A, 0x675D, 0, 0xD726, 0x675C, 0, 0x675E,
5087+ 0xD727, 0, 0x6760, 0xD728, 0x675F, 0, 0x344F, 0xD729,
5088+ 0x6761, 0, 0x6762, 0x6763, 0, 0xD72A, 0x3A31, 0x4E49,
5089+ 0, 0x6765, 0x3F27, 0, 0xD72B, 0, 0x3170, 0x6766,
5090+ 0x6767, 0, 0, 0xD72C, 0, 0xD72D, 0x6768, 0xD72E,
5091+};
5092+static const unsigned short utf8_to_euc_E88A[] = {
5093+ 0xD72F, 0xD730, 0, 0xD731, 0xD732, 0, 0, 0xD733,
5094+ 0, 0xD734, 0xD735, 0x3072, 0, 0x6769, 0xD736, 0,
5095+ 0, 0xD737, 0x676A, 0, 0xD738, 0, 0xD739, 0,
5096+ 0xD73A, 0x4967, 0xD73B, 0xD73C, 0, 0x3C47, 0, 0x676C,
5097+ 0xD73D, 0xD73E, 0, 0xD73F, 0xD740, 0x3329, 0x3032, 0xD741,
5098+ 0xD742, 0xD743, 0xD744, 0x676B, 0x676E, 0x474E, 0xD745, 0x3F44,
5099+ 0xD746, 0x3256, 0xD747, 0x4B27, 0xD748, 0, 0, 0xD749,
5100+ 0x375D, 0x365C, 0xD74A, 0x676D, 0xD74B, 0x326A, 0xD74C, 0xD74D,
5101+};
5102+static const unsigned short utf8_to_euc_E88B[] = {
5103+ 0, 0, 0, 0, 0, 0x3423, 0xD74E, 0,
5104+ 0, 0, 0, 0, 0, 0, 0, 0,
5105+ 0xD74F, 0x3171, 0x6772, 0x4E6A, 0x425D, 0xD750, 0, 0x4944,
5106+ 0, 0x677E, 0xD751, 0x3257, 0x677C, 0, 0x677A, 0x6771,
5107+ 0xD752, 0x676F, 0xD753, 0x6770, 0xD754, 0x3C63, 0x366C, 0x4377,
5108+ 0xD755, 0, 0xD756, 0x4651, 0, 0xD757, 0, 0xD758,
5109+ 0, 0x3151, 0, 0x6774, 0x6773, 0, 0xD759, 0xD75A,
5110+ 0, 0x6779, 0x6775, 0x6778, 0, 0xD75B, 0xD75C, 0,
5111+};
5112+static const unsigned short utf8_to_euc_E88C[] = {
5113+ 0xD75D, 0xD75E, 0x4C50, 0x6777, 0x3258, 0x337D, 0x677B, 0xD75F,
5114+ 0xD760, 0x677D, 0xD761, 0xD762, 0, 0, 0x3754, 0,
5115+ 0, 0, 0, 0, 0, 0, 0x6823, 0x682C,
5116+ 0x682D, 0, 0, 0xD764, 0x302B, 0xD765, 0xD766, 0xD767,
5117+ 0, 0xD768, 0xD769, 0x6834, 0, 0, 0, 0,
5118+ 0x3071, 0, 0, 0x682B, 0xD76A, 0xD76B, 0xD76C, 0x682A,
5119+ 0xD76D, 0x6825, 0x6824, 0xD76E, 0x6822, 0x6821, 0x4363, 0xD76F,
5120+ 0x427B, 0x6827, 0xD770, 0, 0xD771, 0xD772, 0, 0,
5121+};
5122+static const unsigned short utf8_to_euc_E88D[] = {
5123+ 0x6826, 0, 0xD773, 0xD774, 0xD775, 0x6829, 0, 0xD776,
5124+ 0, 0x4170, 0x3755, 0, 0, 0xD777, 0xD778, 0x3141,
5125+ 0x6828, 0xD779, 0x3953, 0xD83E, 0xD763, 0xD77A, 0xD77B, 0xD77C,
5126+ 0x4171, 0, 0, 0, 0, 0, 0, 0,
5127+ 0, 0, 0xF45F, 0, 0, 0, 0, 0,
5128+ 0, 0, 0, 0, 0, 0, 0, 0,
5129+ 0xD77D, 0, 0, 0x683A, 0, 0x683B, 0, 0x3259,
5130+ 0xD77E, 0, 0, 0x322E, 0x6838, 0xD821, 0, 0xD822,
5131+};
5132+static const unsigned short utf8_to_euc_E88E[] = {
5133+ 0xD823, 0, 0xD824, 0, 0xD825, 0x682E, 0xD826, 0x6836,
5134+ 0, 0x683D, 0x6837, 0, 0, 0xD827, 0x6835, 0,
5135+ 0, 0, 0xD828, 0x6776, 0xD829, 0xD82A, 0x6833, 0,
5136+ 0xD82B, 0xD82C, 0x682F, 0xD82D, 0xD82E, 0xD82F, 0x3450, 0x6831,
5137+ 0x683C, 0, 0x6832, 0, 0, 0, 0xD830, 0xD831,
5138+ 0x683E, 0xD832, 0x6830, 0x477C, 0xD833, 0xD84C, 0, 0,
5139+ 0, 0x4D69, 0, 0, 0, 0x6839, 0, 0,
5140+ 0, 0, 0, 0, 0, 0x684F, 0xD834, 0xD835,
5141+};
5142+static const unsigned short utf8_to_euc_E88F[] = {
5143+ 0xD836, 0x6847, 0, 0, 0, 0x3F7B, 0, 0xD837,
5144+ 0, 0xD838, 0x3546, 0, 0x365D, 0, 0x6842, 0xD839,
5145+ 0xD83A, 0xD83B, 0, 0x325B, 0xD83C, 0, 0x3E54, 0,
5146+ 0x6845, 0, 0, 0, 0x3A5A, 0xD83D, 0, 0x4551,
5147+ 0x684A, 0, 0, 0, 0, 0, 0, 0,
5148+ 0xD83F, 0x4A6E, 0xD840, 0x6841, 0, 0, 0, 0x325A,
5149+ 0x3856, 0x4929, 0x684B, 0, 0x683F, 0, 0xD841, 0x6848,
5150+ 0xD842, 0xD843, 0, 0x6852, 0xD844, 0x6843, 0, 0,
5151+};
5152+static const unsigned short utf8_to_euc_E890[] = {
5153+ 0, 0xD845, 0, 0x6844, 0x463A, 0, 0xD846, 0x6849,
5154+ 0, 0, 0xD847, 0x6846, 0x4B28, 0x684C, 0x3060, 0xD848,
5155+ 0, 0xD849, 0, 0x6840, 0, 0xD84A, 0, 0,
5156+ 0, 0xD84B, 0, 0, 0, 0, 0, 0,
5157+ 0x684E, 0, 0x684D, 0, 0, 0, 0, 0,
5158+ 0, 0x476B, 0x6854, 0, 0x685F, 0, 0, 0xD84D,
5159+ 0, 0x337E, 0, 0, 0, 0x6862, 0, 0,
5160+ 0x6850, 0xD84E, 0, 0, 0x6855, 0x4D6E, 0, 0,
5161+};
5162+static const unsigned short utf8_to_euc_E891[] = {
5163+ 0, 0, 0, 0, 0, 0xD84F, 0x685E, 0xD850,
5164+ 0xD851, 0x4D55, 0xD852, 0, 0, 0xD853, 0x4E2A, 0xD854,
5165+ 0, 0xD855, 0xD856, 0, 0, 0, 0xD857, 0x4378,
5166+ 0xD858, 0xD859, 0xD85A, 0x336B, 0xD85B, 0, 0, 0,
5167+ 0xD85C, 0x4972, 0x6864, 0x4621, 0xD85D, 0xD85E, 0x3031, 0xD85F,
5168+ 0, 0x685D, 0xD860, 0x6859, 0x4172, 0x6853, 0x685B, 0x6860,
5169+ 0xD861, 0x472C, 0, 0xD862, 0xD863, 0x302A, 0xD864, 0x6858,
5170+ 0xD865, 0x6861, 0x4978, 0, 0xD866, 0xD867, 0, 0,
5171+};
5172+static const unsigned short utf8_to_euc_E892[] = {
5173+ 0, 0xD868, 0x685C, 0, 0x6857, 0xD869, 0, 0,
5174+ 0, 0, 0, 0x3E55, 0, 0, 0, 0,
5175+ 0x3D2F, 0, 0xD86A, 0xD86B, 0x3C2C, 0xD86C, 0, 0,
5176+ 0, 0x4C58, 0, 0, 0x4947, 0, 0xD86D, 0x6867,
5177+ 0, 0x6870, 0, 0, 0, 0, 0xD86E, 0,
5178+ 0xD86F, 0xD870, 0xD871, 0, 0, 0x685A, 0, 0xD872,
5179+ 0, 0xD873, 0x3377, 0, 0xD874, 0, 0, 0,
5180+ 0x3E78, 0x6865, 0xD875, 0x686A, 0x4173, 0xD876, 0xD877, 0x6866,
5181+};
5182+static const unsigned short utf8_to_euc_E893[] = {
5183+ 0xD878, 0x686D, 0xD879, 0, 0x435F, 0, 0x686E, 0xD87A,
5184+ 0xD87B, 0x4D56, 0x6863, 0x3338, 0xD87C, 0x6869, 0, 0xD87D,
5185+ 0x686C, 0x4C2C, 0, 0xD87E, 0, 0, 0x686F, 0,
5186+ 0, 0x6868, 0x686B, 0, 0xD921, 0, 0, 0,
5187+ 0, 0, 0, 0, 0, 0, 0, 0xD922,
5188+ 0, 0, 0xD923, 0, 0x4B29, 0, 0x4F21, 0xD924,
5189+ 0xD925, 0xD926, 0xD927, 0, 0x6873, 0, 0, 0xD928,
5190+ 0, 0, 0xD92A, 0xD92B, 0x687A, 0xD92C, 0, 0x6872,
5191+};
5192+static const unsigned short utf8_to_euc_E894[] = {
5193+ 0x3C43, 0, 0xD92D, 0xD92E, 0, 0, 0x6851, 0xD92F,
5194+ 0, 0, 0, 0, 0xD930, 0, 0xD931, 0,
5195+ 0xD932, 0x4A4E, 0, 0x4C22, 0x6879, 0x6878, 0, 0x6874,
5196+ 0x6875, 0, 0x3136, 0, 0xD933, 0, 0xD934, 0x6877,
5197+ 0, 0x6871, 0xD935, 0xD936, 0xD937, 0xD938, 0x4455, 0xD939,
5198+ 0, 0, 0xD93A, 0xD93B, 0x6876, 0x307E, 0, 0xD93C,
5199+ 0, 0, 0xD929, 0xD93D, 0xD93E, 0x4222, 0xD93F, 0,
5200+ 0, 0, 0, 0, 0, 0x4A43, 0, 0xD940,
5201+};
5202+static const unsigned short utf8_to_euc_E895[] = {
5203+ 0x687B, 0x6921, 0, 0x4859, 0, 0, 0xD941, 0,
5204+ 0x687E, 0x3E56, 0x3C49, 0x6923, 0, 0, 0x363E, 0xD942,
5205+ 0xD943, 0xD944, 0xD945, 0xD946, 0, 0x6924, 0xD947, 0x4979,
5206+ 0x687D, 0xD948, 0x6856, 0, 0xD949, 0xD94A, 0xD94B, 0xD94C,
5207+ 0xD94D, 0xD94E, 0xD94F, 0x687C, 0xD950, 0, 0, 0,
5208+ 0x4F4F, 0x4622, 0x4973, 0xD951, 0, 0x692B, 0, 0xD952,
5209+ 0, 0, 0, 0, 0, 0, 0, 0x6931,
5210+ 0, 0xD953, 0xD954, 0xD955, 0, 0xD956, 0x6932, 0xD957,
5211+};
5212+static const unsigned short utf8_to_euc_E896[] = {
5213+ 0x6925, 0xD958, 0, 0, 0x4776, 0xD959, 0xD95A, 0x692F,
5214+ 0x6927, 0xD95B, 0x6929, 0xD95C, 0xD95D, 0, 0, 0xD95E,
5215+ 0x6933, 0x6928, 0, 0xD95F, 0x692C, 0, 0, 0x3172,
5216+ 0xD960, 0x4665, 0, 0x692D, 0x6930, 0xD961, 0, 0xD962,
5217+ 0xD963, 0, 0xD964, 0, 0x6926, 0xD965, 0x4126, 0xD966,
5218+ 0x692A, 0x3B27, 0x3F45, 0x3730, 0x4C74, 0xD974, 0x4C79, 0x3D72,
5219+ 0xF461, 0, 0, 0, 0xD967, 0, 0xD968, 0xD969,
5220+ 0xD96A, 0x6937, 0x6935, 0, 0xD96B, 0xD96C, 0xD96D, 0xD96E,
5221+};
5222+static const unsigned short utf8_to_euc_E897[] = {
5223+ 0, 0x4F4E, 0xD96F, 0, 0, 0, 0, 0xD970,
5224+ 0, 0x6934, 0xD971, 0xD972, 0, 0x4D75, 0xD973, 0x6936,
5225+ 0x6938, 0, 0, 0, 0, 0x6939, 0, 0,
5226+ 0xD975, 0, 0xD976, 0, 0x693C, 0x693A, 0, 0xD977,
5227+ 0xD978, 0, 0, 0, 0x4623, 0x693B, 0xD979, 0,
5228+ 0xD97A, 0x484D, 0x692E, 0, 0, 0xD97B, 0, 0,
5229+ 0, 0, 0, 0xD97C, 0, 0, 0xD97D, 0x3D73,
5230+ 0, 0x693D, 0x6942, 0x4174, 0xD97E, 0, 0x6941, 0xDA21,
5231+};
5232+static const unsigned short utf8_to_euc_E898[] = {
5233+ 0xDA22, 0, 0x6922, 0, 0xDA23, 0xDA24, 0x6943, 0x4149,
5234+ 0, 0, 0x693E, 0x6940, 0, 0xDA25, 0xDA26, 0,
5235+ 0xDA27, 0xDA28, 0xDA29, 0x693F, 0, 0, 0x5D31, 0x5D22,
5236+ 0xDA2A, 0xDA2B, 0x6945, 0xDA2C, 0, 0, 0xDA2D, 0,
5237+ 0, 0xDA2E, 0x6944, 0, 0, 0, 0, 0xDA2F,
5238+ 0, 0xDA30, 0, 0, 0, 0x4D76, 0, 0x623C,
5239+ 0x6946, 0, 0, 0, 0, 0, 0xDA31, 0,
5240+ 0xDA32, 0, 0xDA33, 0, 0xDA34, 0xDA35, 0, 0x6947,
5241+};
5242+static const unsigned short utf8_to_euc_E899[] = {
5243+ 0xDA36, 0xB866, 0xDA37, 0, 0, 0, 0xDA38, 0,
5244+ 0, 0, 0, 0, 0, 0x6948, 0x3857, 0,
5245+ 0x3554, 0, 0xDA39, 0xDA3A, 0x694A, 0x515D, 0xDA3B, 0xDA3C,
5246+ 0xDA3D, 0xDA3E, 0x3575, 0, 0x4E3A, 0xDA3F, 0x3673, 0x694B,
5247+ 0xDA40, 0xDA41, 0xDA42, 0xDA43, 0xDA44, 0, 0, 0x694C,
5248+ 0, 0xDA45, 0, 0x436E, 0xDA46, 0, 0, 0xDA47,
5249+ 0, 0x694D, 0, 0, 0, 0xDA48, 0xDA49, 0xDA4A,
5250+ 0, 0x467A, 0xDA4B, 0x303A, 0, 0, 0, 0,
5251+};
5252+static const unsigned short utf8_to_euc_E89A[] = {
5253+ 0, 0, 0, 0, 0, 0, 0, 0,
5254+ 0xDA6D, 0, 0x3263, 0x6952, 0x6953, 0xDA4C, 0, 0,
5255+ 0, 0xDA4D, 0, 0x694E, 0, 0x3B3D, 0xDA4E, 0,
5256+ 0xDA4F, 0, 0xDA50, 0, 0xDA51, 0, 0, 0,
5257+ 0, 0xDA52, 0, 0x694F, 0x4742, 0, 0xDA53, 0xDA54,
5258+ 0xDA55, 0x6950, 0x6951, 0x695B, 0, 0xDA56, 0, 0x6955,
5259+ 0x6958, 0xDA57, 0, 0xDA58, 0xDA59, 0xDA5A, 0x6954, 0xDA5B,
5260+ 0xDA5C, 0xDA5D, 0, 0, 0, 0, 0, 0xDA5E,
5261+};
5262+static const unsigned short utf8_to_euc_E89B[] = {
5263+ 0xDA5F, 0xDA60, 0, 0xDA61, 0x6956, 0xDA62, 0x6957, 0x3C58,
5264+ 0, 0x6959, 0, 0x4341, 0, 0x3756, 0x3342, 0,
5265+ 0, 0xDA63, 0xDA64, 0, 0x695C, 0xDA65, 0, 0xDA66,
5266+ 0, 0x333F, 0xDA67, 0x6961, 0xDA68, 0, 0x695D, 0x6960,
5267+ 0xDA69, 0, 0, 0xDA6A, 0x483A, 0xDA6B, 0, 0xDA6C,
5268+ 0, 0x695E, 0, 0, 0x695F, 0x4948, 0x485A, 0x6962,
5269+ 0, 0, 0, 0, 0, 0, 0, 0,
5270+ 0x427D, 0x696C, 0xDA6E, 0x6968, 0xDA6F, 0xDA70, 0x326B, 0,
5271+};
5272+static const unsigned short utf8_to_euc_E89C[] = {
5273+ 0x6966, 0, 0x4B2A, 0x6967, 0xDA71, 0xDA72, 0x6964, 0xDA73,
5274+ 0x6965, 0x696A, 0x696D, 0xDA74, 0, 0x696B, 0xDA75, 0xDA76,
5275+ 0xDA77, 0x6969, 0x6963, 0xDA78, 0xDA79, 0, 0, 0,
5276+ 0x4358, 0xDA7A, 0x6974, 0, 0x4C2A, 0, 0xDA7B, 0xDA7C,
5277+ 0, 0xDA7D, 0, 0xDA7E, 0, 0x6972, 0, 0,
5278+ 0xDB21, 0x6973, 0, 0, 0, 0, 0xDB22, 0xDB23,
5279+ 0, 0xDB24, 0xDB25, 0, 0x696E, 0, 0, 0x6970,
5280+ 0, 0xDB26, 0xDB27, 0x6971, 0xDB28, 0xDB29, 0xDB2A, 0x696F,
5281+};
5282+static const unsigned short utf8_to_euc_E89D[] = {
5283+ 0xDB2B, 0, 0, 0xDB2C, 0, 0xDB2D, 0, 0,
5284+ 0, 0x4066, 0, 0x4F39, 0x6978, 0xDB2E, 0x6979, 0,
5285+ 0, 0, 0, 0x6A21, 0, 0x3F2A, 0, 0x697B,
5286+ 0xDB2F, 0x697E, 0, 0, 0, 0xDB30, 0, 0x6976,
5287+ 0x6975, 0xDB31, 0, 0x6A22, 0xDB32, 0xDB33, 0x325C, 0,
5288+ 0x697C, 0, 0x6A23, 0, 0, 0, 0x697D, 0xDB34,
5289+ 0, 0xDB35, 0xDB36, 0, 0x697A, 0, 0x4433, 0,
5290+ 0x6977, 0, 0, 0xDB37, 0, 0, 0, 0x4768,
5291+};
5292+static const unsigned short utf8_to_euc_E89E[] = {
5293+ 0, 0, 0x6A27, 0xDB38, 0xDB39, 0xDB3A, 0xDB3B, 0xDB3C,
5294+ 0xDB3D, 0xDB3E, 0, 0xDB3F, 0xDB40, 0x4D3B, 0, 0,
5295+ 0xDB41, 0, 0, 0xDB42, 0, 0xDB43, 0, 0xDB44,
5296+ 0xDB45, 0xDB46, 0, 0, 0, 0, 0xDB47, 0x6A26,
5297+ 0xDB48, 0, 0x6A25, 0xDB49, 0, 0, 0, 0xDB4A,
5298+ 0, 0, 0, 0x6A2E, 0xDB4B, 0xDB4C, 0xDB4D, 0x6A28,
5299+ 0, 0xDB4E, 0, 0x6A30, 0, 0xDB4F, 0, 0,
5300+ 0, 0, 0x4D66, 0x6A33, 0, 0x6A2A, 0xDB50, 0xDB51,
5301+};
5302+static const unsigned short utf8_to_euc_E89F[] = {
5303+ 0x6A2B, 0xDB52, 0, 0, 0x6A2F, 0, 0x6A32, 0x6A31,
5304+ 0xDB53, 0xDB54, 0xDB55, 0x6A29, 0, 0, 0xDB56, 0,
5305+ 0x6A2C, 0, 0x6A3D, 0, 0, 0xDB57, 0xDB58, 0,
5306+ 0, 0xDB59, 0xDB5A, 0, 0xDB5B, 0, 0, 0xDB5C,
5307+ 0x6A36, 0, 0xDB5D, 0xDB5E, 0xDB5F, 0, 0, 0,
5308+ 0, 0, 0xDB60, 0xDB61, 0, 0xDB62, 0, 0x6A34,
5309+ 0, 0xDB63, 0x6A35, 0xDB64, 0, 0, 0x6A3A, 0x6A3B,
5310+ 0xDB65, 0x332A, 0xDB66, 0x3542, 0, 0, 0x6A39, 0xDB67,
5311+};
5312+static const unsigned short utf8_to_euc_E8A0[] = {
5313+ 0, 0xDB68, 0, 0xDB69, 0, 0x6A24, 0xDB6A, 0xF464,
5314+ 0, 0xDB6B, 0xDB6C, 0xDB6D, 0, 0x6A38, 0x6A3C, 0x6A37,
5315+ 0xDB6E, 0x6A3E, 0xDB70, 0xDB71, 0xDB72, 0x6A40, 0x6A3F, 0,
5316+ 0xDB73, 0xDB6F, 0xDB74, 0xDB75, 0xDB76, 0, 0xDB77, 0xDB78,
5317+ 0, 0x6A42, 0x6A41, 0x695A, 0, 0, 0, 0x6A46,
5318+ 0xDB79, 0, 0, 0, 0, 0xDB7A, 0xDB7B, 0,
5319+ 0xDB7C, 0x6A43, 0xDB7D, 0, 0, 0xDB7E, 0x6A44, 0,
5320+ 0, 0x6A45, 0xDC21, 0x6A47, 0xDC22, 0, 0, 0,
5321+};
5322+static const unsigned short utf8_to_euc_E8A1[] = {
5323+ 0x376C, 0xDC23, 0x6A49, 0xDC24, 0x6A48, 0xDC25, 0x3D30, 0,
5324+ 0xDC26, 0xDC27, 0xDC28, 0xDC29, 0x3954, 0x5E27, 0xDC2A, 0,
5325+ 0, 0xDC2B, 0x6A4A, 0x3D51, 0, 0xDC2C, 0xDC2D, 0x3339,
5326+ 0xDC2E, 0x6A4B, 0xDC2F, 0x3152, 0xDC30, 0x3E57, 0x6A4C, 0xDC31,
5327+ 0xDC32, 0x3955, 0x6A4D, 0x3061, 0xDC33, 0, 0, 0,
5328+ 0x493D, 0xDC34, 0, 0x6A4E, 0, 0, 0, 0,
5329+ 0x3F6A, 0xDC35, 0x6A55, 0, 0, 0x6A52, 0, 0x436F,
5330+ 0, 0xDC36, 0, 0xDC37, 0, 0x6A53, 0x6A50, 0x365E,
5331+};
5332+static const unsigned short utf8_to_euc_E8A2[] = {
5333+ 0xDC38, 0x6A4F, 0x6A56, 0, 0, 0, 0, 0,
5334+ 0x3736, 0, 0, 0x425E, 0, 0x6A5C, 0, 0,
5335+ 0, 0, 0x6A58, 0, 0, 0, 0x4235, 0x6A57,
5336+ 0xDC39, 0x6A5A, 0xDC3A, 0xDC3B, 0xDC3C, 0, 0x6A51, 0xDC3D,
5337+ 0xDC3E, 0, 0x6A5B, 0, 0x6A5D, 0, 0, 0,
5338+ 0xDC3F, 0, 0xDC40, 0x486F, 0, 0, 0x6A59, 0,
5339+ 0x6A5E, 0x6A60, 0, 0, 0x3853, 0x6A54, 0, 0x3041,
5340+ 0, 0, 0xDC41, 0, 0, 0xDC42, 0xDC43, 0x6A5F,
5341+};
5342+static const unsigned short utf8_to_euc_E8A3[] = {
5343+ 0xDC44, 0x3A5B, 0x4E76, 0x6A61, 0x6A62, 0x4175, 0, 0,
5344+ 0, 0, 0xDC45, 0xDC46, 0xDC47, 0xDC48, 0xDC49, 0x4E22,
5345+ 0, 0xDC4A, 0xDC4B, 0xDC4C, 0x6A63, 0x4D35, 0, 0,
5346+ 0x6A64, 0x6A65, 0, 0xDC4D, 0x4A64, 0x6A66, 0xDC4E, 0x3A40,
5347+ 0, 0x4E23, 0, 0, 0, 0, 0, 0xDC4F,
5348+ 0x6A6B, 0, 0, 0, 0, 0, 0, 0xDC50,
5349+ 0xDC51, 0xDC52, 0x6A6C, 0x3E58, 0x6A6A, 0xDC53, 0, 0xDC54,
5350+ 0x4D67, 0x6A67, 0, 0, 0x6A69, 0x403D, 0x3F7E, 0,
5351+};
5352+static const unsigned short utf8_to_euc_E8A4[] = {
5353+ 0, 0xDC55, 0x6A68, 0, 0x6A6D, 0, 0xDC56, 0x4A23,
5354+ 0, 0, 0x6A6F, 0, 0x6A6E, 0xDC57, 0xDC58, 0xDC59,
5355+ 0x336C, 0, 0x4B2B, 0x6A70, 0, 0xDC5A, 0xDC5B, 0,
5356+ 0xDC5C, 0xDC5D, 0xDC5E, 0, 0xDC5F, 0x6A7C, 0x6A72, 0,
5357+ 0xDC60, 0, 0, 0, 0, 0x6A73, 0xDC61, 0xDC62,
5358+ 0xDC63, 0, 0x6A74, 0x6A75, 0, 0, 0, 0,
5359+ 0xDC64, 0xDC65, 0xDC66, 0, 0, 0xDC67, 0x6A79, 0,
5360+ 0x6A7A, 0xDC68, 0xDC69, 0x6A78, 0, 0, 0xDC6A, 0,
5361+};
5362+static const unsigned short utf8_to_euc_E8A5[] = {
5363+ 0xDC6B, 0x6A76, 0xDC6C, 0x6A71, 0x6A77, 0xDC6D, 0xDC6E, 0,
5364+ 0, 0xDC6F, 0, 0, 0x6A7B, 0x7037, 0, 0xDC70,
5365+ 0, 0, 0xDC71, 0, 0, 0, 0x3228, 0xDC72,
5366+ 0, 0, 0xDC73, 0xDC74, 0xDC75, 0, 0x6A7E, 0x365F,
5367+ 0x6A7D, 0xDC76, 0xDC77, 0xDC78, 0x6B22, 0, 0x6B21, 0,
5368+ 0, 0, 0x6B24, 0xDC79, 0, 0x6B23, 0xDC7A, 0x6B25,
5369+ 0xDC7B, 0, 0x3D31, 0xDC7C, 0x6B26, 0xDC7D, 0, 0x6B27,
5370+ 0, 0, 0xDC7E, 0xDD21, 0xDD22, 0xDD23, 0x6B28, 0x403E,
5371+};
5372+static const unsigned short utf8_to_euc_E8A6[] = {
5373+ 0, 0x4D57, 0, 0x6B29, 0, 0, 0x4A24, 0x4746,
5374+ 0x6B2A, 0xDD24, 0x6B2B, 0x382B, 0, 0xDD25, 0, 0x352C,
5375+ 0xDD26, 0, 0, 0x6B2C, 0xDD27, 0xDD28, 0x3B6B, 0x4741,
5376+ 0x6B2D, 0, 0x3350, 0xDD29, 0xDD2A, 0, 0, 0xDD2B,
5377+ 0xDD2C, 0x6B2E, 0, 0, 0, 0xDD2D, 0x6B30, 0x4D77,
5378+ 0, 0x6B2F, 0x3F46, 0, 0x6B31, 0, 0, 0x6B32,
5379+ 0xDD2E, 0, 0x6B33, 0x3451, 0xDD2F, 0xDD30, 0xDD31, 0xDD32,
5380+ 0, 0, 0x6B34, 0, 0xDD33, 0x6B35, 0, 0x6B36,
5381+};
5382+static const unsigned short utf8_to_euc_E8A7[] = {
5383+ 0x6B37, 0, 0, 0, 0, 0, 0, 0,
5384+ 0, 0, 0, 0, 0, 0, 0, 0,
5385+ 0, 0, 0x3351, 0, 0xDD34, 0xDD35, 0xDD36, 0xDD37,
5386+ 0xDD38, 0, 0x6B38, 0, 0x6B39, 0x6B3A, 0, 0,
5387+ 0, 0, 0, 0x3272, 0, 0xDD39, 0x3F28, 0x6B3B,
5388+ 0, 0xDD3A, 0, 0xDD3B, 0, 0xDD3C, 0, 0,
5389+ 0, 0xDD3D, 0, 0xDD3E, 0x6B3C, 0, 0xDD3F, 0,
5390+ 0x6B3D, 0xDD40, 0, 0, 0, 0xDD41, 0, 0xDD42,
5391+};
5392+static const unsigned short utf8_to_euc_E8A8[] = {
5393+ 0x3840, 0, 0x447B, 0x6B3E, 0xDD43, 0xDD44, 0, 0xDD45,
5394+ 0x3757, 0, 0x3F56, 0, 0x6B41, 0, 0x4624, 0xDD46,
5395+ 0x6B40, 0xDD47, 0xDD48, 0x3731, 0xDD49, 0xDD4A, 0x6B3F, 0x4277,
5396+ 0x352D, 0, 0, 0x6B42, 0, 0x6B43, 0xDD4B, 0x3E59,
5397+ 0xDD4C, 0, 0xDD4D, 0x376D, 0xDD4E, 0x6B44, 0xDD4F, 0,
5398+ 0, 0, 0x4B2C, 0xDD50, 0xDD51, 0x405F, 0, 0xDD52,
5399+ 0, 0x3576, 0, 0x4C75, 0x414A, 0xDD53, 0x6B45, 0xDD54,
5400+ 0, 0, 0x3F47, 0x4370, 0x3E5A, 0xDD55, 0xDD56, 0,
5401+};
5402+static const unsigned short utf8_to_euc_E8A9[] = {
5403+ 0xDD57, 0x6B46, 0, 0xDD58, 0, 0xDD59, 0x6B49, 0xDD5A,
5404+ 0x6B4A, 0xDD5B, 0, 0, 0, 0xDD5C, 0xDD5D, 0,
5405+ 0x3A3E, 0x4242, 0x6B48, 0xDD5E, 0x3E5B, 0x493E, 0xDD5F, 0xDD60,
5406+ 0xDD61, 0, 0, 0x6B47, 0xDD62, 0xDD63, 0x3B6C, 0,
5407+ 0x3153, 0xDD64, 0x6B4E, 0x3758, 0, 0xDD65, 0x3B6E, 0xDD66,
5408+ 0, 0x3B6D, 0, 0x4F4D, 0x6B4D, 0x6B4C, 0x4127, 0,
5409+ 0x354D, 0x4F43, 0x333A, 0x3E5C, 0, 0xDD67, 0xDD68, 0xDD69,
5410+ 0, 0xDD6A, 0xDD6B, 0xDD6C, 0x6B4B, 0, 0xDD6D, 0xDD6E,
5411+};
5412+static const unsigned short utf8_to_euc_E8AA[] = {
5413+ 0xDD6F, 0, 0x6B50, 0xDD70, 0x6B51, 0x6B4F, 0xDD71, 0x3858,
5414+ 0, 0x4D40, 0, 0xDD72, 0x3B6F, 0x4727, 0, 0xDD73,
5415+ 0xDD74, 0x6B54, 0xDD75, 0x4040, 0, 0x4342, 0xDD76, 0xDD77,
5416+ 0x4D36, 0xDD78, 0x6B57, 0, 0, 0, 0x386C, 0xDD79,
5417+ 0x403F, 0x6B53, 0, 0x6B58, 0x386D, 0x6B55, 0x6B56, 0xDD7A,
5418+ 0x6B52, 0xDD7B, 0, 0, 0x4062, 0x4649, 0xDD7C, 0xDD7D,
5419+ 0x432F, 0, 0x325D, 0xDD7E, 0, 0, 0xDE21, 0xDE22,
5420+ 0, 0x4870, 0, 0xDE23, 0x3543, 0, 0xDE24, 0x4434,
5421+};
5422+static const unsigned short utf8_to_euc_E8AB[] = {
5423+ 0, 0, 0x6B5B, 0xDE25, 0x6B59, 0, 0xDE26, 0x434C,
5424+ 0xDE27, 0xDE28, 0xDE29, 0x4041, 0x3452, 0x6B5A, 0, 0x3F5B,
5425+ 0, 0xDE2A, 0x4E4A, 0xDE2B, 0xDE2C, 0xDE2D, 0x4F40, 0xDE2E,
5426+ 0, 0, 0x6B5C, 0x6B67, 0x4435, 0xDE2F, 0x6B66, 0xDE30,
5427+ 0x6B63, 0x6B6B, 0x6B64, 0, 0x6B60, 0, 0x447C, 0x6B5F,
5428+ 0, 0, 0, 0x6B5D, 0xDE31, 0x4D21, 0x3B70, 0,
5429+ 0xDE32, 0x6B61, 0, 0x6B5E, 0xDE33, 0xDE34, 0xDE35, 0x6B65,
5430+ 0x3D74, 0, 0x3841, 0, 0xDE36, 0, 0x427A, 0xDE37,
5431+};
5432+static const unsigned short utf8_to_euc_E8AC[] = {
5433+ 0x4B45, 0x315A, 0x3062, 0, 0x4625, 0xDE38, 0xDE39, 0x6B69,
5434+ 0, 0, 0xDE3F, 0xDE3A, 0x6B68, 0, 0x4666, 0,
5435+ 0x6B6D, 0xDE3B, 0, 0, 0x6B62, 0, 0x6B6C, 0x6B6E,
5436+ 0, 0x382C, 0x6B6A, 0x3956, 0xDE3C, 0x3C55, 0xDE3D, 0xDE3E,
5437+ 0x6B6F, 0x4D58, 0, 0, 0, 0, 0x6B72, 0,
5438+ 0x6B75, 0, 0, 0x6B73, 0x4935, 0xDE40, 0, 0,
5439+ 0xDE41, 0, 0, 0x6B70, 0, 0, 0, 0xDE42,
5440+ 0, 0x3660, 0, 0, 0xDE43, 0, 0x6B74, 0,
5441+};
5442+static const unsigned short utf8_to_euc_E8AD[] = {
5443+ 0, 0x6B76, 0xDE44, 0xDE45, 0xDE46, 0xDE47, 0xDE48, 0,
5444+ 0xDE49, 0x6B7A, 0, 0, 0x6B77, 0xDE4E, 0x6B79, 0x6B78,
5445+ 0, 0, 0xDE4A, 0xDE4B, 0xDE4C, 0, 0x6B7B, 0,
5446+ 0x3C31, 0xDE4D, 0x6B7D, 0x6B7C, 0x4968, 0, 0xDE4F, 0x6C21,
5447+ 0, 0, 0, 0xDE50, 0, 0, 0x3759, 0,
5448+ 0, 0, 0, 0x6B7E, 0x6C22, 0xDE51, 0, 0x6C23,
5449+ 0x3544, 0x6641, 0x3E79, 0, 0x6C24, 0, 0xDE52, 0x386E,
5450+ 0xDE53, 0xDE54, 0, 0, 0xDE55, 0x6C25, 0xDE56, 0xF466,
5451+};
5452+static const unsigned short utf8_to_euc_E8AE[] = {
5453+ 0x6C26, 0xDE57, 0, 0x3B3E, 0xDE58, 0xDE59, 0, 0,
5454+ 0, 0, 0x5A4E, 0xDE5A, 0x6C27, 0xDE5B, 0x6C28, 0xDE5C,
5455+ 0x3D32, 0, 0x6C29, 0x6C2A, 0xDE5D, 0xDE5E, 0x6C2B, 0,
5456+ 0, 0x6C2C, 0x6C2D, 0, 0xDE5F, 0, 0xDE60, 0xDE61,
5457+ 0, 0, 0, 0, 0, 0, 0, 0,
5458+ 0, 0, 0, 0, 0, 0, 0, 0,
5459+ 0, 0, 0, 0, 0, 0, 0, 0,
5460+ 0, 0, 0, 0, 0, 0, 0, 0,
5461+};
5462+static const unsigned short utf8_to_euc_E8B0[] = {
5463+ 0, 0, 0, 0, 0, 0, 0, 0,
5464+ 0, 0, 0, 0, 0, 0, 0, 0,
5465+ 0, 0, 0, 0, 0, 0, 0, 0,
5466+ 0, 0, 0, 0, 0, 0, 0, 0,
5467+ 0, 0, 0, 0, 0, 0, 0, 0,
5468+ 0, 0, 0, 0, 0, 0, 0, 0,
5469+ 0, 0, 0, 0, 0, 0, 0, 0x432B,
5470+ 0xDE62, 0xDE63, 0x6C2E, 0, 0, 0xDE64, 0xDE65, 0x6C30,
5471+};
5472+static const unsigned short utf8_to_euc_E8B1[] = {
5473+ 0, 0x6C2F, 0, 0, 0, 0xDE66, 0x4626, 0xDE67,
5474+ 0x6C31, 0xDE68, 0x4B2D, 0xDE69, 0x6C32, 0, 0x6C33, 0xDE6A,
5475+ 0x6C34, 0xDE6B, 0, 0xDE6C, 0xDE6D, 0x6C35, 0, 0xDE6E,
5476+ 0xDE6F, 0xDE72, 0x465A, 0xDE70, 0, 0xDE71, 0, 0,
5477+ 0, 0x3E5D, 0x6C36, 0xDE73, 0xDE74, 0, 0xDE75, 0,
5478+ 0xDE76, 0xDE77, 0x396B, 0x502E, 0x6C37, 0xDE78, 0, 0,
5479+ 0, 0, 0, 0xDE79, 0, 0xDE7A, 0xDE7B, 0,
5480+ 0x6C38, 0x493F, 0x6C39, 0xDE7C, 0x6C41, 0, 0xDE7D, 0,
5481+};
5482+static const unsigned short utf8_to_euc_E8B2[] = {
5483+ 0, 0, 0x6C3A, 0, 0, 0x6C3C, 0xDE7E, 0xDF21,
5484+ 0, 0x6C3B, 0x6C3D, 0xDF22, 0x4B46, 0x6C3E, 0x6C3F, 0,
5485+ 0xDF23, 0, 0xDF24, 0xDF25, 0x6C40, 0, 0, 0,
5486+ 0x6C42, 0xDF26, 0, 0xDF27, 0xDF28, 0x332D, 0x4467, 0,
5487+ 0x4969, 0x3A62, 0x3957, 0, 0xDF29, 0, 0, 0x494F,
5488+ 0x325F, 0x484E, 0x6C45, 0x3453, 0x4055, 0x6C44, 0x6C49, 0x4379,
5489+ 0x4C63, 0, 0x6C47, 0x6C48, 0x352E, 0, 0x6C4A, 0x4763,
5490+ 0x425F, 0xDF2A, 0xDF2B, 0x4871, 0x453D, 0x6C46, 0, 0x4B47,
5491+};
5492+static const unsigned short utf8_to_euc_E8B3[] = {
5493+ 0x326C, 0x6C4C, 0x4F28, 0x4442, 0x4F45, 0xDF2C, 0xDF2D, 0x3B71,
5494+ 0x6C4B, 0xDF2E, 0x4231, 0xDF2F, 0, 0x6C5C, 0x4128, 0xDF30,
5495+ 0, 0x4678, 0, 0x4950, 0, 0xDF32, 0xDF31, 0,
5496+ 0, 0xDF33, 0x6C4F, 0x3B3F, 0x3B72, 0xDF34, 0x3E5E, 0,
5497+ 0x4765, 0xDF35, 0x382D, 0x6C4E, 0x6C4D, 0, 0x496A, 0,
5498+ 0xDF36, 0, 0x3C41, 0, 0xDF37, 0x4552, 0, 0xDF38,
5499+ 0xDF39, 0, 0xDF3A, 0, 0xF467, 0xDF3B, 0, 0xDF3C,
5500+ 0xDF3D, 0, 0x6C51, 0x6C52, 0x3958, 0x6C50, 0xDF3E, 0xDF3F,
5501+};
5502+static const unsigned short utf8_to_euc_E8B4[] = {
5503+ 0, 0xDF40, 0, 0xDF41, 0x6C53, 0x6C54, 0, 0x6C56,
5504+ 0x4223, 0xDF42, 0x6C55, 0x3466, 0, 0x6C58, 0, 0x6C57,
5505+ 0x6C59, 0, 0xDF43, 0x6C5B, 0x6C5D, 0, 0x6C5E, 0xDF44,
5506+ 0, 0, 0, 0xDF45, 0, 0, 0, 0,
5507+ 0, 0, 0, 0, 0, 0, 0, 0,
5508+ 0, 0, 0, 0, 0, 0, 0, 0,
5509+ 0, 0, 0, 0, 0, 0, 0, 0,
5510+ 0, 0, 0, 0, 0, 0, 0, 0,
5511+};
5512+static const unsigned short utf8_to_euc_E8B5[] = {
5513+ 0, 0, 0, 0, 0, 0, 0, 0,
5514+ 0, 0, 0, 0, 0, 0, 0, 0,
5515+ 0, 0, 0, 0, 0, 0, 0, 0,
5516+ 0, 0, 0, 0, 0, 0, 0, 0,
5517+ 0, 0, 0, 0, 0x4056, 0xDF46, 0x3C4F, 0x6C5F,
5518+ 0, 0xDF47, 0, 0x3352, 0xDF48, 0x6C60, 0xDF49, 0,
5519+ 0x4176, 0x6C61, 0, 0x6C62, 0x496B, 0, 0xF468, 0x352F,
5520+ 0, 0, 0, 0, 0, 0, 0, 0xDF4A,
5521+};
5522+static const unsigned short utf8_to_euc_E8B6[] = {
5523+ 0, 0x6C63, 0xDF4B, 0, 0xDF4C, 0x4436, 0, 0,
5524+ 0xDF4D, 0, 0x315B, 0, 0, 0xDF4E, 0, 0,
5525+ 0xDF4F, 0xDF50, 0, 0, 0, 0xDF51, 0, 0,
5526+ 0, 0x6C64, 0, 0, 0, 0, 0xDF52, 0xDF53,
5527+ 0xDF54, 0, 0, 0x3C71, 0, 0, 0xDF55, 0,
5528+ 0x3F76, 0, 0, 0xDF56, 0xDF57, 0, 0, 0xDF58,
5529+ 0, 0, 0xDF59, 0x422D, 0, 0xDF5A, 0, 0xDF5B,
5530+ 0, 0xDF5C, 0x6C67, 0xDF5D, 0xDF6F, 0, 0x6C66, 0,
5531+};
5532+static const unsigned short utf8_to_euc_E8B7[] = {
5533+ 0xDF5E, 0, 0x6C65, 0, 0, 0xDF5F, 0xDF60, 0xDF61,
5534+ 0xDF62, 0, 0xDF63, 0x6C6D, 0x6C6B, 0, 0xDF64, 0x6C68,
5535+ 0, 0xDF65, 0, 0, 0xDF66, 0xDF67, 0x6C6A, 0xDF68,
5536+ 0, 0xDF69, 0x6C69, 0x6C6C, 0, 0x3577, 0, 0x6C70,
5537+ 0, 0x4057, 0, 0x6C71, 0xDF6A, 0xDF6B, 0, 0xDF6C,
5538+ 0x3859, 0, 0x6C6E, 0x6C6F, 0xDF6D, 0, 0, 0x4F29,
5539+ 0xDF6E, 0xDF70, 0xDF71, 0x4437, 0xDF72, 0x4129, 0, 0,
5540+ 0, 0, 0, 0, 0x6C72, 0xDF73, 0, 0x6C75,
5541+};
5542+static const unsigned short utf8_to_euc_E8B8[] = {
5543+ 0, 0xDF74, 0, 0, 0xDF75, 0xDF76, 0xDF77, 0,
5544+ 0x6C73, 0x6C74, 0x4D59, 0xDF78, 0, 0, 0, 0x4627,
5545+ 0x6C78, 0xDF79, 0, 0, 0xDF7A, 0, 0xDF7B, 0,
5546+ 0, 0, 0, 0, 0, 0x6C76, 0x6C77, 0x6C79,
5547+ 0xDF7C, 0xDF7D, 0xDF7E, 0xE021, 0, 0, 0xE022, 0xE023,
5548+ 0, 0, 0x6D29, 0, 0, 0, 0, 0,
5549+ 0x6C7C, 0xE024, 0, 0xE025, 0x6C7D, 0x6C7B, 0xE026, 0xE027,
5550+ 0xE028, 0xE029, 0, 0, 0, 0xE02A, 0, 0,
5551+};
5552+static const unsigned short utf8_to_euc_E8B9[] = {
5553+ 0xE02B, 0xE02C, 0x6C7A, 0, 0x447D, 0, 0, 0x6D21,
5554+ 0x6D25, 0x6D22, 0x6C7E, 0xE02D, 0x6D23, 0xE02E, 0xE02F, 0xE030,
5555+ 0x6D24, 0, 0, 0, 0xE031, 0x6D2B, 0, 0,
5556+ 0, 0x6D26, 0, 0xE032, 0xE033, 0xE034, 0xE035, 0x4058,
5557+ 0x6D28, 0xE036, 0xE037, 0x6D2A, 0x6D27, 0, 0, 0,
5558+ 0, 0xE038, 0, 0, 0xE039, 0xE03A, 0, 0xE03B,
5559+ 0xE03C, 0xE03D, 0x6D2D, 0, 0x3D33, 0, 0x6D2C, 0,
5560+ 0, 0xE03E, 0xE03F, 0xE040, 0x6D2E, 0, 0, 0,
5561+};
5562+static const unsigned short utf8_to_euc_E8BA[] = {
5563+ 0, 0x6D2F, 0xE041, 0xE042, 0x6D32, 0x6D31, 0, 0x6D30,
5564+ 0, 0xE043, 0x6D34, 0x6D33, 0, 0x4C76, 0, 0,
5565+ 0xE044, 0x6D36, 0xE045, 0x6D35, 0x6D37, 0xE046, 0, 0,
5566+ 0, 0x6D38, 0xE047, 0xE048, 0, 0xE049, 0xE04A, 0,
5567+ 0, 0x6D3A, 0xE04B, 0, 0, 0, 0, 0xE04C,
5568+ 0, 0xE04D, 0x6D39, 0x3F48, 0x6D3B, 0xE04E, 0xE04F, 0x366D,
5569+ 0x6D3C, 0x6D3E, 0, 0xE050, 0, 0xE051, 0, 0,
5570+ 0, 0, 0xE052, 0xE053, 0, 0, 0x6D3F, 0,
5571+};
5572+static const unsigned short utf8_to_euc_E8BB[] = {
5573+ 0xE054, 0xE055, 0, 0xE056, 0xE057, 0x6D40, 0x6D3D, 0xE058,
5574+ 0x6D41, 0, 0x3C56, 0x6D42, 0x3530, 0x3733, 0, 0xE059,
5575+ 0, 0xE05A, 0x382E, 0, 0xE05B, 0, 0, 0,
5576+ 0, 0, 0, 0x6D43, 0xE05C, 0, 0, 0x4670,
5577+ 0, 0, 0x453E, 0x6D44, 0, 0, 0, 0,
5578+ 0xE05D, 0, 0, 0x6D47, 0, 0xE064, 0xE05E, 0,
5579+ 0xE05F, 0xE060, 0, 0, 0, 0, 0, 0xE061,
5580+ 0x3C34, 0xE062, 0xE063, 0x6D46, 0x6D45, 0x375A, 0x6D48, 0,
5581+};
5582+static const unsigned short utf8_to_euc_E8BC[] = {
5583+ 0xE065, 0, 0xE066, 0x3353, 0, 0x6D4A, 0, 0xE067,
5584+ 0xE068, 0x3A5C, 0x6D49, 0, 0x6D52, 0, 0, 0xE069,
5585+ 0xE06A, 0, 0x6D4C, 0x6D4E, 0x4A65, 0x6D4B, 0xE06B, 0xE06C,
5586+ 0xE06D, 0x6D4D, 0, 0x6D51, 0x6D4F, 0x3531, 0xE06E, 0x6D50,
5587+ 0xE06F, 0xE070, 0, 0xE071, 0, 0xE072, 0x6D53, 0xE073,
5588+ 0xE074, 0x475A, 0x4E58, 0, 0xE075, 0xE076, 0xE077, 0x3D34,
5589+ 0, 0, 0, 0x6D54, 0xE078, 0xE079, 0xE07A, 0xE07B,
5590+ 0x4D22, 0x6D56, 0xE07C, 0x6D55, 0, 0, 0x6D59, 0x4D41,
5591+};
5592+static const unsigned short utf8_to_euc_E8BD[] = {
5593+ 0xE07D, 0xE07E, 0x6D58, 0xE121, 0x336D, 0x6D57, 0x6D5C, 0xE122,
5594+ 0, 0x6D5B, 0, 0, 0x6D5A, 0x4532, 0x6D5D, 0xE123,
5595+ 0, 0xE124, 0xE125, 0xE126, 0xE127, 0xE128, 0, 0x6D5E,
5596+ 0xE129, 0, 0, 0, 0x6D5F, 0xE12A, 0xE12B, 0x396C,
5597+ 0, 0x3725, 0x6D60, 0x6D61, 0x6D62, 0xE12C, 0, 0,
5598+ 0, 0, 0, 0, 0, 0, 0, 0,
5599+ 0, 0, 0, 0, 0, 0, 0, 0,
5600+ 0, 0, 0, 0, 0, 0, 0, 0,
5601+};
5602+static const unsigned short utf8_to_euc_E8BE[] = {
5603+ 0, 0, 0, 0, 0, 0, 0, 0,
5604+ 0, 0, 0, 0, 0, 0, 0, 0,
5605+ 0, 0, 0, 0, 0, 0, 0, 0,
5606+ 0, 0, 0, 0x3F49, 0x6D63, 0xE12D, 0x3C2D, 0x6D64,
5607+ 0xE12E, 0xE12F, 0, 0x6D65, 0xE130, 0xE131, 0xE132, 0x5221,
5608+ 0x517E, 0, 0, 0, 0, 0x6D66, 0x6570, 0x6D67,
5609+ 0x4324, 0x3F2B, 0x4740, 0, 0, 0xE133, 0xE134, 0x6D68,
5610+ 0xE135, 0, 0x4A55, 0x4454, 0x397E, 0, 0xE136, 0x4329,
5611+};
5612+static const unsigned short utf8_to_euc_E8BF[] = {
5613+ 0xE137, 0xE138, 0x312A, 0, 0x4B78, 0x3F57, 0xE139, 0,
5614+ 0, 0, 0xE13A, 0xE13B, 0, 0xE13C, 0x375E, 0,
5615+ 0xE13D, 0x3661, 0xE13E, 0xE13F, 0x4A56, 0xE140, 0, 0,
5616+ 0, 0, 0x6D69, 0, 0, 0, 0, 0,
5617+ 0xE141, 0, 0x6D6B, 0xE142, 0xE143, 0x6D6A, 0x3260, 0,
5618+ 0xE144, 0x4676, 0x6D6C, 0x4777, 0, 0x4533, 0xE145, 0x6D6D,
5619+ 0x3D52, 0xE146, 0, 0, 0x6D6F, 0xE147, 0xE148, 0x4C42,
5620+ 0x6D7E, 0x6D71, 0x6D72, 0xE149, 0, 0x4449, 0xE14A, 0,
5621+};
5622+static const unsigned short utf8_to_euc_E980[] = {
5623+ 0x4260, 0x4177, 0xE14B, 0x4628, 0xE14C, 0x6D70, 0x3555, 0,
5624+ 0xE14D, 0, 0, 0x6D79, 0xE14E, 0x6D76, 0x6E25, 0x4629,
5625+ 0x4360, 0x6D73, 0, 0x447E, 0x4553, 0x6D74, 0x6D78, 0x3F60,
5626+ 0xE14F, 0x4767, 0x444C, 0xE150, 0, 0x4042, 0x6D77, 0x422E,
5627+ 0x4224, 0x6D75, 0x3029, 0x4F22, 0, 0, 0, 0x6D7A,
5628+ 0xE151, 0xE152, 0xE154, 0, 0xE155, 0xE156, 0x4261, 0xE153,
5629+ 0, 0x3D35, 0x3F4A, 0xE157, 0xE158, 0x6D7C, 0x6D7B, 0xE159,
5630+ 0x306F, 0x6D7D, 0, 0, 0x492F, 0, 0x6E27, 0xE15A,
5631+};
5632+static const unsigned short utf8_to_euc_E981[] = {
5633+ 0, 0x465B, 0x3F6B, 0xE15B, 0xE15C, 0x4359, 0, 0x3678,
5634+ 0, 0x6E26, 0x4D37, 0x313F, 0xE15D, 0x4A57, 0x3261, 0x6E21,
5635+ 0x6E22, 0x6E23, 0x6E24, 0x463B, 0x4323, 0x3063, 0x6E28, 0,
5636+ 0x6E29, 0x7423, 0, 0xE15E, 0x423D, 0xE15F, 0x6E2A, 0,
5637+ 0x3173, 0x414C, 0xE160, 0x382F, 0, 0x4D5A, 0xE161, 0xE162,
5638+ 0x6E2B, 0x452C, 0, 0, 0xE163, 0x4178, 0x3C57, 0x6E2C,
5639+ 0xE164, 0, 0x6E2F, 0, 0xE165, 0x3D65, 0x6E2D, 0x412B,
5640+ 0x412A, 0xE166, 0x3064, 0, 0x4E4B, 0x6E31, 0, 0x4872,
5641+};
5642+static const unsigned short utf8_to_euc_E982[] = {
5643+ 0x6E33, 0x6E32, 0x6E30, 0x6364, 0x3454, 0xE167, 0, 0x6D6E,
5644+ 0xE168, 0x6E35, 0x6E34, 0xE169, 0xE16A, 0, 0xE16B, 0x6E36,
5645+ 0xE16C, 0x4D38, 0, 0, 0, 0xE16D, 0, 0xE16E,
5646+ 0xE16F, 0xE170, 0, 0xE171, 0, 0, 0, 0,
5647+ 0xE172, 0xE173, 0xE174, 0x4661, 0, 0xE175, 0x4B2E, 0,
5648+ 0x6E37, 0, 0x3C59, 0, 0, 0, 0, 0x6E38,
5649+ 0xE176, 0x6E39, 0xE177, 0xE178, 0xE179, 0x6E3A, 0xE17A, 0,
5650+ 0x4521, 0, 0, 0, 0, 0xE17B, 0xE17D, 0,
5651+};
5652+static const unsigned short utf8_to_euc_E983[] = {
5653+ 0, 0x306A, 0, 0xE17E, 0xE221, 0xE222, 0, 0xE223,
5654+ 0xE224, 0, 0x3959, 0, 0xE17C, 0, 0x4F3A, 0,
5655+ 0, 0, 0xE22D, 0, 0, 0xE225, 0, 0xE226,
5656+ 0xE227, 0xE228, 0, 0x6E3E, 0xE229, 0xE22A, 0xF46C, 0xE22B,
5657+ 0, 0x3734, 0x6E3B, 0, 0x6E3C, 0xE22C, 0, 0,
5658+ 0x4974, 0, 0, 0xE22F, 0, 0x3354, 0, 0xE230,
5659+ 0xE231, 0, 0, 0, 0xE232, 0x4D39, 0xE22E, 0x363F,
5660+ 0, 0, 0, 0, 0, 0x4554, 0xE233, 0xE234,
5661+};
5662+static const unsigned short utf8_to_euc_E984[] = {
5663+ 0xE235, 0, 0x6E3F, 0, 0xE236, 0xE237, 0xE238, 0,
5664+ 0xE239, 0, 0, 0, 0, 0xE23A, 0, 0,
5665+ 0xE23B, 0, 0x6E40, 0, 0xE23C, 0xF46E, 0xE23D, 0xE23E,
5666+ 0xE23F, 0x6E41, 0xE240, 0, 0xE241, 0, 0xE242, 0,
5667+ 0xE243, 0, 0xE245, 0xE246, 0, 0xE244, 0, 0xE247,
5668+ 0, 0xE248, 0, 0, 0, 0x4522, 0xE249, 0xE24A,
5669+ 0x6E43, 0xE24B, 0x6E42, 0, 0xE24C, 0, 0xE24D, 0xE24E,
5670+ 0, 0xE24F, 0xE250, 0, 0xE251, 0xE252, 0, 0,
5671+};
5672+static const unsigned short utf8_to_euc_E985[] = {
5673+ 0, 0, 0, 0xE253, 0, 0, 0, 0xE254,
5674+ 0xE255, 0x4653, 0x6E44, 0x3D36, 0x3C60, 0x475B, 0x4371, 0xE256,
5675+ 0, 0, 0x3C72, 0xE257, 0x3F6C, 0, 0x6E45, 0xE258,
5676+ 0x6E46, 0xE259, 0xE25A, 0xE25B, 0, 0, 0, 0,
5677+ 0, 0xE25C, 0x3F5D, 0x6E47, 0xE25D, 0x6E48, 0, 0xE25E,
5678+ 0, 0x6E49, 0x4D6F, 0, 0x3D37, 0xE25F, 0, 0,
5679+ 0, 0, 0x6E4B, 0x6E4A, 0xE260, 0x395A, 0, 0x3973,
5680+ 0x3B40, 0xE261, 0xE262, 0xE263, 0, 0, 0, 0,
5681+};
5682+static const unsigned short utf8_to_euc_E986[] = {
5683+ 0, 0xE264, 0x6E4E, 0xE265, 0, 0xE266, 0xE267, 0x3D66,
5684+ 0, 0x6E4D, 0xE268, 0x6E4C, 0, 0x4269, 0xE269, 0,
5685+ 0x386F, 0xE26A, 0x4043, 0xE26B, 0xE26C, 0xE26D, 0, 0x4830,
5686+ 0xE26E, 0, 0, 0, 0x3D39, 0, 0xE26F, 0,
5687+ 0, 0xE270, 0x6E4F, 0, 0x3E5F, 0, 0xE271, 0,
5688+ 0xE272, 0, 0x6E52, 0x6E50, 0xE273, 0xE274, 0xE275, 0x6E51,
5689+ 0xE276, 0xE277, 0xE278, 0xE279, 0x6E54, 0x6E53, 0xE27A, 0,
5690+ 0x3E7A, 0, 0x6E55, 0xE27B, 0xE27C, 0xE27D, 0, 0xE27E,
5691+};
5692+static const unsigned short utf8_to_euc_E987[] = {
5693+ 0x6E56, 0x6E57, 0xE321, 0xE322, 0, 0xE323, 0x4850, 0x3A53,
5694+ 0x3C61, 0x6E58, 0, 0x6E59, 0x4E24, 0x3D45, 0x4C6E, 0x4E4C,
5695+ 0x6E5A, 0x3662, 0, 0xE324, 0xE325, 0, 0x6E5B, 0xE326,
5696+ 0x4523, 0xE327, 0xE328, 0x6E5E, 0x3378, 0x3F4B, 0xE329, 0x6E5C,
5697+ 0, 0x6E5D, 0, 0x4460, 0xE32A, 0xE32B, 0x4B55, 0x367C,
5698+ 0, 0xE32C, 0xE32D, 0, 0xE32E, 0xE32F, 0xE330, 0xE331,
5699+ 0xE332, 0xE333, 0, 0, 0, 0x6E60, 0x6E61, 0xE334,
5700+ 0, 0xE335, 0, 0xE336, 0x6E5F, 0xE337, 0, 0x6E63,
5701+};
5702+static const unsigned short utf8_to_euc_E988[] = {
5703+ 0xE338, 0xE339, 0, 0, 0xE33A, 0xE33B, 0xE33C, 0xE33D,
5704+ 0, 0xE33E, 0xE33F, 0, 0xE340, 0x465F, 0x3343, 0,
5705+ 0xE341, 0x6E67, 0xE342, 0xE343, 0x6E64, 0x6E66, 0xE344, 0,
5706+ 0xE345, 0, 0, 0, 0xE346, 0xE347, 0x6E62, 0,
5707+ 0, 0, 0, 0xE348, 0xE349, 0xE34A, 0xE34B, 0,
5708+ 0xE34C, 0x6F4F, 0, 0, 0x6E65, 0, 0xE34D, 0xE34E,
5709+ 0xE34F, 0, 0, 0xE350, 0x4E6B, 0xE351, 0xE352, 0x385A,
5710+ 0xE353, 0xE354, 0xE355, 0, 0xE356, 0, 0xE357, 0x6E6F,
5711+};
5712+static const unsigned short utf8_to_euc_E989[] = {
5713+ 0xE358, 0, 0xE359, 0xE35A, 0x4534, 0x6E6A, 0xE35B, 0xE35C,
5714+ 0x6E6D, 0x6E6B, 0xE35D, 0x6E70, 0, 0xE35E, 0xE35F, 0xE360,
5715+ 0x6E71, 0xE361, 0, 0, 0, 0, 0, 0x6E69,
5716+ 0xE362, 0xE363, 0x6E76, 0x3174, 0xE364, 0xE365, 0x6E68, 0,
5717+ 0xE366, 0xE367, 0x482D, 0, 0x6E6C, 0xE368, 0x3E60, 0xE369,
5718+ 0xE36A, 0xE36B, 0, 0, 0, 0, 0xE36C, 0xE36D,
5719+ 0xE36E, 0x395B, 0, 0, 0, 0xE36F, 0xE370, 0xE371,
5720+ 0xE372, 0xE373, 0, 0xE374, 0xE375, 0xE376, 0x4B48, 0xE377,
5721+};
5722+static const unsigned short utf8_to_euc_E98A[] = {
5723+ 0x3664, 0, 0, 0x3D46, 0, 0x463C, 0, 0,
5724+ 0xE378, 0xE379, 0xE37A, 0, 0, 0xE37B, 0xE37C, 0,
5725+ 0, 0x412D, 0xE37D, 0x6E74, 0, 0x6E6E, 0x6E73, 0xE37E,
5726+ 0x4C43, 0xE421, 0x4438, 0x6E75, 0x6E72, 0, 0, 0xE422,
5727+ 0xE423, 0, 0, 0, 0xE424, 0xE425, 0, 0xE426,
5728+ 0xE427, 0, 0, 0xE428, 0, 0x412C, 0, 0xE429,
5729+ 0, 0, 0xE42A, 0, 0, 0, 0xE42B, 0x6E79,
5730+ 0xE42C, 0x6E78, 0xE42D, 0xE42E, 0xE42F, 0xE430, 0, 0xE431,
5731+};
5732+static const unsigned short utf8_to_euc_E98B[] = {
5733+ 0xE432, 0xE433, 0xE434, 0xE435, 0, 0xE436, 0xE437, 0xE438,
5734+ 0xE439, 0, 0, 0xE43A, 0xE43B, 0xE43C, 0xE43D, 0x6E77,
5735+ 0xE43E, 0, 0x4B2F, 0xE43F, 0, 0xE440, 0, 0xE441,
5736+ 0xE442, 0xE443, 0, 0, 0xE444, 0xE445, 0, 0xE446,
5737+ 0xE447, 0xE448, 0, 0xE449, 0x3D7B, 0xE44A, 0, 0xE44B,
5738+ 0xE44C, 0x6E7A, 0x4A5F, 0, 0xE44D, 0x3154, 0xE44E, 0,
5739+ 0xE44F, 0, 0x4946, 0x4372, 0, 0, 0, 0,
5740+ 0x3578, 0xE450, 0x6E7C, 0xE451, 0x395D, 0, 0, 0xE452,
5741+};
5742+static const unsigned short utf8_to_euc_E98C[] = {
5743+ 0xE453, 0, 0xE454, 0, 0, 0, 0x3B2C, 0,
5744+ 0xE455, 0, 0, 0, 0, 0xE456, 0, 0x6E7B,
5745+ 0x3F6D, 0xE457, 0, 0, 0xE458, 0xE459, 0, 0,
5746+ 0x3F6E, 0x6F21, 0x6F23, 0, 0xE45A, 0xE45B, 0xE45C, 0xE45D,
5747+ 0x3E7B, 0xE45E, 0x6F22, 0x6F24, 0xE45F, 0xE460, 0x3653, 0xE461,
5748+ 0x4945, 0xE462, 0xE463, 0x3C62, 0x4F23, 0, 0x6E7E, 0x3A78,
5749+ 0, 0, 0x4F3F, 0xE464, 0xE465, 0x6F26, 0xE466, 0xE467,
5750+ 0, 0, 0x6F25, 0x6F27, 0, 0, 0, 0,
5751+};
5752+static const unsigned short utf8_to_euc_E98D[] = {
5753+ 0, 0, 0, 0, 0x6E7D, 0, 0, 0xE468,
5754+ 0xE469, 0xE46A, 0, 0x4669, 0, 0x4555, 0, 0,
5755+ 0xE46B, 0xE46C, 0xE46D, 0, 0x4457, 0xE46E, 0x6F2C, 0xE46F,
5756+ 0xE470, 0, 0xE471, 0x4343, 0x6F28, 0, 0xE472, 0,
5757+ 0x6F29, 0, 0, 0, 0xE473, 0xE474, 0, 0xE475,
5758+ 0, 0xE476, 0xE477, 0, 0x372D, 0xE478, 0x6F2B, 0xE479,
5759+ 0xE47A, 0xE47B, 0, 0xE47C, 0xE47D, 0x3830, 0xE47E, 0,
5760+ 0, 0, 0xE521, 0, 0x6F2A, 0xE522, 0x3E61, 0xE523,
5761+};
5762+static const unsigned short utf8_to_euc_E98E[] = {
5763+ 0xE524, 0xE525, 0xE526, 0, 0, 0, 0, 0,
5764+ 0xE527, 0, 0xE528, 0xE529, 0x3379, 0xE52A, 0, 0xE52B,
5765+ 0, 0, 0xE52C, 0, 0x6F30, 0xE52D, 0x3A3F, 0x4179,
5766+ 0xE52E, 0, 0x444A, 0xE52F, 0, 0, 0xE530, 0,
5767+ 0, 0xE531, 0, 0xE532, 0xE533, 0, 0xE534, 0x333B,
5768+ 0xE535, 0xE53B, 0, 0xE536, 0x6F2E, 0x6F2F, 0x4443, 0,
5769+ 0x6F2D, 0, 0, 0, 0xE537, 0xE538, 0xE539, 0,
5770+ 0, 0x6F31, 0xE53A, 0, 0, 0, 0, 0,
5771+};
5772+static const unsigned short utf8_to_euc_E98F[] = {
5773+ 0, 0xE53C, 0, 0x6F37, 0xE53D, 0xE53E, 0xE53F, 0xE540,
5774+ 0x6F3A, 0xE541, 0xE542, 0xE543, 0xE544, 0xE545, 0, 0,
5775+ 0x6F39, 0x452D, 0, 0xE546, 0, 0, 0x6F32, 0x6F33,
5776+ 0x6F36, 0xE547, 0, 0, 0xE548, 0x6F38, 0xE549, 0xE54A,
5777+ 0, 0x3640, 0xE54B, 0, 0x6F3B, 0x6F35, 0xE54C, 0xE54D,
5778+ 0x6F34, 0, 0, 0, 0, 0, 0, 0,
5779+ 0, 0, 0, 0, 0, 0, 0, 0xE54F,
5780+ 0xE550, 0xE54E, 0xE551, 0xE552, 0, 0xE553, 0, 0,
5781+};
5782+static const unsigned short utf8_to_euc_E990[] = {
5783+ 0, 0xE554, 0xE555, 0x6F3F, 0xE556, 0, 0, 0x6F40,
5784+ 0xE557, 0xE558, 0, 0, 0, 0xE559, 0xE55A, 0xE55B,
5785+ 0x6F41, 0, 0, 0x6F3E, 0x6F3D, 0xE55C, 0xE55D, 0xE55E,
5786+ 0x3E62, 0x462A, 0x6F3C, 0, 0, 0, 0, 0xE55F,
5787+ 0, 0x6F45, 0, 0, 0, 0, 0, 0,
5788+ 0, 0, 0, 0x6F43, 0, 0, 0xE560, 0xE561,
5789+ 0, 0xE562, 0xE563, 0xE564, 0xE565, 0x6F44, 0x6F42, 0,
5790+ 0x4278, 0, 0x6F46, 0xE566, 0, 0xE568, 0, 0xE567,
5791+};
5792+static const unsigned short utf8_to_euc_E991[] = {
5793+ 0, 0x6F47, 0, 0xE569, 0x6F49, 0xE56A, 0, 0,
5794+ 0xE56B, 0, 0xE56C, 0, 0xE56D, 0, 0, 0,
5795+ 0, 0x3455, 0x6F48, 0x4C7A, 0, 0xE56E, 0, 0,
5796+ 0, 0xE56F, 0x6F54, 0x6F4A, 0xE570, 0, 0x6F4D, 0xE571,
5797+ 0x6F4B, 0xE572, 0x6F4C, 0xE573, 0, 0, 0, 0,
5798+ 0xE574, 0, 0x6F4E, 0xE575, 0, 0xE576, 0xE577, 0xE578,
5799+ 0x6F50, 0xE579, 0xE57A, 0, 0, 0x6F51, 0, 0x6F52,
5800+ 0, 0, 0, 0, 0x6F55, 0x6F53, 0x6F56, 0x6F58,
5801+};
5802+static const unsigned short utf8_to_euc_E992[] = {
5803+ 0, 0x6F57, 0, 0xE57C, 0xE57B, 0, 0, 0,
5804+ 0, 0, 0, 0, 0, 0, 0, 0,
5805+ 0, 0, 0, 0, 0, 0, 0, 0,
5806+ 0, 0, 0, 0, 0, 0, 0, 0,
5807+ 0, 0, 0, 0, 0, 0, 0, 0,
5808+ 0, 0, 0, 0, 0, 0, 0, 0,
5809+ 0, 0, 0, 0, 0, 0, 0, 0,
5810+ 0, 0, 0, 0, 0, 0, 0, 0,
5811+};
5812+static const unsigned short utf8_to_euc_E995[] = {
5813+ 0, 0, 0, 0, 0, 0, 0, 0,
5814+ 0, 0, 0, 0, 0, 0, 0, 0,
5815+ 0, 0, 0, 0, 0, 0, 0, 0,
5816+ 0, 0, 0, 0, 0, 0, 0, 0,
5817+ 0, 0, 0, 0, 0, 0, 0, 0,
5818+ 0, 0, 0, 0, 0, 0, 0, 0,
5819+ 0, 0, 0, 0, 0, 0, 0, 0x4439,
5820+ 0xE57D, 0xE57E, 0, 0, 0, 0, 0xE621, 0,
5821+};
5822+static const unsigned short utf8_to_euc_E996[] = {
5823+ 0x4C67, 0, 0x6F59, 0x412E, 0xE622, 0, 0, 0x6F5A,
5824+ 0xE623, 0x4A44, 0x6F5B, 0x332B, 0xE624, 0xE625, 0xE626, 0x313C,
5825+ 0, 0x3457, 0xF471, 0x3456, 0x6F5C, 0, 0x6F5D, 0,
5826+ 0x6F5E, 0x6F5F, 0, 0, 0, 0xE627, 0xE628, 0xE629,
5827+ 0x6F60, 0xE62A, 0x3458, 0x3355, 0x395E, 0x4836, 0xE62B, 0x6F62,
5828+ 0x6F61, 0xE62C, 0, 0xE62D, 0xE62E, 0x6F63, 0, 0,
5829+ 0, 0, 0x315C, 0, 0xE62F, 0, 0xE630, 0,
5830+ 0, 0x6F66, 0xE631, 0x6F65, 0x6F64, 0xE632, 0x6F67, 0xE633,
5831+};
5832+static const unsigned short utf8_to_euc_E997[] = {
5833+ 0, 0, 0, 0x6F6A, 0, 0, 0xE634, 0x3047,
5834+ 0xE635, 0xE636, 0x6F68, 0xE637, 0x6F6C, 0x6F6B, 0, 0,
5835+ 0xE638, 0xE639, 0xE63A, 0xE63B, 0x6F6E, 0x6F6D, 0x6F6F, 0,
5836+ 0x462E, 0xE63C, 0xE63D, 0, 0x6F70, 0xE63E, 0xE63F, 0xE640,
5837+ 0xE641, 0x6F71, 0x6F73, 0, 0xE642, 0x6F72, 0xE643, 0,
5838+ 0, 0, 0, 0, 0, 0, 0, 0,
5839+ 0, 0, 0, 0, 0, 0, 0, 0,
5840+ 0, 0, 0, 0, 0, 0, 0, 0,
5841+};
5842+static const unsigned short utf8_to_euc_E998[] = {
5843+ 0, 0, 0, 0, 0, 0, 0, 0,
5844+ 0, 0, 0, 0, 0, 0, 0, 0,
5845+ 0, 0, 0, 0, 0, 0, 0, 0,
5846+ 0, 0, 0, 0, 0x496C, 0xE644, 0xE645, 0,
5847+ 0, 0x6F74, 0xE646, 0, 0xE647, 0xE648, 0xE649, 0,
5848+ 0x6F75, 0, 0x3A65, 0, 0xE64A, 0, 0x6F76, 0x6F77,
5849+ 0, 0xE64B, 0x4B49, 0xE64C, 0, 0, 0, 0xE64D,
5850+ 0xE64E, 0xE64F, 0xE650, 0x414B, 0xE651, 0xE652, 0, 0x3024,
5851+};
5852+static const unsigned short utf8_to_euc_E999[] = {
5853+ 0x424B, 0xE653, 0x6F78, 0, 0x496D, 0, 0, 0,
5854+ 0, 0, 0, 0x6F7B, 0x6F79, 0x395F, 0, 0x6F7A,
5855+ 0x3842, 0, 0xE654, 0, 0xE655, 0, 0xE656, 0xE657,
5856+ 0xE658, 0, 0, 0x4A45, 0x6F7D, 0x7021, 0x6F7E, 0x7022,
5857+ 0, 0xE659, 0x3121, 0x3F58, 0x3D7C, 0x3459, 0x7023, 0,
5858+ 0, 0, 0x4766, 0, 0x7025, 0, 0xE65A, 0,
5859+ 0x3122, 0, 0x7024, 0x4444, 0xE65B, 0x4E4D, 0x462B, 0x6F7C,
5860+ 0x4E26, 0, 0x3831, 0xE65C, 0xE65D, 0x4D5B, 0xE65E, 0xE65F,
5861+};
5862+static const unsigned short utf8_to_euc_E99A[] = {
5863+ 0, 0xE660, 0xE661, 0xE662, 0xE663, 0x3679, 0x4E34, 0,
5864+ 0x3728, 0xE664, 0x4262, 0x6721, 0, 0x7026, 0x332C, 0x3F6F,
5865+ 0, 0xE665, 0, 0, 0x3356, 0x7028, 0xE666, 0x7029,
5866+ 0x7027, 0x3764, 0xE667, 0x3A5D, 0x3E63, 0xE668, 0, 0xE669,
5867+ 0x3123, 0, 0, 0x4E59, 0xE66A, 0xE66B, 0xE66C, 0x702B,
5868+ 0x6E2E, 0xE66D, 0x702A, 0, 0, 0, 0xE66E, 0xE66F,
5869+ 0x702E, 0x702C, 0x702D, 0xE670, 0x702F, 0, 0x7030, 0x4E6C,
5870+ 0x7031, 0x7032, 0xE671, 0x4049, 0x483B, 0, 0, 0,
5871+};
5872+static const unsigned short utf8_to_euc_E99B[] = {
5873+ 0x3F7D, 0x3467, 0, 0, 0x4D3A, 0x326D, 0x3D38, 0x385B,
5874+ 0, 0x7035, 0xE672, 0x7034, 0x3B73, 0x7036, 0x7033, 0,
5875+ 0, 0x3B28, 0xE673, 0, 0, 0x703A, 0x6A2D, 0,
5876+ 0xE675, 0x5256, 0xE676, 0x3F77, 0x7038, 0xE677, 0xE678, 0xE679,
5877+ 0, 0, 0x4E25, 0x4671, 0, 0, 0, 0,
5878+ 0x312B, 0xE67A, 0x4063, 0x3C36, 0, 0, 0, 0xE67B,
5879+ 0x4A37, 0xE67C, 0x3140, 0, 0, 0, 0x4E6D, 0x4D6B,
5880+ 0, 0x703B, 0xE67D, 0x4545, 0, 0, 0, 0,
5881+};
5882+static const unsigned short utf8_to_euc_E99C[] = {
5883+ 0x3C7B, 0, 0xE67E, 0xE721, 0x703C, 0xE722, 0x703D, 0x3F4C,
5884+ 0x703E, 0xE723, 0x4E6E, 0, 0, 0x7039, 0x7040, 0x7042,
5885+ 0, 0x7041, 0, 0x703F, 0, 0, 0x7043, 0,
5886+ 0, 0x7044, 0xE724, 0xE725, 0x417A, 0xE726, 0x3262, 0,
5887+ 0, 0xE727, 0xE728, 0xE729, 0x7045, 0, 0, 0x4C38,
5888+ 0xE72A, 0, 0x7046, 0, 0, 0, 0, 0,
5889+ 0x7047, 0xE72B, 0x4F2A, 0xE72C, 0, 0, 0, 0,
5890+ 0x5B31, 0x7048, 0, 0xF474, 0, 0x7049, 0x704A, 0,
5891+};
5892+static const unsigned short utf8_to_euc_E99D[] = {
5893+ 0, 0xE72D, 0x704E, 0xE72E, 0x704B, 0, 0x704C, 0,
5894+ 0x704D, 0x704F, 0xE72F, 0, 0, 0xF475, 0xE730, 0xE731,
5895+ 0, 0xF476, 0x4044, 0, 0, 0xE732, 0x4C77, 0xE733,
5896+ 0xE734, 0x4045, 0xE735, 0xE736, 0x7050, 0, 0x4873, 0,
5897+ 0x7051, 0x7353, 0x4C4C, 0xE737, 0x7052, 0, 0x7053, 0xE738,
5898+ 0x7054, 0x3357, 0xE739, 0x7056, 0, 0x3F59, 0xE73A, 0,
5899+ 0, 0x7057, 0, 0xE73B, 0x3724, 0, 0xE73C, 0xE73D,
5900+ 0xE73E, 0x7058, 0x705C, 0xE73F, 0x705A, 0xE740, 0, 0xE741,
5901+};
5902+static const unsigned short utf8_to_euc_E99E[] = {
5903+ 0xE742, 0x705B, 0, 0, 0x3373, 0x7059, 0x705D, 0,
5904+ 0, 0xE743, 0, 0x705E, 0, 0x3048, 0, 0x705F,
5905+ 0x7060, 0, 0, 0, 0, 0xE744, 0xE745, 0xE746,
5906+ 0x3E64, 0xE747, 0xE748, 0, 0x7061, 0, 0xE749, 0xE74A,
5907+ 0x3547, 0, 0xE74B, 0x7064, 0, 0, 0x7063, 0,
5908+ 0x7062, 0, 0, 0x6B71, 0xE74C, 0x4A5C, 0xE74D, 0,
5909+ 0, 0xE74E, 0xE74F, 0x7065, 0x7066, 0xE750, 0xE751, 0,
5910+ 0xE752, 0xE753, 0xE754, 0, 0xE755, 0, 0xE756, 0xE757,
5911+};
5912+static const unsigned short utf8_to_euc_E99F[] = {
5913+ 0, 0xE758, 0, 0x7067, 0xE759, 0xE75A, 0x7068, 0xE75B,
5914+ 0x7069, 0xE75C, 0xE75D, 0x706A, 0xE75E, 0xE75F, 0xE760, 0,
5915+ 0xE761, 0xE762, 0, 0x345A, 0xE763, 0, 0, 0xE764,
5916+ 0xE765, 0xE766, 0, 0xE76A, 0x706B, 0xE767, 0xE768, 0,
5917+ 0xE769, 0xE76B, 0, 0, 0xE76C, 0, 0, 0,
5918+ 0, 0, 0, 0, 0, 0x706C, 0x4723, 0xE76D,
5919+ 0, 0xE76E, 0x706E, 0x323B, 0xE76F, 0x7071, 0x7070, 0xE770,
5920+ 0xE771, 0, 0xE772, 0x3124, 0, 0, 0, 0x3641,
5921+};
5922+static const unsigned short utf8_to_euc_E9A0[] = {
5923+ 0, 0x4A47, 0x443A, 0x3A22, 0, 0x3960, 0x3D67, 0xE773,
5924+ 0x3F5C, 0, 0xE774, 0, 0x7073, 0xE776, 0xE777, 0x7072,
5925+ 0x4D42, 0x3468, 0x4852, 0x465C, 0xE778, 0, 0xE779, 0x3F7C,
5926+ 0x4E4E, 0xE775, 0x375B, 0, 0xE77A, 0, 0xE77B, 0,
5927+ 0xE77C, 0x7076, 0, 0xE77D, 0x7075, 0xE828, 0xE77E, 0,
5928+ 0, 0, 0, 0xE821, 0x4B4B, 0x462C, 0xE822, 0xE823,
5929+ 0xE824, 0, 0xE825, 0xE826, 0x3150, 0xE827, 0, 0x7077,
5930+ 0x7074, 0, 0, 0x4951, 0x4D6A, 0x7078, 0xE829, 0,
5931+};
5932+static const unsigned short utf8_to_euc_E9A1[] = {
5933+ 0, 0, 0, 0, 0xE82A, 0, 0x7079, 0xE82B,
5934+ 0, 0, 0xE82C, 0x707B, 0x426A, 0x335B, 0x335C, 0x707A,
5935+ 0, 0xE82D, 0xE82E, 0xE82F, 0x3469, 0x3832, 0xE830, 0xE831,
5936+ 0x346A, 0xE832, 0xE833, 0x453F, 0, 0, 0x4E60, 0,
5937+ 0, 0, 0xE834, 0xE835, 0, 0xE836, 0xE837, 0x385C,
5938+ 0, 0, 0xE838, 0x707C, 0xE839, 0, 0, 0x707D,
5939+ 0x707E, 0x7121, 0, 0x7123, 0x7122, 0, 0, 0,
5940+ 0, 0, 0, 0, 0, 0, 0, 0,
5941+};
5942+static const unsigned short utf8_to_euc_E9A2[] = {
5943+ 0, 0, 0, 0, 0, 0, 0, 0,
5944+ 0, 0, 0, 0, 0, 0, 0, 0,
5945+ 0, 0, 0, 0, 0, 0, 0, 0,
5946+ 0, 0, 0, 0, 0, 0, 0, 0,
5947+ 0, 0, 0, 0, 0, 0, 0, 0,
5948+ 0x4977, 0, 0x7124, 0xE83A, 0, 0xE83B, 0xE83C, 0x7125,
5949+ 0xE83D, 0x7126, 0, 0, 0xE83E, 0, 0x7127, 0xE83F,
5950+ 0xE840, 0, 0xE841, 0xE842, 0, 0, 0, 0xE843,
5951+};
5952+static const unsigned short utf8_to_euc_E9A3[] = {
5953+ 0, 0, 0xE844, 0x7129, 0x7128, 0xE845, 0x712A, 0,
5954+ 0xE846, 0, 0, 0, 0xE847, 0, 0, 0,
5955+ 0, 0, 0, 0, 0, 0, 0, 0,
5956+ 0, 0, 0, 0x4874, 0x664C, 0, 0, 0x3F29,
5957+ 0, 0xE848, 0x3532, 0xE849, 0, 0xE84A, 0xE84B, 0xE84C,
5958+ 0, 0x712B, 0xE84D, 0x712C, 0, 0x522C, 0x5D3B, 0x4853,
5959+ 0, 0, 0x307B, 0xE84E, 0x303B, 0, 0xE84F, 0,
5960+ 0, 0, 0, 0, 0x3B74, 0x4B30, 0x3E7E, 0,
5961+};
5962+static const unsigned short utf8_to_euc_E9A4[] = {
5963+ 0, 0, 0xE850, 0x712D, 0, 0x4C5F, 0, 0xE851,
5964+ 0xE852, 0x712E, 0x4D5C, 0, 0x3142, 0, 0, 0,
5965+ 0x3B41, 0xE853, 0x712F, 0x326E, 0x7130, 0xE854, 0xE855, 0xE856,
5966+ 0x7131, 0, 0xE857, 0xE858, 0xE859, 0x7133, 0x7134, 0xE85A,
5967+ 0x7136, 0x7132, 0xE85B, 0, 0x7135, 0, 0xE85C, 0xE85D,
5968+ 0x345B, 0, 0, 0xE85E, 0x7137, 0, 0x7138, 0,
5969+ 0, 0xE85F, 0xE860, 0xE861, 0xE862, 0xE863, 0, 0,
5970+ 0, 0xE864, 0xE865, 0xE866, 0xE867, 0x7139, 0x713A, 0,
5971+};
5972+static const unsigned short utf8_to_euc_E9A5[] = {
5973+ 0xE868, 0xE869, 0x713B, 0, 0, 0x713D, 0xE86A, 0xE86B,
5974+ 0xE86C, 0x713C, 0, 0x713F, 0x7142, 0xE86D, 0xE86E, 0,
5975+ 0x713E, 0x7140, 0x7141, 0, 0xE86F, 0x7143, 0, 0x3642,
5976+ 0xE870, 0xE871, 0, 0xE872, 0xE873, 0, 0xE874, 0xE875,
5977+ 0xE876, 0, 0, 0, 0, 0, 0, 0,
5978+ 0, 0, 0, 0, 0, 0, 0, 0,
5979+ 0, 0, 0, 0, 0, 0, 0, 0,
5980+ 0, 0, 0, 0, 0, 0, 0, 0,
5981+};
5982+static const unsigned short utf8_to_euc_E9A6[] = {
5983+ 0, 0, 0, 0, 0, 0, 0, 0,
5984+ 0, 0, 0, 0, 0, 0, 0, 0,
5985+ 0, 0, 0, 0, 0, 0, 0x3C73, 0x7144,
5986+ 0x7145, 0x3961, 0, 0xE877, 0, 0xE878, 0xF47A, 0xE879,
5987+ 0, 0, 0, 0, 0, 0x7146, 0xE87A, 0,
5988+ 0x333E, 0, 0, 0, 0x474F, 0x7147, 0x7148, 0,
5989+ 0xE87B, 0xE87C, 0xE87D, 0x435A, 0x466B, 0xE87E, 0,

Part of diff was cut off due to size limit. Use your local client to view the full diff.

Show on old repository browser