[php-i18n-commits] cvs commit: php4/ext/mbstring/mbfl codeset.c filter_ja.c

Back to archive index

Tsukada ttsuk****@users*****
2002年 8月 10日 (土) 11:40:38 JST


ttsukada    02/08/10 11:40:38

  Modified:    ext/mbstring/mbfl codeset.c filter_ja.c
  Log:
  improved CP932 mapping table
  
  Revision  Changes    Path
  1.3       +2 -2      php4/ext/mbstring/mbfl/codeset.c
  
  Index: codeset.c
  ===================================================================
  RCS file: /cvsroot/php-i18n/php4/ext/mbstring/mbfl/codeset.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- codeset.c	30 May 2002 17:42:44 -0000	1.2
  +++ codeset.c	10 Aug 2002 02:40:37 -0000	1.3
  @@ -127,8 +127,8 @@
   };
   
   static const mbfl_codeset cp932 = {
  -	"CP932",
  -	"CP932",
  +	"WINDOWS_CP932",
  +	"W932",
   	MBFL_WCSPLANE_WINCP932,
   	MBFL_MEMORY_TYPE_CONST
   };
  
  
  
  1.3       +1984 -697 php4/ext/mbstring/mbfl/filter_ja.c
  
  Index: filter_ja.c
  ===================================================================
  RCS file: /cvsroot/php-i18n/php4/ext/mbstring/mbfl/filter_ja.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- filter_ja.c	25 May 2002 16:32:19 -0000	1.2
  +++ filter_ja.c	10 Aug 2002 02:40:37 -0000	1.3
  @@ -82,25 +82,147 @@
   
   
   /*
  + * convert table
  + */
  +static inline int
  +convert_table_mbtowc(mbfl_convert_table **table_list, int index, int code)
  +{
  +	int wchar, min, max, pos, val;
  +	mbfl_convert_table *convert_table;
  +
  +	wchar = -1;
  +	while ((convert_table = *table_list++) != NULL) {
  +		switch (convert_table->type) {
  +		case MBFL_TABLE_TYPE_LOOKUP:
  +			if (index >= convert_table->min && index < convert_table->max) {
  +				wchar = convert_table->table[index - convert_table->min];
  +				if (wchar >= 0) {
  +					goto exit;
  +				}
  +			}
  +			break;
  +
  +		case MBFL_TABLE_TYPE_SORT:
  +			min = 0;
  +			max = convert_table->size/2 - 1;
  +			if (max <= 0) {
  +				break;
  +			}
  +			while (1) {
  +				pos = min + max;
  +				pos &= ~1;
  +				val = convert_table->table[pos];
  +				if (code == val) {
  +					wchar = convert_table->table[pos + 1];
  +					goto exit;
  +				}
  +				if (code > val) {
  +					min = pos/2 + 1;
  +				} else {
  +					max = pos/2 - 1;
  +				}
  +				if (min > max) {
  +					break;
  +				}
  +			}
  +			break;
  +
  +		case MBFL_TABLE_TYPE_PAIR:
  +			pos = convert_table->size - 2;
  +			while (pos >= 0) {
  +				if (code == convert_table->table[pos]) {
  +					wchar = convert_table->table[pos + 1];
  +					goto exit;
  +				}
  +				pos -= 2;
  +			}
  +			break;
  +		}
  +	}
  +
  +exit:
  +	return wchar;
  +}
  +
  +
  +/*
  + * convert table
  + */
  +static inline int
  +convert_table_wctomb(mbfl_convert_table **table_list, int wchar)
  +{
  +	int mbc, min, max, pos, val;
  +	mbfl_convert_table *convert_table;
  +
  +	mbc = -1;
  +	while ((convert_table = *table_list++) != NULL) {
  +		switch (convert_table->type) {
  +		case MBFL_TABLE_TYPE_LOOKUP:
  +			if (wchar >= convert_table->min && wchar < convert_table->max) {
  +				mbc = convert_table->table[wchar - convert_table->min];
  +				if (mbc >= 0) {
  +					goto exit;
  +				}
  +			}
  +			break;
  +
  +		case MBFL_TABLE_TYPE_SORT:
  +			min = 0;
  +			max = convert_table->size/2 - 1;
  +			while (1) {
  +				pos = min + max;
  +				pos &= ~1;
  +				val = convert_table->table[pos];
  +				if (wchar == val) {
  +					mbc = convert_table->table[pos + 1];
  +					goto exit;
  +				}
  +				if (wchar > val) {
  +					min = pos/2 + 1;
  +				} else {
  +					max = pos/2 - 1;
  +				}
  +				if (min > max) {
  +					break;
  +				}
  +			}
  +			break;
  +
  +		case MBFL_TABLE_TYPE_PAIR:
  +			pos = convert_table->size - 1;
  +			while (pos > 0) {
  +				if (wchar == convert_table->table[pos]) {
  +					mbc = convert_table->table[pos - 1];
  +					goto exit;
  +				}
  +				pos -= 2;
  +			}
  +			break;
  +		}
  +	}
  +
  +exit:
  +	return mbc;
  +}
  +
  +
  +/*
    * EUC-JP => wchar
    */
   static int
   filt_conv_eucjp_wchar(int c, mbfl_convert_filter *filter)
   {
  -	int c1, i, j, code, index, wchar;
  -	const mbfl_pair_table *pair_table;
  -	const mbfl_lookup_table *lookup_table;
  +	int c1, code, index, wchar;
   
   	c1 = 0;
   	code = -1;
   	index = -1;
  -	wchar = -1;
   	switch (filter->status) {
   	case 0:
   		code = c;
   		if (c >= 0 && c < 0x80) {	/* G0 */
   			index = c;
  -		} else if (c > 0xa0 && c < 0xff) {	/* G1 first char */
  +		} else if (c >= 0xa1 && c < 0xff) {	/* G1 first char */
   			filter->status = 1;
   			filter->cache = c;
   			return c;
  @@ -130,9 +252,9 @@
   	case 2:	/* G2 first char */
   		filter->status = 0;
   		code =  0x8e00 | c;
  -		if (c > 0xa0 && c < 0xe0) {
  +		if (c >= 0xa1 && c < 0xe0) {
   			index = c | MBFL_WCSPLANE_JIS0201;
  -		} else if ((c >= 0 && c < 0x21) || c >= 0x7f) {		/* CTLs */
  +		} else if ((c >= 0 && c < 0x21) || c == 0x7f) {		/* CTLs */
   			code = c;
   			index = c;
   		}
  @@ -153,7 +275,7 @@
   		filter->status = 0;
   		c1 = filter->cache;
   		code = 0x8f0000 | (c1 << 8) | c;
  -		if (c1 > 0xa0 && c1 < 0xff && c > 0xa0 && c < 0xff) {
  +		if (c1 >= 0xa1 && c1 < 0xff && c >= 0xa1 && c < 0xff) {
   			index = (c1 - 0xa1)*94 + c - 0xa1 + MBFL_WCSPLANE_JIS0212;
   		} else if ((c >= 0 && c < 0x21) || c == 0x7f) {		/* CTLs */
   			code = c;
  @@ -166,55 +288,23 @@
   		return c;
   	}
   
  -	if (filter->pair_table_list != NULL && code >= 0) {
  -		i = 0;
  -		while ((pair_table = filter->pair_table_list[i++]) != NULL) {
  -			j = pair_table->size - 1;
  -			while (j >= 0) {
  -				if (code == pair_table->table[j].mb) {
  -					wchar = pair_table->table[j].uc;
  -					goto output;
  -				}
  -				j--;
  -			}
  -		}
  -	}
  -	if (filter->lookup_table_list != NULL && index >= 0) {
  -		i = 0;
  -		while ((lookup_table = filter->lookup_table_list[i++]) != NULL) {
  -			if (index >= lookup_table->min && index < lookup_table->max) {
  -				wchar = lookup_table->table[index - lookup_table->min];
  -				if (wchar >= 0) {
  -					goto output;
  -				}
  -			}
  +	wchar = convert_table_mbtowc(filter->table_list, index, code);
  +	if (wchar < 0) {
  +		wchar = index & ~MBFL_WCSPLANE_MASK;
  +		if (code >= 0 && code < 0xa0) {	/* G0 or CR */
  +			wchar = code;
  +		} else if (wchar == MBFL_WCSPLANE_JIS0208) {	/* G1 */
  +			wchar |= ((c1 << 8) | c) & 0x7f7f;
  +		} else if (wchar == MBFL_WCSPLANE_JIS0201) {	/* G2 */
  +			wchar |= c;
  +		} else if (wchar == MBFL_WCSPLANE_JIS0212) {	/* G3 */
  +			wchar |= ((c1 << 8) | c) & 0x7f7f;
  +		} else {
  +			wchar = code & MBFL_WCSGROUP_MASK;
  +			wchar |= MBFL_WCSGROUP_THROUGH;
   		}
   	}
  -	wchar = (index & ~MBFL_WCSPLANE_MASK) | (((c1 << 8) | c) & 0x7f7f);
  -	if (wchar >= 0 && wchar < 0xa0) {	/* G0 */
  -		;
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2330) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x233a)) {	/* FULLWIDTH DIGIT */
  -		wchar += 0xff10 - (MBFL_WCSPLANE_JIS0208 + 0x2330);
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2341) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x235b)) {	/* FULLWIDTH LATIN CAPITAL LETTER */
  -		wchar += 0xff21 - (MBFL_WCSPLANE_JIS0208 + 0x2341);
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2361) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x237b)) {	/* FULLWIDTH LATIN SMALL LETTER */
  -		wchar += 0xff41 - (MBFL_WCSPLANE_JIS0208 + 0x2361);
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2421) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x2474)) {	/* HIRAGANA LETTER */
  -		wchar += 0x3041 - (MBFL_WCSPLANE_JIS0208 + 0x2421);
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2521) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x2577)) {	/* KATAKANA LETTER */
  -		wchar += 0x30a1 - (MBFL_WCSPLANE_JIS0208 + 0x2521);
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0201 + 0x21) && wchar < (MBFL_WCSPLANE_JIS0201 + 0x60)) {		/* HALFWIDTH KATAKANA */
  -		wchar += 0xff61 - (MBFL_WCSPLANE_JIS0201 + 0x21);
  -	} else if (wchar >= MBFL_WCSPLANE_JIS0208 && wchar < (MBFL_WCSPLANE_JIS0208 + MBFL_WCSPLANE_SIZE)) {	/* G1 */
  -		;
  -	} else if (wchar >= MBFL_WCSPLANE_JIS0212 && wchar < (MBFL_WCSPLANE_JIS0212 + MBFL_WCSPLANE_SIZE)) {	/* G3 */
  -		;
  -	} else {
  -		wchar = code & MBFL_WCSGROUP_MASK;
  -		wchar |= MBFL_WCSGROUP_THROUGH;
  -	}
   
  -output:
   	CK((*filter->output_function)(wchar, filter->stream_resource));
   	return c;
   }
  @@ -225,55 +315,16 @@
   static int
   filt_conv_wchar_eucjp(int c, mbfl_convert_filter *filter)
   {
  -	int mbc, i, j;
  -	const mbfl_pair_table *pair_table;
  -	const mbfl_lookup_table *lookup_table;
  +	int mbc;
   
  -	mbc = -1;
  -	if (filter->pair_table_list != NULL) {
  -		i = 0;
  -		while ((pair_table = filter->pair_table_list[i++]) != NULL) {
  -			j = pair_table->size - 1;
  -			while (j >= 0) {
  -				if (c == pair_table->table[j].uc) {
  -					mbc = pair_table->table[j].mb;
  -					goto output;
  -				}
  -				j--;
  -			}
  -		}
  -	}
  -	if (filter->lookup_table_list != NULL) {
  -		i = 0;
  -		while ((lookup_table = filter->lookup_table_list[i++]) != NULL) {
  -			if (c >= lookup_table->min && c < lookup_table->max) {
  -				mbc = lookup_table->table[c - lookup_table->min];
  -				if (mbc >= 0) {
  -					goto output;
  -				}
  -			}
  -		}
  -	}
  -	if (c >= 0xff10 && c < 0xff20) {			/* FULLWIDTH DIGIT */
  -		mbc = c - 0xff10 + (MBFL_WCSPLANE_JIS0208 + 0x2330);
  -	} else if (c >= 0xff21 && c < 0xff3b) {		/* FULLWIDTH LATIN CAPITAL LETTER */
  -		mbc = c - 0xff21 + (MBFL_WCSPLANE_JIS0208 + 0x2341);
  -	} else if (c >= 0xff41 && c < 0xff5b) {		/* FULLWIDTH LATIN SMALL LETTER */
  -		mbc = c - 0xff41 + (MBFL_WCSPLANE_JIS0208 + 0x2361);
  -	} else if (c >= 0x3041 && c < 0x3094) {		/* HIRAGANA LETTER */
  -		mbc = c - 0x3041 + (MBFL_WCSPLANE_JIS0208 + 0x2421);
  -	} else if (c >= 0x30a1 && c < 0x30f7) {		/* KATAKANA LETTER */
  -		mbc = c - 0x30a1 + (MBFL_WCSPLANE_JIS0208 + 0x2521);
  -	} else if (c >= 0xff61 && c < 0xffa0) {		/* HALFWIDTH KATAKANA */
  -		mbc = c - 0xff61 + (MBFL_WCSPLANE_JIS0201 + 0xa1);
  -	} else {
  +	mbc = convert_table_wctomb(filter->table_list, c);
  +	if (mbc < 0) {
   		mbc = c;
   	}
   
  -output:
  -	if (mbc >= 0 && mbc < 0x80) {	/* latin */
  +	if (mbc >= 0 && mbc < 0x80) {	/* ASCII */
   		CK((*filter->output_function)(mbc, filter->stream_resource));
  -	} else if (mbc >= MBFL_WCSPLANE_JIS0208 && mbc < (MBFL_WCSPLANE_JIS0208 + 0x7f00)) {
  +	} else if (mbc >= MBFL_WCSPLANE_JIS0208 && mbc < (MBFL_WCSPLANE_JIS0208 + 0x7f00)) {		/* kanji */
   		CK((*filter->output_function)(((mbc >> 8) & 0xff) | 0x80, filter->stream_resource));
   		CK((*filter->output_function)((mbc & 0xff) | 0x80, filter->stream_resource));
   	} else if (mbc >= (MBFL_WCSPLANE_JIS0201 + 0xa1) && mbc < (MBFL_WCSPLANE_JIS0201 + 0xe0)) {	/* kana */
  @@ -281,7 +332,7 @@
   		CK((*filter->output_function)(mbc & 0xff, filter->stream_resource));
   	} else if (mbc >= MBFL_WCSPLANE_JIS0201 && mbc < (MBFL_WCSPLANE_JIS0201 + 0x80)) {			/* latin */
   		CK((*filter->output_function)(mbc & 0xff, filter->stream_resource));
  -	} else if (mbc >= MBFL_WCSPLANE_JIS0212 && mbc < (MBFL_WCSPLANE_JIS0212 + 0x7f00)) {
  +	} else if (mbc >= MBFL_WCSPLANE_JIS0212 && mbc < (MBFL_WCSPLANE_JIS0212 + 0x7f00)) {		/* kanji */
   		CK((*filter->output_function)(0x8f, filter->stream_resource));
   		CK((*filter->output_function)(((mbc >> 8) & 0xff) | 0x80, filter->stream_resource));
   		CK((*filter->output_function)((mbc & 0xff) | 0x80, filter->stream_resource));
  @@ -303,16 +354,13 @@
   static int
   filt_conv_sjis_wchar(int c, mbfl_convert_filter *filter)
   {
  -	int c1, j1, j2, i, j, code, index, wchar;
  -	const mbfl_pair_table *pair_table;
  -	const mbfl_lookup_table *lookup_table;
  +	int c1, j1, j2, code, index, wchar;
   
   	c1 = 0;
   	j1 = 0;
   	j2 = 0;
   	code = -1;
   	index = -1;
  -	wchar = -1;
   	switch (filter->status) {
   	case 0:
   		code = c;
  @@ -345,53 +393,22 @@
   		return c;
   	}
   
  -	if (filter->pair_table_list != NULL && code >= 0) {
  -		i = 0;
  -		while ((pair_table = filter->pair_table_list[i++]) != NULL) {
  -			j = pair_table->size - 1;
  -			while (j >= 0) {
  -				if (code == pair_table->table[j].mb) {
  -					wchar = pair_table->table[j].uc;
  -					goto output;
  -				}
  -				j--;
  -			}
  -		}
  -	}
  -	if (filter->lookup_table_list != NULL && index >= 0) {
  -		i = 0;
  -		while ((lookup_table = filter->lookup_table_list[i++]) != NULL) {
  -			if (index >= lookup_table->min && index < lookup_table->max) {
  -				wchar = lookup_table->table[index - lookup_table->min];
  -				if (wchar >= 0) {
  -					goto output;
  -				}
  -			}
  +	wchar = convert_table_mbtowc(filter->table_list, index, code);
  +	if (wchar < 0) {
  +		index &= ~MBFL_WCSPLANE_MASK;
  +		wchar = (j1 << 8) | j2;
  +		if (code >= 0 && code < 0x80) {	/* latin */
  +			wchar = code;
  +		} else if (index == MBFL_WCSPLANE_JIS0208 && wchar < 0x7f00) {	/* kanji */
  +			wchar |= index;
  +		} else if (index == MBFL_WCSPLANE_JIS0201) {	/* kana */
  +			wchar = index | code;
  +		} else {
  +			wchar = code & MBFL_WCSGROUP_MASK;
  +			wchar |= MBFL_WCSGROUP_THROUGH;
   		}
   	}
  -	wchar = (index & ~MBFL_WCSPLANE_MASK) | ((j1 << 8) | j2);
  -	if (index >= 0 && index < 0x80) {	/* latin */
  -		wchar = index;
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2330) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x233a)) {	/* FULLWIDTH DIGIT */
  -		wchar += 0xff10 - (MBFL_WCSPLANE_JIS0208 + 0x2330);
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2341) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x235b)) {	/* FULLWIDTH LATIN CAPITAL LETTER */
  -		wchar += 0xff21 - (MBFL_WCSPLANE_JIS0208 + 0x2341);
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2361) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x237b)) {	/* FULLWIDTH LATIN SMALL LETTER */
  -		wchar += 0xff41 - (MBFL_WCSPLANE_JIS0208 + 0x2361);
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2421) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x2474)) {	/* HIRAGANA LETTER */
  -		wchar += 0x3041 - (MBFL_WCSPLANE_JIS0208 + 0x2421);
  -	} else if (wchar >= (MBFL_WCSPLANE_JIS0208 + 0x2521) && wchar < (MBFL_WCSPLANE_JIS0208 + 0x2577)) {	/* KATAKANA LETTER */
  -		wchar += 0x30a1 - (MBFL_WCSPLANE_JIS0208 + 0x2521);
  -	} else if (wchar >= MBFL_WCSPLANE_JIS0208 && wchar < (MBFL_WCSPLANE_JIS0208 + MBFL_WCSPLANE_SIZE)) {	/* kanji */
  -		;
  -	} else if (index >= (MBFL_WCSPLANE_JIS0201 + 0xa1) && index < (MBFL_WCSPLANE_JIS0201 + 0xe0)) {	/* HALFWIDTH KATAKANA */
  -		wchar = index + 0xff61 - (MBFL_WCSPLANE_JIS0201 + 0xa1);
  -	} else {
  -		wchar = code & MBFL_WCSGROUP_MASK;
  -		wchar |= MBFL_WCSGROUP_THROUGH;
  -	}
   
  -output:
   	CK((*filter->output_function)(wchar, filter->stream_resource));
   	return c;
   }
  @@ -402,55 +419,293 @@
   static int
   filt_conv_wchar_sjis(int c, mbfl_convert_filter *filter)
   {
  -	int c1, c2, s1, s2, mbc, i, j;
  -	const mbfl_pair_table *pair_table;
  -	const mbfl_lookup_table *lookup_table;
  +	int c1, c2, s1, s2, mbc;
   
  -	mbc = -1;
  -	if (filter->pair_table_list != NULL) {
  -		i = 0;
  -		while ((pair_table = filter->pair_table_list[i++]) != NULL) {
  -			j = pair_table->size - 1;
  -			while (j >= 0) {
  -				if (c == pair_table->table[j].uc) {
  -					mbc = pair_table->table[j].mb;
  -					goto output;
  -				}
  -				j--;
  -			}
  +	mbc = convert_table_wctomb(filter->table_list, c);
  +	if (mbc < 0) {
  +		mbc = c;
  +	}
  +
  +	if (mbc >= 0 && mbc < 0x80) {	/* latin */
  +		CK((*filter->output_function)(mbc, filter->stream_resource));
  +	} else if (mbc >= MBFL_WCSPLANE_JIS0208 && mbc < (MBFL_WCSPLANE_JIS0208 + 0x7f00)) {
  +		c1 = (mbc >> 8) & 0xff;
  +		c2 = mbc & 0xff;
  +		SJIS_ENCODE(c1, c2, s1, s2);
  +		CK((*filter->output_function)(s1, filter->stream_resource));
  +		CK((*filter->output_function)(s2, filter->stream_resource));
  +	} else if ((mbc >= (MBFL_WCSPLANE_JIS0201) && mbc < (MBFL_WCSPLANE_JIS0201 + 0x80)) ||		/* latin */
  +	   (mbc >= (MBFL_WCSPLANE_JIS0201 + 0xa1) && mbc < (MBFL_WCSPLANE_JIS0201 + 0xe0)) ) {		/* kana */
  +		CK((*filter->output_function)(mbc & 0xff, filter->stream_resource));
  +	} else {
  +		if ((filter->mode & MBFL_CONVFILTER_ILLEGAL_MODE_NONE) == 0) {
  +			CK(mbfl_filt_conv_illegal_output(c, filter));
   		}
   	}
  -	if (filter->lookup_table_list != NULL) {
  -		i = 0;
  -		while ((lookup_table = filter->lookup_table_list[i++]) != NULL) {
  -			if (c >= lookup_table->min && c < lookup_table->max) {
  -				mbc = lookup_table->table[c - lookup_table->min];
  -				if (mbc >= 0) {
  -					goto output;
  -				}
  +
  +	return c;
  +}
  +
  +
  +/*
  + * eucJP-win => wchar
  + */
  +static int
  +filt_conv_eucjpwin_wchar(int c, mbfl_convert_filter *filter)
  +{
  +	int c1, code, index, wchar;
  +
  +	c1 = 0;
  +	code = -1;
  +	index = -1;
  +	switch (filter->status) {
  +	case 0:
  +		code = c;
  +		if (c >= 0 && c < 0x80) {	/* G0 */
  +			index = c;
  +		} else if (c > 0xa0 && c < 0xff) {	/* G1 first char */
  +			filter->status = 1;
  +			filter->cache = c;
  +			return c;
  +		} else if (c == 0x8e) {		/* G2 first char */
  +			filter->status = 2;
  +			return c;
  +		} else if (c == 0x8f) {		/* G3 first char */
  +			filter->status = 3;
  +			return c;
  +		} else if (c >= 0x80 && c < 0xa0) {	/* CR */
  +			index = c;
  +		}
  +		break;
  +
  +	case 1:	/* G1 second char */
  +		filter->status = 0;
  +		c1 = filter->cache;
  +		code = (c1 << 8) | c;
  +		if (c > 0xa0 && c < 0xff) {
  +			index = (c1 - 0xa1)*94 + c - 0xa1 + MBFL_WCSPLANE_WINCP932;
  +		} else if ((c >= 0 && c < 0x21) || c == 0x7f) {		/* CTLs */
  +			code = c;
  +			index = c;
  +		}
  +		break;
  +
  +	case 2:	/* G2 first char */
  +		filter->status = 0;
  +		code =  0x8e00 | c;
  +		if (c > 0xa0 && c < 0xe0) {
  +			index = c | MBFL_WCSPLANE_JIS0201;
  +		} else if ((c >= 0 && c < 0x21) || c == 0x7f) {		/* CTLs */
  +			code = c;
  +			index = c;
  +		}
  +		break;
  +
  +	case 3:	/* G3 first char */
  +		if ((c >= 0 && c < 0x21) || c == 0x7f) {		/* CTLs */
  +			filter->status = 0;
  +			code = c;
  +			index = c;
  +		} else {
  +			filter->status++;
  +			filter->cache = c;
  +			return c;
  +		}
  +		break;
  +	case 4:	/* G3 second char */
  +		filter->status = 0;
  +		c1 = filter->cache;
  +		code = 0x8f0000 | (c1 << 8) | c;
  +		if (c1 > 0xa0 && c1 < 0xff && c > 0xa0 && c < 0xff) {
  +			index = (c1 - 0xa1)*94 + c - 0xa1 + MBFL_WCSPLANE_JIS0212;
  +		} else if ((c >= 0 && c < 0x21) || c == 0x7f) {		/* CTLs */
  +			code = c;
  +			index = c;
  +		}
  +		break;
  +
  +	default:
  +		filter->status = 0;
  +		return c;
  +	}
  +
  +	wchar = convert_table_mbtowc(filter->table_list, index, code);
  +	if (wchar < 0) {
  +		wchar = index & ~MBFL_WCSPLANE_MASK;
  +		if (code >= 0 && code < 0xa0) {	/* G0 or CR */
  +			wchar = code;
  +		} else if (wchar == MBFL_WCSPLANE_WINCP932) {	/* G1 */
  +			wchar |= ((c1 << 8) | c) & 0x7f7f;
  +		} else if (wchar == MBFL_WCSPLANE_JIS0201) {	/* G2 */
  +			wchar |= c;
  +		} else if (wchar == MBFL_WCSPLANE_JIS0212) {	/* G3 */
  +			wchar |= ((c1 << 8) | c) & 0x7f7f;
  +		} else {
  +			wchar = code & MBFL_WCSGROUP_MASK;
  +			wchar |= MBFL_WCSGROUP_THROUGH;
  +		}
  +	}
  +
  +	CK((*filter->output_function)(wchar, filter->stream_resource));
  +	return c;
  +}
  +
  +/*
  + * wchar => eucJP-win
  + */
  +static int
  +filt_conv_wchar_eucjpwin(int c, mbfl_convert_filter *filter)
  +{
  +	int mbc;
  +
  +	mbc = convert_table_wctomb(filter->table_list, c);
  +	if ((mbc & ~MBFL_WCSPLANE_MASK) == MBFL_WCSPLANE_JIS0208) {
  +		/* replace plane */
  +		mbc &= MBFL_WCSPLANE_MASK;
  +		mbc |= MBFL_WCSPLANE_WINCP932;
  +	} else if (mbc < 0) {
  +		mbc = c & ~MBFL_WCSPLANE_MASK;
  +		if (mbc == MBFL_WCSPLANE_WINCP932) {
  +			if (c < (MBFL_WCSPLANE_WINCP932 + 0x7500)) {
  +				mbc = c;
  +			} else {
  +				/* Private Use Area */
  +				mbc = -1;
   			}
  +		} else if (mbc == MBFL_WCSPLANE_JIS0208) {
  +			if (c < (MBFL_WCSPLANE_JIS0208 + 0x7500)) {
  +				mbc = (c & MBFL_WCSPLANE_MASK) | MBFL_WCSPLANE_WINCP932;
  +			} else {
  +				/* Private Use Area */
  +				mbc = -1;
  +			}
  +		} else if (mbc == MBFL_WCSPLANE_JIS0212) {
  +			if (c < (MBFL_WCSPLANE_JIS0212 + 0x7300)) {
  +				mbc = c;
  +			} else {
  +				/* Private Use Area */
  +				mbc = -1;
  +			}
  +		} else {
  +			mbc = c;
   		}
   	}
  -	if (c >= 0xff10 && c < 0xff20) {			/* FULLWIDTH DIGIT */
  -		mbc = c - 0xff10 + (MBFL_WCSPLANE_JIS0208 + 0x2330);
  -	} else if (c >= 0xff21 && c < 0xff3b) {		/* FULLWIDTH LATIN CAPITAL LETTER */
  -		mbc = c - 0xff21 + (MBFL_WCSPLANE_JIS0208 + 0x2341);
  -	} else if (c >= 0xff41 && c < 0xff5b) {		/* FULLWIDTH LATIN SMALL LETTER */
  -		mbc = c - 0xff41 + (MBFL_WCSPLANE_JIS0208 + 0x2361);
  -	} else if (c >= 0x3041 && c < 0x3094) {		/* HIRAGANA LETTER */
  -		mbc = c - 0x3041 + (MBFL_WCSPLANE_JIS0208 + 0x2421);
  -	} else if (c >= 0x30a1 && c < 0x30f7) {		/* KATAKANA LETTER */
  -		mbc = c - 0x30a1 + (MBFL_WCSPLANE_JIS0208 + 0x2521);
  -	} else if (c >= 0xff61 && c < 0xffa0) {		/* HALFWIDTH KATAKANA */
  -		mbc = c - 0xff61 + (MBFL_WCSPLANE_JIS0201 + 0xa1);
  +
  +	if (mbc >= 0 && mbc < 0x80) {	/* ASCII */
  +		CK((*filter->output_function)(mbc, filter->stream_resource));
  +	} else if (mbc >= MBFL_WCSPLANE_WINCP932 && mbc < (MBFL_WCSPLANE_WINCP932 + 0x7f00)) {		/* kanji */
  +		CK((*filter->output_function)(((mbc >> 8) & 0xff) | 0x80, filter->stream_resource));
  +		CK((*filter->output_function)((mbc & 0xff) | 0x80, filter->stream_resource));
  +	} else if (mbc >= (MBFL_WCSPLANE_JIS0201 + 0xa1) && mbc < (MBFL_WCSPLANE_JIS0201 + 0xe0)) {	/* kana */
  +		CK((*filter->output_function)(0x8e, filter->stream_resource));
  +		CK((*filter->output_function)(mbc & 0xff, filter->stream_resource));
  +	} else if (mbc >= MBFL_WCSPLANE_JIS0201 && mbc < (MBFL_WCSPLANE_JIS0201 + 0x80)) {			/* latin */
  +		CK((*filter->output_function)(mbc & 0xff, filter->stream_resource));
  +	} else if (mbc >= MBFL_WCSPLANE_JIS0212 && mbc < (MBFL_WCSPLANE_JIS0212 + 0x7f00)) {		/* kanji */
  +		CK((*filter->output_function)(0x8f, filter->stream_resource));
  +		CK((*filter->output_function)(((mbc >> 8) & 0xff) | 0x80, filter->stream_resource));
  +		CK((*filter->output_function)((mbc & 0xff) | 0x80, filter->stream_resource));
  +	} else if (mbc >= 0x80 && mbc < 0xa0 && mbc != 0x8e && mbc != 0x8f) {	/* CR */
  +		CK((*filter->output_function)(mbc, filter->stream_resource));
   	} else {
  -		mbc = c;
  +		if ((filter->mode & MBFL_CONVFILTER_ILLEGAL_MODE_NONE) == 0) {
  +			CK(mbfl_filt_conv_illegal_output(c, filter));
  +		}
   	}
   
  -output:
  -	if (mbc >= 0 && mbc < 0x80) {	/* latin */
  +	return c;
  +}
  +
  +
  +/*
  + * SJIS-win => wchar
  + */
  +static int
  +filt_conv_sjiswin_wchar(int c, mbfl_convert_filter *filter)
  +{
  +	int c1, j1, j2, code, index, wchar;
  +
  +	c1 = 0;
  +	j1 = 0;
  +	j2 = 0;
  +	code = -1;
  +	index = -1;
  +	switch (filter->status) {
  +	case 0:
  +		code = c;
  +		if (c >= 0 && c < 0x80) {	/* latin */
  +			index = c;
  +		} else if (c > 0xa0 && c < 0xe0) {	/* kana */
  +			index = c | MBFL_WCSPLANE_JIS0201;
  +		} else if (c > 0x80 && c < 0xfd && c != 0xa0) {	/* kanji first char */
  +			filter->status = 1;
  +			filter->cache = c;
  +			return c;
  +		}
  +		break;
  +
  +	case 1:		/* kanji second char */
  +		filter->status = 0;
  +		c1 = filter->cache;
  +		code = (c1 << 8) | c;
  +		if (c > 0x39 && c < 0xfd && c != 0x7f) {
  +			SJIS_DECODE(c1, c, j1, j2);
  +			index = (j1 - 0x21)*94 + j2 - 0x21 + MBFL_WCSPLANE_WINCP932;
  +		} else if ((c >= 0 && c < 0x21) || c == 0x7f) {		/* CTLs */
  +			code = c;
  +			index = c;
  +		}
  +		break;
  +
  +	default:
  +		filter->status = 0;
  +		return c;
  +	}
  +
  +	wchar = convert_table_mbtowc(filter->table_list, index, code);
  +	if (wchar < 0) {
  +		index &= ~MBFL_WCSPLANE_MASK;
  +		wchar = (j1 << 8) | j2;
  +		if (code >= 0 && code < 0x80) {	/* latin */
  +			wchar = code;
  +		} else if (index == MBFL_WCSPLANE_WINCP932) {	/* kanji */
  +			wchar |= index;
  +		} else if (index == MBFL_WCSPLANE_JIS0201) {	/* kana */
  +			wchar = index | code;
  +		} else {
  +			wchar = code & MBFL_WCSGROUP_MASK;
  +			wchar |= MBFL_WCSGROUP_THROUGH;
  +		}
  +	}
  +
  +	CK((*filter->output_function)(wchar, filter->stream_resource));
  +	return c;
  +}
  +
  +/*
  + * wchar => SJIS-win
  + */
  +static int
  +filt_conv_wchar_sjiswin(int c, mbfl_convert_filter *filter)
  +{
  +	int c1, c2, s1, s2, mbc;
  +
  +	mbc = convert_table_wctomb(filter->table_list, c);
  +	if ((mbc & ~MBFL_WCSPLANE_MASK) == MBFL_WCSPLANE_JIS0208) {
  +		/* replace plane */
  +		mbc &= MBFL_WCSPLANE_MASK;
  +		mbc |= MBFL_WCSPLANE_WINCP932;
  +	} else if (mbc < 0) {
  +		if ((c & ~MBFL_WCSPLANE_MASK) == MBFL_WCSPLANE_JIS0208) {
  +			mbc = (c & MBFL_WCSPLANE_MASK) | MBFL_WCSPLANE_WINCP932;
  +		} else {
  +			mbc = c;
  +		}
  +	}
  +
  +	if (mbc >= 0 && mbc < 0x80) {	/* ASCII */
   		CK((*filter->output_function)(mbc, filter->stream_resource));
  -	} else if (mbc >= MBFL_WCSPLANE_JIS0208 && mbc < (MBFL_WCSPLANE_JIS0208 + MBFL_WCSPLANE_SIZE)) {
  +	} else if (mbc >= MBFL_WCSPLANE_WINCP932 && mbc < (MBFL_WCSPLANE_WINCP932 + 0x9900)) {		/* kanji */
   		c1 = (mbc >> 8) & 0xff;
   		c2 = mbc & 0xff;
   		SJIS_ENCODE(c1, c2, s1, s2);
  @@ -469,21 +724,17 @@
   }
   
   
  -#include "php.h"
   /*
    * JIS => wchar
    */
   static int
   filt_conv_jis_wchar(int c, mbfl_convert_filter *filter)
   {
  -	int c1, i, j, code, index, wchar;
  -	const mbfl_pair_table *pair_table;
  -	const mbfl_lookup_table *lookup_table;
  +	int c1, code, index, wchar;
   
   	c1 = 0;
   	code = -1;
   	index = -1;
  -	wchar = -1;
   retry:
   	switch (filter->status & 0xf) {
   /*	case 0x00:	 ASCII */
  @@ -502,7 +753,7 @@
   		} else if (c == 0x0f) {		/* "kana out" */
   			filter->status = 0;
   			return c;
  -		} else if (filter->status == 0x10 &&  c > 0x20 && c < 0x60) {	/* X 0201 latin */
  +		} else if (filter->status == 0x10 && c >= 0x20 && c < 0x80) {	/* X 0201 latin */
   			code |= MBFL_WCSPLANE_JIS0201;
   			index = code;
   		} else if (filter->status == 0x20 && c > 0x20 && c < 0x60) {	/* X 0201 kana */
  @@ -632,60 +883,26 @@
   		break;
   
   	default:
  -		filter->status = 0;
  -		return c;
  -	}
  -
  -	if (filter->pair_table_list != NULL && code >= 0) {
  -		i = 0;
  -		while ((pair_table = filter->pair_table_list[i++]) != NULL) {
  -			j = pair_table->size - 1;
  -			while (j >= 0) {
  -				if (code == pair_table->table[j].mb) {
  -					wchar = pair_table->table[j].uc;
  -					goto output;
  -				}
  -				j--;
  -			}
  -		}
  -	}
  -	if (filter->lookup_table_list != NULL && index >= 0) {
  -		i = 0;
  -		while ((lookup_table = filter->lookup_table_list[i++]) != NULL) {
  -			if (index >= lookup_table->min && index < lookup_table->max) {
  -				wchar = lookup_table->table[index - lookup_table->min];
  -				if (wchar >= 0) {
  -					goto output;
  -				}
  -			}
  -		}
  +		filter->status = 0;
  +		return c;
   	}
  -	if (code >= 0 && code < 0x80) {	/* ASCII */
  -		wchar = code;
  -	} else if (code >= (MBFL_WCSPLANE_JIS0208 + 0x2330) && code < (MBFL_WCSPLANE_JIS0208 + 0x233a)) {	/* FULLWIDTH DIGIT */
  -		wchar = code + 0xff10 - (MBFL_WCSPLANE_JIS0208 + 0x2330);
  -	} else if (code >= (MBFL_WCSPLANE_JIS0208 + 0x2341) && code < (MBFL_WCSPLANE_JIS0208 + 0x235b)) {	/* FULLWIDTH LATIN CAPITAL LETTER */
  -		wchar = code + 0xff21 - (MBFL_WCSPLANE_JIS0208 + 0x2341);
  -	} else if (code >= (MBFL_WCSPLANE_JIS0208 + 0x2361) && code < (MBFL_WCSPLANE_JIS0208 + 0x237b)) {	/* FULLWIDTH LATIN SMALL LETTER */
  -		wchar = code + 0xff41 - (MBFL_WCSPLANE_JIS0208 + 0x2361);
  -	} else if (code >= (MBFL_WCSPLANE_JIS0208 + 0x2421) && code < (MBFL_WCSPLANE_JIS0208 + 0x2474)) {	/* HIRAGANA LETTER */
  -		wchar = code + 0x3041 - (MBFL_WCSPLANE_JIS0208 + 0x2421);
  -	} else if (code >= (MBFL_WCSPLANE_JIS0208 + 0x2521) && code < (MBFL_WCSPLANE_JIS0208 + 0x2577)) {	/* KATAKANA LETTER */
  -		wchar = code + 0x30a1 - (MBFL_WCSPLANE_JIS0208 + 0x2521);
  -	} else if (code >= (MBFL_WCSPLANE_JIS0201 + 0xa1) && code < (MBFL_WCSPLANE_JIS0201 + 0xe0)) {	/* HALFWIDTH KATAKANA */
  -		wchar = code + 0xff61 - (MBFL_WCSPLANE_JIS0201 + 0xa1);
  -	} else if (code >= MBFL_WCSPLANE_JIS0208 && code < (MBFL_WCSPLANE_JIS0208 + MBFL_WCSPLANE_SIZE)) {
  -		wchar = code;
  -	} else if (code >= MBFL_WCSPLANE_JIS0201 && code < (MBFL_WCSPLANE_JIS0201 + MBFL_WCSPLANE_SIZE)) {
  -		wchar = code;
  -	} else if (code >= MBFL_WCSPLANE_JIS0212 && code < (MBFL_WCSPLANE_JIS0212 + MBFL_WCSPLANE_SIZE)) {
  -		wchar = code;
  -	} else {
  -		wchar = code & MBFL_WCSGROUP_MASK;
  -		wchar |= MBFL_WCSGROUP_THROUGH;
  +
  +	wchar = convert_table_mbtowc(filter->table_list, index, code);
  +	if (wchar < 0) {
  +		if (code >= 0 && code < 0x80) {	/* ASCII */
  +			wchar = code;
  +		} else if (code >= MBFL_WCSPLANE_JIS0208 && code < (MBFL_WCSPLANE_JIS0208 + 0x7f00)) {
  +			wchar = code;
  +		} else if (code >= MBFL_WCSPLANE_JIS0201 && code < (MBFL_WCSPLANE_JIS0201 + 0x100)) {
  +			wchar = code;
  +		} else if (code >= MBFL_WCSPLANE_JIS0212 && code < (MBFL_WCSPLANE_JIS0212 + 0x7f00)) {
  +			wchar = code;
  +		} else {
  +			wchar = code & MBFL_WCSGROUP_MASK;
  +			wchar |= MBFL_WCSGROUP_THROUGH;
  +		}
   	}
   
  -output:
   	CK((*filter->output_function)(wchar, filter->stream_resource));
   	return c;
   }
  @@ -696,93 +913,54 @@
   static int
   filt_conv_wchar_jis(int c, mbfl_convert_filter *filter)
   {
  -	int mbc, i, j;
  -	const mbfl_pair_table *pair_table;
  -	const mbfl_lookup_table *lookup_table;
  +	int mbc;
   
  -	mbc = -1;
  -	if (filter->pair_table_list != NULL) {
  -		i = 0;
  -		while ((pair_table = filter->pair_table_list[i++]) != NULL) {
  -			j = pair_table->size - 1;
  -			while (j >= 0) {
  -				if (c == pair_table->table[j].uc) {
  -					mbc = pair_table->table[j].mb;
  -					goto output;
  -				}
  -				j--;
  -			}
  -		}
  -	}
  -	if (filter->lookup_table_list != NULL) {
  -		i = 0;
  -		while ((lookup_table = filter->lookup_table_list[i++]) != NULL) {
  -			if (c >= lookup_table->min && c < lookup_table->max) {
  -				mbc = lookup_table->table[c - lookup_table->min];
  -				if (mbc >= 0) {
  -					goto output;
  -				}
  -			}
  -		}
  -	}
  -	if (c >= 0xff10 && c < 0xff20) {			/* FULLWIDTH DIGIT */
  -		mbc = c - 0xff10 + (MBFL_WCSPLANE_JIS0208 + 0x2330);
  -	} else if (c >= 0xff21 && c < 0xff3b) {		/* FULLWIDTH LATIN CAPITAL LETTER */
  -		mbc = c - 0xff21 + (MBFL_WCSPLANE_JIS0208 + 0x2341);
  -	} else if (c >= 0xff41 && c < 0xff5b) {		/* FULLWIDTH LATIN SMALL LETTER */
  -		mbc = c - 0xff41 + (MBFL_WCSPLANE_JIS0208 + 0x2361);
  -	} else if (c >= 0x3041 && c < 0x3094) {		/* HIRAGANA LETTER */
  -		mbc = c - 0x3041 + (MBFL_WCSPLANE_JIS0208 + 0x2421);
  -	} else if (c >= 0x30a1 && c < 0x30f7) {		/* KATAKANA LETTER */
  -		mbc = c - 0x30a1 + (MBFL_WCSPLANE_JIS0208 + 0x2521);
  -	} else if (c >= 0xff61 && c < 0xffa0) {		/* HALFWIDTH KATAKANA */
  -		mbc = c - 0xff61 + (MBFL_WCSPLANE_JIS0201 + 0xa1);
  -	} else {
  +	mbc = convert_table_wctomb(filter->table_list, c);
  +	if (mbc < 0) {
   		mbc = c;
   	}
   
  -output:
   	if (mbc >= 0 && mbc < 0x80) {	/* ASCII */
  -		if ((filter->status & 0xff00) != 0) {
  +		if (filter->status != 0) {
   			CK((*filter->output_function)(0x1b, filter->stream_resource));		/* ESC */
   			CK((*filter->output_function)(0x28, filter->stream_resource));		/* '(' */
   			CK((*filter->output_function)(0x42, filter->stream_resource));		/* 'B' */
  +			filter->status = 0;
   		}
  -		filter->status = 0;
   		CK((*filter->output_function)(mbc, filter->stream_resource));
   	} else if (mbc >= MBFL_WCSPLANE_JIS0208 && mbc < (MBFL_WCSPLANE_JIS0208 + 0x7f00)) {	/* X 0208 */
  -		if ((filter->status & 0xff00) != 0x100) {
  +		if (filter->status != 1) {
   			CK((*filter->output_function)(0x1b, filter->stream_resource));		/* ESC */
   			CK((*filter->output_function)(0x24, filter->stream_resource));		/* '$' */
   			CK((*filter->output_function)(0x42, filter->stream_resource));		/* 'B' */
  +			filter->status = 1;
   		}
  -		filter->status = 0x100;
   		CK((*filter->output_function)((mbc >> 8) & 0x7f, filter->stream_resource));
   		CK((*filter->output_function)(mbc & 0x7f, filter->stream_resource));
   	} else if (mbc >= (MBFL_WCSPLANE_JIS0201 + 0xa1) && mbc < (MBFL_WCSPLANE_JIS0201 + 0xe0)) {	/* X 0201 kana */
  -		if ((filter->status & 0xff00) != 0x200) {
  +		if (filter->status != 2) {
   			CK((*filter->output_function)(0x1b, filter->stream_resource));		/* ESC */
   			CK((*filter->output_function)(0x28, filter->stream_resource));		/* '(' */
   			CK((*filter->output_function)(0x49, filter->stream_resource));		/* 'I' */
  +			filter->status = 2;
   		}
  -		filter->status = 0x200;
   		CK((*filter->output_function)(mbc & 0x7f, filter->stream_resource));
   	} else if (mbc >= MBFL_WCSPLANE_JIS0201 && mbc < (MBFL_WCSPLANE_JIS0201 + 0x80)) {		/* X 0201 latin */
  -		if ((filter->status & 0xff00) != 0x300) {
  +		if (filter->status != 3) {
   			CK((*filter->output_function)(0x1b, filter->stream_resource));		/* ESC */
   			CK((*filter->output_function)(0x28, filter->stream_resource));		/* '(' */
   			CK((*filter->output_function)(0x4a, filter->stream_resource));		/* 'J' */
  +			filter->status = 3;
   		}
  -		filter->status = 0x300;
   		CK((*filter->output_function)(mbc & 0x7f, filter->stream_resource));
   	} else if (mbc >= MBFL_WCSPLANE_JIS0212 && mbc < (MBFL_WCSPLANE_JIS0212 + 0x7f00)) {		/* X 0212 */
  -		if ((filter->status & 0xff00) != 0x400) {
  +		if (filter->status != 4) {
   			CK((*filter->output_function)(0x1b, filter->stream_resource));		/* ESC */
   			CK((*filter->output_function)(0x24, filter->stream_resource));		/* '$' */
   			CK((*filter->output_function)(0x28, filter->stream_resource));		/* '(' */
   			CK((*filter->output_function)(0x44, filter->stream_resource));		/* 'D' */
  +			filter->status = 4;
   		}
  -		filter->status = 0x400;
   		CK((*filter->output_function)((mbc >> 8) & 0x7f, filter->stream_resource));
   		CK((*filter->output_function)(mbc & 0x7f, filter->stream_resource));
   	} else {
  @@ -799,76 +977,36 @@
    * wchar => ISO-2022-JP
    */
   static int
  -mbfl_filt_conv_wchar_2022jp(int c, mbfl_convert_filter *filter)
  +filt_conv_wchar_2022jp(int c, mbfl_convert_filter *filter)
   {
  -	int mbc, i, j;
  -	const mbfl_pair_table *pair_table;
  -	const mbfl_lookup_table *lookup_table;
  +	int mbc;
   
  -	mbc = -1;
  -	if (filter->pair_table_list != NULL) {
  -		i = 0;
  -		while ((pair_table = filter->pair_table_list[i++]) != NULL) {
  -			j = pair_table->size - 1;
  -			while (j >= 0) {
  -				if (c == pair_table->table[j].uc) {
  -					mbc = pair_table->table[j].mb;
  -					goto output;
  -				}
  -				j--;
  -			}
  -		}
  -	}
  -	if (filter->lookup_table_list != NULL) {
  -		i = 0;
  -		while ((lookup_table = filter->lookup_table_list[i++]) != NULL) {
  -			if (c >= lookup_table->min && c < lookup_table->max) {
  -				mbc = lookup_table->table[c - lookup_table->min];
  -				if (mbc >= 0) {
  -					goto output;
  -				}
  -			}
  -		}
  -	} else {
  -		mbc = c;
  -	}
  -	if (c >= 0xff10 && c < 0xff20) {			/* FULLWIDTH DIGIT */
  -		mbc = c - 0xff10 + (MBFL_WCSPLANE_JIS0208 + 0x2330);
  -	} else if (c >= 0xff21 && c < 0xff3b) {		/* FULLWIDTH LATIN CAPITAL LETTER */
  -		mbc = c - 0xff21 + (MBFL_WCSPLANE_JIS0208 + 0x2341);
  -	} else if (c >= 0xff41 && c < 0xff5b) {		/* FULLWIDTH LATIN SMALL LETTER */
  -		mbc = c - 0xff41 + (MBFL_WCSPLANE_JIS0208 + 0x2361);
  -	} else if (c >= 0x3041 && c < 0x3094) {		/* HIRAGANA LETTER */
  -		mbc = c - 0x3041 + (MBFL_WCSPLANE_JIS0208 + 0x2421);
  -	} else if (c >= 0x30a1 && c < 0x30f7) {		/* KATAKANA LETTER */
  -		mbc = c - 0x30a1 + (MBFL_WCSPLANE_JIS0208 + 0x2521);
  -	}
  +	mbc = convert_table_wctomb(filter->table_list, c);
   
  -output:
   	if (mbc >= 0 && mbc < 0x80) {	/* ASCII */
  -		if ((filter->status & 0xff00) != 0) {
  +		if (filter->status != 0) {
   			CK((*filter->output_function)(0x1b, filter->stream_resource));		/* ESC */
   			CK((*filter->output_function)(0x28, filter->stream_resource));		/* '(' */
   			CK((*filter->output_function)(0x42, filter->stream_resource));		/* 'B' */
  +			filter->status = 0;
   		}
  -		filter->status = 0;
   		CK((*filter->output_function)(mbc, filter->stream_resource));
   	} else if (mbc >= MBFL_WCSPLANE_JIS0208 && mbc < (MBFL_WCSPLANE_JIS0208 + 0x7f00)) {	/* X 0208 */
  -		if ((filter->status & 0xff00) != 0x100) {
  +		if (filter->status != 1) {
   			CK((*filter->output_function)(0x1b, filter->stream_resource));		/* ESC */
   			CK((*filter->output_function)(0x24, filter->stream_resource));		/* '$' */
   			CK((*filter->output_function)(0x42, filter->stream_resource));		/* 'B' */
  +			filter->status = 1;
   		}
  -		filter->status = 0x100;
   		CK((*filter->output_function)((mbc >> 8) & 0x7f, filter->stream_resource));
   		CK((*filter->output_function)(mbc & 0x7f, filter->stream_resource));
   	} else if (mbc >= MBFL_WCSPLANE_JIS0201 && mbc < (MBFL_WCSPLANE_JIS0201 + 0x80)) {		/* X 0201 latin */
  -		if ((filter->status & 0xff00) != 0x300) {
  +		if (filter->status != 3) {
   			CK((*filter->output_function)(0x1b, filter->stream_resource));		/* ESC */
   			CK((*filter->output_function)(0x28, filter->stream_resource));		/* '(' */
   			CK((*filter->output_function)(0x4a, filter->stream_resource));		/* 'J' */
  +			filter->status = 3;
   		}
  -		filter->status = 0x300;
   		CK((*filter->output_function)(mbc & 0x7f, filter->stream_resource));
   	} else {
   		if ((filter->mode & MBFL_CONVFILTER_ILLEGAL_MODE_NONE) == 0) {
  @@ -883,12 +1021,12 @@
   filt_conv_any_jis_flush(mbfl_convert_filter *filter)
   {
   	/* back to latin */
  -	if ((filter->status & 0xff00) != 0) {
  +	if (filter->status != 0) {
   		CK((*filter->output_function)(0x1b, filter->stream_resource));		/* ESC */
   		CK((*filter->output_function)(0x28, filter->stream_resource));		/* '(' */
   		CK((*filter->output_function)(0x42, filter->stream_resource));		/* 'B' */
   	}
  -	filter->status &= 0xff;
  +	filter->status = 0;
   	return 0;
   }
   
  @@ -1194,7 +1332,7 @@
    0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
    0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
    0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
  - 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
  + 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F
   };
   
   
  @@ -1210,7 +1348,7 @@
    0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
    0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
    0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
  - 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x203E
  + 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x203E,0x007F
   };
   
   
  @@ -2537,6 +2675,38 @@
   };
   
   
  +static const int table_cp932_ucs_115ku_euc[] = {
  + /* eucJP-win G3 */
  + /* ku 83 */
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +     -1,    -1,0x2170,0x2171,0x2172,0x2173,0x2174,0x2175,
  + 0x2176,0x2177,0x2178,0x2179,0x2160,0x2161,
  +
  + /* ku 84 */
  + 0x2162,0x2163,0x2164,0x2165,0x2166,0x2167,0x2168,0x2169,
  + 0xFF07,0xFF02,0x3231,0x2116,0x2121,0x70BB,0x4EFC,0x50F4,
  + 0x51EC,0x5307,0x5324,0xFA0E,0x548A,0x5759,0xFA0F,0xFA10,
  + 0x589E,0x5BEC,0x5CF5,0x5D53,0xFA11,0x5FB7,0x6085,0x6120,
  + 0x654E,0x663B,0x6665,0xFA12,0xF929,0x6801,0xFA13,0xFA14,
  + 0x6A6B,0x6AE2,0x6DF8,0x6DF2,0x7028,0xFA15,0xFA16,0x7501,
  + 0x7682,0x769E,0xFA17,0x7930,0xFA18,0xFA19,0xFA1A,0xFA1B,
  + 0x7AE7,0xFA1C,0xFA1D,0x7DA0,0x7DD6,0xFA1E,0x8362,0xFA1F,
  + 0x85B0,0xFA20,0xFA21,0x8807,0xFA22,0x8B7F,0x8CF4,0x8D76,
  + 0xFA23,0xFA24,0xFA25,0x90DE,0xFA26,0x9115,0xFA27,0xFA28,
  + 0x9592,0xF9DC,0xFA29,0x973B,0x974D,0x9751,0xFA2A,0xFA2B,
  + 0xFA2C,0x999E,0x9AD9,0x9B72,0xFA2D,0x9ED1
  +};
  +
  +
   static const int table_cp932_ucs_95ku[] = {
    /* ku 95 */
    0xE000,0xE001,0xE002,0xE003,0xE004,0xE005,0xE006,0xE007,
  @@ -3904,6 +4074,7 @@
   #define J1(c) (MBFL_WCSPLANE_JIS0201 | c)
   #define J2(c) (MBFL_WCSPLANE_JIS0208 | c)
   #define J3(c) (MBFL_WCSPLANE_JIS0212 | c)
  +#define CP(c) (MBFL_WCSPLANE_WINCP932 | c)
   
   static const int table_ucs_jis_a1[] = {
    /* 0000h */
  @@ -3927,7 +4098,7 @@
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,J3(0x2242),J2(0x2171),J2(0x2172),J3(0x2270),J1(0x005C),J3(0x2243),J2(0x2178),
  +        -1 ,J3(0x2242),J2(0x2171),J2(0x2172),J3(0x2270),J2(0x216F),J3(0x2243),J2(0x2178),
    J2(0x212F),J3(0x226D),J3(0x226C),       -1 ,J2(0x224C),       -1 ,J3(0x226E),J3(0x2234),
    J2(0x216B),J2(0x215E),       -1 ,       -1 ,J2(0x212D),       -1 ,J2(0x2279),       -1 ,
    J3(0x2231),       -1 ,J3(0x226B),       -1 ,       -1 ,       -1 ,       -1 ,J3(0x2244),
  @@ -4062,12 +4233,12 @@
    /* 2000h */
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  - J2(0x213E),       -1 ,       -1 ,       -1 ,       -1 ,J2(0x213D),J2(0x2142),       -1 ,
  + J2(0x213E),       -1 ,       -1 ,       -1 ,J2(0x213D),J2(0x213D),J2(0x2142),       -1 ,
    J2(0x2146),J2(0x2147),       -1 ,       -1 ,J2(0x2148),J2(0x2149),       -1 ,       -1 ,
    J2(0x2277),J2(0x2278),       -1 ,       -1 ,       -1 ,J2(0x2145),J2(0x2144),       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
    J2(0x2273),       -1 ,J2(0x216C),J2(0x216D),       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,J2(0x2228),       -1 ,       -1 ,J1(0x007E),       -1 ,
  +        -1 ,       -1 ,       -1 ,J2(0x2228),       -1 ,       -1 ,J2(0x2131),       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  @@ -4098,7 +4269,7 @@
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J3(0x2271),       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,J2(0x2D64),J3(0x226F),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,J3(0x226F),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,J2(0x2272),       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  @@ -4106,10 +4277,10 @@
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  - J2(0x2D35),J2(0x2D36),J2(0x2D37),J2(0x2D38),J2(0x2D39),J2(0x2D3A),J2(0x2D3B),J2(0x2D3C),
  - J2(0x2D3D),J2(0x2D3E),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  - J2(0x7C71),J2(0x7C72),J2(0x7C73),J2(0x7C74),J2(0x7C75),J2(0x7C76),J2(0x7C77),J2(0x7C78),
  - J2(0x7C79),J2(0x7C7A),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
    J2(0x222B),J2(0x222C),J2(0x222A),J2(0x222D),       -1 ,       -1 ,       -1 ,       -1 ,
  @@ -4130,10 +4301,10 @@
    /* 2200h */
    J2(0x224F),       -1 ,J2(0x225F),J2(0x2250),       -1 ,       -1 ,       -1 ,J2(0x2260),
    J2(0x223A),       -1 ,       -1 ,J2(0x223B),       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,J2(0x2D74),J2(0x215D),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,J2(0x2265),       -1 ,       -1 ,J2(0x2267),J2(0x2167),J2(0x2D78),
  +        -1 ,       -1 ,J2(0x215D),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,J2(0x2265),       -1 ,       -1 ,J2(0x2267),J2(0x2167),       -1 ,
    J2(0x225C),       -1 ,       -1 ,       -1 ,       -1 ,J2(0x2142),       -1 ,J2(0x224A),
  - J2(0x224B),J2(0x2241),J2(0x2240),J2(0x2269),J2(0x226A),       -1 ,J2(0x2D73),       -1 ,
  + J2(0x224B),J2(0x2241),J2(0x2240),J2(0x2269),J2(0x226A),       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,J2(0x2168),J2(0x2268),       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x2266),       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  @@ -4151,7 +4322,7 @@
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x225D),       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D79),
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  @@ -4208,9 +4379,9 @@
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  - J2(0x2D21),J2(0x2D22),J2(0x2D23),J2(0x2D24),J2(0x2D25),J2(0x2D26),J2(0x2D27),J2(0x2D28),
  - J2(0x2D29),J2(0x2D2A),J2(0x2D2B),J2(0x2D2C),J2(0x2D2D),J2(0x2D2E),J2(0x2D2F),J2(0x2D30),
  - J2(0x2D31),J2(0x2D32),J2(0x2D33),J2(0x2D34),       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  @@ -4285,7 +4456,7 @@
    J2(0x2121),J2(0x2122),J2(0x2123),J2(0x2137),       -1 ,J2(0x2139),J2(0x213A),J2(0x213B),
    J2(0x2152),J2(0x2153),J2(0x2154),J2(0x2155),J2(0x2156),J2(0x2157),J2(0x2158),J2(0x2159),
    J2(0x215A),J2(0x215B),J2(0x2229),J2(0x222E),J2(0x214C),J2(0x214D),       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,J2(0x2141),J2(0x2D60),       -1 ,J2(0x2D61),
  +        -1 ,       -1 ,       -1 ,       -1 ,J2(0x2141),       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  @@ -4313,103 +4484,7 @@
    J2(0x2560),J2(0x2561),J2(0x2562),J2(0x2563),J2(0x2564),J2(0x2565),J2(0x2566),J2(0x2567),
    J2(0x2568),J2(0x2569),J2(0x256A),J2(0x256B),J2(0x256C),J2(0x256D),J2(0x256E),J2(0x256F),
    J2(0x2570),J2(0x2571),J2(0x2572),J2(0x2573),J2(0x2574),J2(0x2575),J2(0x2576),       -1 ,
  -        -1 ,       -1 ,       -1 ,J2(0x2126),J2(0x213C),J2(0x2133),J2(0x2134),       -1 ,
  - 
  - /* 3100h */
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  - 
  - /* 3200h */
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,J2(0x2D6A),J2(0x2D6B),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,J2(0x2D6C),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D65),J2(0x2D66),J2(0x2D67),J2(0x2D68),
  - J2(0x2D69),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  - 
  - /* 3300h */
  -        -1 ,       -1 ,       -1 ,J2(0x2D46),       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D4A),       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D41),       -1 ,       -1 ,       -1 ,
  - J2(0x2D44),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,J2(0x2D42),J2(0x2D4C),       -1 ,       -1 ,J2(0x2D4B),J2(0x2D45),
  -        -1 ,       -1 ,       -1 ,J2(0x2D4D),       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D47),       -1 ,
  -        -1 ,       -1 ,       -1 ,J2(0x2D4F),       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,J2(0x2D40),J2(0x2D4E),       -1 ,       -1 ,J2(0x2D43),       -1 ,       -1 ,
  -        -1 ,J2(0x2D48),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D49),
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,J2(0x2D5F),J2(0x2D6F),J2(0x2D6E),J2(0x2D6D),       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D53),J2(0x2D54),
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D50),J2(0x2D51),J2(0x2D52),       -1 ,
  -        -1 ,J2(0x2D56),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D55),       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x2D63)
  +        -1 ,       -1 ,       -1 ,J2(0x2126),J2(0x213C),J2(0x2133),J2(0x2134)
   };
   
   static const int table_ucs_jis_i[] = {
  @@ -4445,7 +4520,7 @@
    J3(0x3047),J3(0x3048),J3(0x3049),J2(0x4265),J2(0x4E61),J2(0x304A),       -1 ,       -1 ,
    J3(0x304A),       -1 ,       -1 ,       -1 ,       -1 ,J2(0x5041),J2(0x323E),J3(0x304B),
    J2(0x3644),J3(0x304C),J2(0x4367),J3(0x304D),       -1 ,J3(0x304E),J2(0x376F),J2(0x5043),
  -        -1 ,       -1 ,       -1 ,J2(0x4724),J2(0x792F),J3(0x304F),J3(0x3050),J3(0x3051),
  +        -1 ,       -1 ,       -1 ,J2(0x4724),       -1 ,J3(0x304F),J3(0x3050),J3(0x3051),
    
    /* 4F00h */
    J3(0x3052),J2(0x346B),J3(0x3053),J3(0x3054),       -1 ,       -1 ,       -1 ,       -1 ,
  @@ -4512,7 +4587,7 @@
    J3(0x323B),       -1 ,J2(0x4E3D),       -1 ,J3(0x323C),J3(0x323D),J2(0x5126),J3(0x323E),
           -1 ,       -1 ,J3(0x323F),J2(0x5129),J3(0x3240),J2(0x5127),J3(0x3241),J2(0x414E),
    J3(0x3242),J3(0x3243),       -1 ,       -1 ,       -1 ,J2(0x5128),J2(0x512A),J3(0x3244),
  -        -1 ,J3(0x3245),J3(0x3251),       -1 ,J2(0x7941),J2(0x512C),J3(0x3246),       -1 ,
  +        -1 ,J3(0x3245),J3(0x3251),       -1 ,       -1 ,J2(0x512C),J3(0x3246),       -1 ,
           -1 ,J2(0x512B),J3(0x3247),J2(0x4A48),       -1 ,       -1 ,J3(0x3248),       -1 ,
    
    /* 5100h */
  @@ -4545,7 +4620,7 @@
           -1 ,J3(0x3323),J3(0x3324),J3(0x3325),       -1 ,J3(0x3326),J2(0x5245),       -1 ,
    J3(0x3327),       -1 ,       -1 ,J2(0x515B),J2(0x7425),J2(0x3645),J3(0x3328),       -1 ,
    J2(0x515C),J2(0x4B5E),J3(0x3329),       -1 ,       -1 ,J3(0x332A),J2(0x3D68),J2(0x427C),
  -        -1 ,J2(0x515E),J2(0x4664),       -1 ,J2(0x7947),J2(0x515F),J3(0x332B),       -1 ,
  +        -1 ,J2(0x515E),J2(0x4664),       -1 ,       -1 ,J2(0x515F),J3(0x332B),       -1 ,
    J2(0x5160),J2(0x332E),J3(0x332C),J3(0x332D),J3(0x332E),J2(0x5161),J2(0x3627),J3(0x332F),
    J2(0x464C),J2(0x317A),J2(0x3D50),       -1 ,       -1 ,J2(0x4821),J2(0x5162),       -1 ,
    
  @@ -4584,11 +4659,11 @@
    J2(0x5230),J2(0x5231),J2(0x3C5B),       -1 ,       -1 ,       -1 ,J2(0x387B),J2(0x4C5E),
    
    /* 5300h */
  - J3(0x337B),J2(0x4C68),J2(0x4677),J3(0x337C),       -1 ,J2(0x4A71),J2(0x5232),J2(0x794E),
  + J3(0x337B),J2(0x4C68),J2(0x4677),J3(0x337C),       -1 ,J2(0x4A71),J2(0x5232),       -1 ,
    J2(0x5233),       -1 ,J3(0x337D),J3(0x337E),J3(0x3421),J2(0x5235),       -1 ,J2(0x5237),
    J2(0x5236),J3(0x3422),       -1 ,J3(0x3423),       -1 ,J2(0x5238),J2(0x323D),J2(0x4B4C),
    J3(0x3424),J2(0x3A7C),J2(0x5239),J3(0x3425),J3(0x3426),J2(0x4159),J3(0x3427),J3(0x3428),
  - J2(0x3E22),J2(0x3629),       -1 ,J2(0x523A),J2(0x794F),J3(0x3429),       -1 ,J3(0x342A),
  + J2(0x3E22),J2(0x3629),       -1 ,J2(0x523A),       -1 ,J3(0x3429),       -1 ,J3(0x342A),
    J3(0x342B),J3(0x342C),J2(0x485B),J3(0x342D),J3(0x342E),J3(0x342F),       -1 ,J2(0x523B),
    J3(0x3430),J2(0x523C),J3(0x3431),J2(0x523D),       -1 ,J3(0x3432),       -1 ,       -1 ,
    J2(0x523E),J2(0x4924),J2(0x3668),J2(0x3065),J3(0x3433),J3(0x3434),J3(0x3435),J2(0x463F),
  @@ -4635,7 +4710,7 @@
    J2(0x526F),J2(0x526D),       -1 ,J2(0x4C23),J3(0x347D),J2(0x526A),J2(0x5273),J2(0x526E),
           -1 ,       -1 ,       -1 ,J2(0x5271),J2(0x3846),J2(0x4C3F),       -1 ,J3(0x347E),
    J2(0x5272),J3(0x3521),       -1 ,J3(0x3522),J2(0x5274),J3(0x3523),J2(0x5276),       -1 ,
  - J3(0x3524),J3(0x3525),J2(0x7956),J2(0x3A70),J2(0x4F42),J3(0x3526),J2(0x526B),J2(0x5269),
  + J3(0x3524),J3(0x3525),       -1 ,J2(0x3A70),J2(0x4F42),J3(0x3526),J2(0x526B),J2(0x5269),
    J2(0x5275),J3(0x3527),J2(0x5270),       -1 ,       -1 ,J3(0x3528),J3(0x3529),       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,J3(0x352A),       -1 ,       -1 ,J3(0x352B),
           -1 ,J3(0x352C),J2(0x5278),       -1 ,J2(0x5323),J2(0x527A),J3(0x352D),J3(0x352E),
  @@ -4731,7 +4806,7 @@
    J2(0x542E),       -1 ,J2(0x3A64),       -1 ,       -1 ,J3(0x373C),J3(0x373D),J2(0x3651),
           -1 ,       -1 ,J2(0x4B37),       -1 ,J3(0x373E),J3(0x373F),J2(0x542C),J2(0x542F),
    J2(0x3A41),J2(0x3923),J3(0x3740),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,J2(0x795A),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,J2(0x5433),J3(0x3741),       -1 ,J2(0x3A25),J3(0x3742),J2(0x4333),J3(0x3743),
    J3(0x3744),J2(0x5430),J2(0x445A),J3(0x3745),       -1 ,J3(0x3746),J3(0x3747),J3(0x3748),
    J3(0x3749),J3(0x374A),       -1 ,J3(0x374B),J3(0x374C),J3(0x374D),       -1 ,J3(0x374E),
  @@ -4773,7 +4848,7 @@
    J3(0x383B),J3(0x383C),       -1 ,J2(0x362D),       -1 ,J2(0x5450),       -1 ,J3(0x383D),
    J3(0x383E),J3(0x383F),J3(0x3840),       -1 ,J3(0x3841),J3(0x3842),       -1 ,J3(0x3843),
    J3(0x3844),       -1 ,       -1 ,J2(0x4A68),J3(0x3845),       -1 ,J3(0x3846),J2(0x417D),
  -        -1 ,       -1 ,       -1 ,       -1 ,J2(0x4446),J3(0x3847),J2(0x7961),J2(0x5452),
  +        -1 ,       -1 ,       -1 ,       -1 ,J2(0x4446),J3(0x3847),       -1 ,J2(0x5452),
    J3(0x3848),J3(0x3849),J3(0x384A),       -1 ,       -1 ,       -1 ,J3(0x384B),       -1 ,
    J2(0x4B4F),J3(0x384C),       -1 ,J2(0x5453),       -1 ,       -1 ,J2(0x5458),       -1 ,
           -1 ,J3(0x384D),J3(0x384E),J2(0x4A2F),       -1 ,       -1 ,       -1 ,       -1 ,
  @@ -4885,7 +4960,7 @@
    J2(0x5567),       -1 ,J2(0x3428),J2(0x3677),J2(0x5566),       -1 ,J3(0x3A5F),J3(0x3A60),
    J3(0x3A61),J3(0x3A62),J3(0x3A63),J2(0x3432),       -1 ,J2(0x3F32),J2(0x556B),J2(0x3B21),
    J3(0x3A64),J2(0x3249),J2(0x556A),       -1 ,J2(0x5568),J2(0x556C),J2(0x5569),J2(0x472B),
  - J2(0x5C4D),J2(0x3F33),       -1 ,J2(0x556D),J2(0x796E),       -1 ,J2(0x4E40),J3(0x3A65),
  + J2(0x5C4D),J2(0x3F33),       -1 ,J2(0x556D),       -1 ,       -1 ,J2(0x4E40),J3(0x3A65),
    J2(0x556E),J3(0x3A66),       -1 ,J2(0x5570),J3(0x3A67),J2(0x437E),J2(0x556F),       -1 ,
    J2(0x4023),       -1 ,J2(0x3B7B),       -1 ,       -1 ,J3(0x3A68),J2(0x4250),J2(0x3C77),
    
  @@ -4920,7 +4995,7 @@
           -1 ,J2(0x5635),       -1 ,       -1 ,       -1 ,J3(0x3B3C),       -1 ,       -1 ,
    J2(0x463D),J2(0x362E),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
    J2(0x3265),J2(0x5636),J2(0x563B),       -1 ,       -1 ,J2(0x5639),J3(0x3B3E),J2(0x4A77),
  - J2(0x4A76),J3(0x3B3F),J3(0x3B40),       -1 ,J3(0x3B41),J2(0x7972),J2(0x4567),       -1 ,
  + J2(0x4A76),J3(0x3B3F),J3(0x3B40),       -1 ,J3(0x3B41),       -1 ,J2(0x4567),       -1 ,
           -1 ,       -1 ,J2(0x5638),J2(0x3D54),       -1 ,J2(0x5637),       -1 ,       -1 ,
    
    /* 5D00h */
  @@ -4934,7 +5009,7 @@
           -1 ,J3(0x3B4D),       -1 ,       -1 ,       -1 ,J3(0x3B4E),       -1 ,J3(0x3B4F),
           -1 ,       -1 ,J3(0x3B50),J3(0x3B51),       -1 ,       -1 ,J3(0x3B52),       -1 ,
    J3(0x3B53),       -1 ,J3(0x3B57),J2(0x564B),J2(0x5648),       -1 ,J2(0x564A),       -1 ,
  - J2(0x4D72),J3(0x3B55),J2(0x5649),J2(0x7974),       -1 ,J3(0x3B54),       -1 ,       -1 ,
  + J2(0x4D72),J3(0x3B55),J2(0x5649),       -1 ,       -1 ,J3(0x3B54),       -1 ,       -1 ,
           -1 ,J3(0x3B56),       -1 ,       -1 ,J2(0x563F),       -1 ,       -1 ,J3(0x3B58),
    J3(0x3B59),J3(0x3B5A),J3(0x3B5B),       -1 ,J3(0x3B5C),       -1 ,       -1 ,       -1 ,
           -1 ,J2(0x3F73),J3(0x3B5D),       -1 ,J2(0x564C),J3(0x3B5E),       -1 ,J2(0x3A37),
  @@ -5014,7 +5089,7 @@
    J2(0x5751),J2(0x5750),       -1 ,       -1 ,J3(0x3D2D),J3(0x3D2E),J2(0x574F),       -1 ,
    J2(0x5752),J2(0x3866),J3(0x3D2F),       -1 ,J3(0x3D32),       -1 ,       -1 ,J3(0x3D30),
    J2(0x5753),J2(0x497C),J2(0x3D5B),J3(0x3D31),J3(0x3D33),J2(0x5754),J2(0x4879),J3(0x3D34),
  - J3(0x3D35),J3(0x3D36),       -1 ,J2(0x4641),J2(0x4427),       -1 ,       -1 ,J2(0x797E),
  + J3(0x3D35),J3(0x3D36),       -1 ,J2(0x4641),J2(0x4427),       -1 ,       -1 ,       -1 ,
    J3(0x3D37),J2(0x4530),       -1 ,       -1 ,J2(0x5755),J2(0x352B),       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,J2(0x3F34),J3(0x3D38),J2(0x492C),       -1 ,J3(0x3D39),
    J3(0x3D3A),J3(0x3D3B),       -1 ,J3(0x3D3C),J2(0x3477),J2(0x4726),       -1 ,       -1 ,
  @@ -5042,7 +5117,7 @@
    J2(0x3A28),J2(0x3238),J2(0x576D),J2(0x5778),J2(0x5777),J2(0x3633),       -1 ,J2(0x4229),
    J2(0x3366),J3(0x3D6A),       -1 ,       -1 ,       -1 ,J2(0x3743),       -1 ,J2(0x576E),
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J3(0x3D6B),J3(0x3D6C),
  -        -1 ,J2(0x577A),J3(0x3D6D),J2(0x577D),J2(0x5821),J2(0x7A23),J3(0x3D6E),       -1 ,
  +        -1 ,J2(0x577A),J3(0x3D6D),J2(0x577D),J2(0x5821),       -1 ,J3(0x3D6E),       -1 ,
    J3(0x3D6F),J2(0x3C3D),J3(0x3D70),J2(0x5827),J2(0x4470),J2(0x577B),J3(0x3D71),       -1 ,
           -1 ,J3(0x3D72),J2(0x5825),J3(0x3D73),J2(0x3279),J3(0x3D74),J2(0x5823),J2(0x5824),
    J3(0x3D75),       -1 ,J2(0x577E),J2(0x5822),       -1 ,J3(0x3D76),J3(0x3D77),J2(0x3867),
  @@ -5064,7 +5139,7 @@
    J2(0x4C7C),J2(0x4C7B),J3(0x3E3A),       -1 ,J3(0x3E3B),J2(0x583E),J2(0x583F),J2(0x3055),
    J3(0x3E3C),J3(0x3E3D),J3(0x3E3E),J3(0x3E3F),J3(0x3E40),J2(0x5833),J3(0x3E41),J3(0x3E42),
           -1 ,J3(0x3E43),J2(0x3672),J2(0x3026),J3(0x3E44),       -1 ,J3(0x3E45),J2(0x3436),
  - J2(0x7A27),J2(0x583B),J3(0x3E46),       -1 ,       -1 ,       -1 ,       -1 ,J2(0x5843),
  +        -1 ,J2(0x583B),J3(0x3E46),       -1 ,       -1 ,       -1 ,       -1 ,J2(0x5843),
    J2(0x5842),       -1 ,J3(0x3E47),J3(0x3E48),J2(0x5847),       -1 ,       -1 ,       -1 ,
    J3(0x3E49),J3(0x3E4A),       -1 ,       -1 ,J2(0x5848),J3(0x3E4B),J3(0x3E4C),J3(0x3E4D),
           -1 ,J3(0x3E4E),       -1 ,       -1 ,J2(0x5846),J2(0x5849),J2(0x5841),J2(0x5845),
  @@ -5205,7 +5280,7 @@
           -1 ,J3(0x4146),       -1 ,       -1 ,J2(0x5A3D),J2(0x5A3E),J2(0x5A40),J2(0x5A3F),
    J2(0x5A41),J2(0x327E),J3(0x4147),J2(0x3936),J3(0x4148),J3(0x4149),J2(0x4A7C),J2(0x402F),
           -1 ,       -1 ,       -1 ,J3(0x414A),       -1 ,J2(0x384E),       -1 ,J3(0x414B),
  - J2(0x5A43),J3(0x414C),       -1 ,       -1 ,       -1 ,J2(0x5A46),J2(0x7A33),J2(0x4952),
  + J2(0x5A43),J3(0x414C),       -1 ,       -1 ,       -1 ,J2(0x5A46),       -1 ,J2(0x4952),
    J3(0x414D),J2(0x355F),J3(0x414E),       -1 ,J3(0x414F),J2(0x5A45),J2(0x5A44),J2(0x4754),
    J2(0x5A47),J2(0x3635),       -1 ,       -1 ,       -1 ,J2(0x5A49),J2(0x5A48),J3(0x4150),
    J3(0x4151),       -1 ,J2(0x343A),J2(0x3B36),       -1 ,       -1 ,J2(0x4658),J3(0x4152),
  @@ -5237,12 +5312,12 @@
    J2(0x3147),J3(0x4222),J3(0x4223),J3(0x4224),J3(0x4225),J2(0x3D55),J3(0x4226),J2(0x4B66),
    J2(0x3A72),J3(0x4227),J3(0x4228),J3(0x4229),J3(0x422A),J2(0x3E3C),J3(0x422B),J2(0x4027),
    J3(0x422C),J3(0x422D),       -1 ,J3(0x422E),J2(0x5A65),J2(0x5A63),J2(0x5A64),J3(0x4230),
  -        -1 ,J3(0x422F),       -1 ,J2(0x7A36),J2(0x436B),       -1 ,       -1 ,J2(0x5B26),
  +        -1 ,J3(0x422F),       -1 ,       -1 ,J2(0x436B),       -1 ,       -1 ,J2(0x5B26),
    J3(0x4231),J2(0x5A6A),J2(0x3B7E),J2(0x3938),J2(0x5A68),J3(0x4232),J3(0x4233),       -1 ,
           -1 ,J2(0x5A69),J3(0x4234),J2(0x3F38),J3(0x4235),       -1 ,J3(0x4237),J2(0x5A67),
           -1 ,J3(0x4236),J2(0x3B2F),       -1 ,       -1 ,       -1 ,       -1 ,J3(0x4238),
    J3(0x4239),J3(0x423A),       -1 ,J3(0x423B),J3(0x423C),J2(0x5A6C),J2(0x5A6B),J2(0x5A70),
  - J3(0x423D),J3(0x423E),J2(0x5A71),       -1 ,J2(0x5A6D),J2(0x7A3B),J2(0x3322),J2(0x5A6E),
  + J3(0x423D),J3(0x423E),J2(0x5A71),       -1 ,J2(0x5A6D),       -1 ,J2(0x3322),J2(0x5A6E),
    J2(0x5A6F),J2(0x4855),J3(0x4240),J3(0x4241),J3(0x4242),       -1 ,J2(0x4961),J2(0x374A),
    J2(0x5A72),       -1 ,       -1 ,J3(0x4244),J2(0x4032),J3(0x4245),J2(0x3E3D),J3(0x4247),
    J3(0x4248),J3(0x4249),J2(0x4352),J3(0x424A),J3(0x424C),       -1 ,J3(0x4243),J3(0x4246),
  @@ -5298,7 +5373,7 @@
           -1 ,J3(0x4338),       -1 ,J2(0x3A3A),       -1 ,       -1 ,J2(0x4B6F),J2(0x3341),
    
    /* 6800h */
  -        -1 ,J2(0x7A4B),J2(0x444E),J2(0x464A),J2(0x3149),       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,J2(0x444E),J2(0x464A),J2(0x3149),       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,J2(0x4072),J3(0x434A),       -1 ,J2(0x4034),J2(0x372A),
           -1 ,J3(0x434B),       -1 ,       -1 ,       -1 ,J3(0x434C),J2(0x5B59),J3(0x434D),
  @@ -5379,7 +5454,7 @@
    J3(0x452B),J3(0x452C),J3(0x452D),       -1 ,       -1 ,J3(0x452E),J3(0x452F),       -1 ,
    J2(0x354C),J2(0x5C74),       -1 ,J3(0x4530),       -1 ,       -1 ,       -1 ,J2(0x3521),
           -1 ,J2(0x464B),J2(0x5C73),       -1 ,J3(0x4531),       -1 ,J2(0x5C75),J3(0x4532),
  -        -1 ,       -1 ,J3(0x4533),J2(0x7A54),       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,J3(0x4533),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,J3(0x4534),J2(0x5C6F),J3(0x4535),       -1 ,       -1 ,       -1 ,       -1 ,
    J2(0x5C71),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J3(0x4536),J2(0x3360),
    J2(0x4349),J3(0x4537),       -1 ,J3(0x4538),J2(0x5C7C),       -1 ,J3(0x4539),J3(0x453A),
  @@ -5394,7 +5469,7 @@
    J3(0x454D),J3(0x454C),       -1 ,       -1 ,J3(0x454E),       -1 ,       -1 ,       -1 ,
    J3(0x454F),J2(0x5D2A),       -1 ,J2(0x4F26),J3(0x4550),J3(0x4551),J3(0x4552),       -1 ,
           -1 ,       -1 ,J2(0x5D2D),J2(0x367B),J3(0x4553),J3(0x4554),J2(0x5D29),J2(0x5D2B),
  -        -1 ,       -1 ,J2(0x7A58),       -1 ,J3(0x4555),       -1 ,       -1 ,J3(0x4556),
  +        -1 ,       -1 ,       -1 ,       -1 ,J3(0x4555),       -1 ,       -1 ,J3(0x4556),
    J2(0x4827),       -1 ,J2(0x5D2E),       -1 ,J3(0x4557),       -1 ,       -1 ,       -1 ,
    J3(0x4558),J3(0x4559),J3(0x455A),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,J2(0x5D32),J2(0x5D2F),J3(0x455B),J3(0x455C),       -1 ,       -1 ,
  @@ -5498,8 +5573,8 @@
    J2(0x4571),J2(0x5E4A),       -1 ,J3(0x475B),       -1 ,J3(0x475C),J2(0x5E44),J3(0x475D),
    J3(0x475E),J2(0x4338),J3(0x475F),       -1 ,J2(0x5E4B),J3(0x4760),J2(0x5E40),       -1 ,
    J2(0x5E46),J3(0x4761),J2(0x5E4D),J2(0x307C),J2(0x5E43),       -1 ,J2(0x5E4E),J3(0x4762),
  - J3(0x4763),J2(0x3F3C),J2(0x7A67),J2(0x3D5F),J3(0x4764),J2(0x4A25),J3(0x4765),J2(0x3A2E),
  - J2(0x7A66),J2(0x5E3B),J2(0x5E49),J2(0x453A),J3(0x4766),       -1 ,       -1 ,       -1 ,
  + J3(0x4763),J2(0x3F3C),       -1 ,J2(0x3D5F),J3(0x4764),J2(0x4A25),J3(0x4765),J2(0x3A2E),
  +        -1 ,J2(0x5E3B),J2(0x5E49),J2(0x453A),J3(0x4766),       -1 ,       -1 ,       -1 ,
    
    /* 6E00h */
    J3(0x4767),       -1 ,       -1 ,       -1 ,J3(0x4768),J2(0x4036),       -1 ,J2(0x3369),
  @@ -5575,7 +5650,7 @@
           -1 ,J2(0x5F46),       -1 ,       -1 ,       -1 ,J2(0x494E),       -1 ,J3(0x492F),
    J2(0x5F4E),       -1 ,J2(0x5F4B),J2(0x5F4A),       -1 ,J2(0x5F4D),J2(0x4654),J2(0x5F4F),
    J3(0x4930),       -1 ,       -1 ,J3(0x4931),       -1 ,       -1 ,J2(0x4375),J2(0x426D),
  - J2(0x7A73),       -1 ,       -1 ,       -1 ,J2(0x4025),       -1 ,       -1 ,J3(0x4932),
  +        -1 ,       -1 ,       -1 ,       -1 ,J2(0x4025),       -1 ,       -1 ,J3(0x4932),
    J2(0x5F50),       -1 ,J2(0x5F52),       -1 ,J3(0x4933),       -1 ,       -1 ,J3(0x4934),
           -1 ,J3(0x4935),       -1 ,       -1 ,J3(0x4936),       -1 ,J2(0x5F51),       -1 ,
           -1 ,       -1 ,       -1 ,J3(0x4937),J3(0x4938),       -1 ,       -1 ,       -1 ,
  @@ -5593,7 +5668,7 @@
           -1 ,       -1 ,       -1 ,       -1 ,J3(0x4952),       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,J3(0x4953),J2(0x5F59),J2(0x433A),J2(0x5F5C),J2(0x5F57),
    J3(0x4954),J3(0x4955),       -1 ,J2(0x5F5B),J3(0x4956),       -1 ,       -1 ,J3(0x4957),
  - J2(0x5F5A),J2(0x4540),J2(0x3059),J2(0x7927),       -1 ,       -1 ,       -1 ,       -1 ,
  + J2(0x5F5A),J2(0x4540),J2(0x3059),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
    J2(0x4E75),       -1 ,J3(0x4958),J2(0x5F5E),       -1 ,       -1 ,       -1 ,J2(0x3128),
           -1 ,J3(0x4959),       -1 ,J3(0x495A),J3(0x495B),J3(0x495C),J3(0x495D),       -1 ,
  @@ -5740,7 +5815,7 @@
    J2(0x6129),       -1 ,J3(0x4C7A),J3(0x4C7B),J3(0x4C7C),       -1 ,       -1 ,J3(0x4C7D),
    
    /* 7500h */
  -        -1 ,J2(0x7B33),       -1 ,J2(0x612C),J2(0x612B),J2(0x612D),J3(0x4C7E),       -1 ,
  +        -1 ,       -1 ,       -1 ,J2(0x612C),J2(0x612B),J2(0x612D),J3(0x4C7E),       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,J2(0x612E),J2(0x6130),J2(0x612F),       -1 ,
           -1 ,J2(0x3979),J3(0x4D21),J2(0x6132),       -1 ,J2(0x6131),J3(0x4D22),J3(0x4D23),
    J2(0x3445),       -1 ,J2(0x3F53),       -1 ,J2(0x453C),       -1 ,J2(0x6133),J2(0x4038),
  @@ -5790,10 +5865,10 @@
    J2(0x6179),J2(0x617A),J2(0x617B),       -1 ,J2(0x617D),J3(0x4E30),J3(0x4E31),J3(0x4E32),
    J2(0x617E),J3(0x4E33),J2(0x6221),       -1 ,J3(0x4E34),       -1 ,J2(0x6222),       -1 ,
    J2(0x6223),       -1 ,J2(0x482F),J2(0x4550),J2(0x6224),J2(0x4772),J2(0x4934),       -1 ,
  - J2(0x6225),J3(0x4E35),J2(0x7B35),J2(0x6226),J2(0x452A),J3(0x4E36),J2(0x3327),J2(0x3944),
  + J2(0x6225),J3(0x4E35),       -1 ,J2(0x6226),J2(0x452A),J3(0x4E36),J2(0x3327),J2(0x3944),
    J2(0x6227),       -1 ,       -1 ,J2(0x6228),J3(0x4E37),J3(0x4E38),J2(0x6229),       -1 ,
    J2(0x3B29),       -1 ,       -1 ,J2(0x622B),       -1 ,J3(0x4E39),J2(0x622A),       -1 ,
  -        -1 ,J2(0x622C),J2(0x622D),J3(0x4E3A),J3(0x4E3B),J3(0x4E3C),J2(0x7B37),J3(0x4E3D),
  +        -1 ,J2(0x622C),J2(0x622D),J3(0x4E3A),J3(0x4E3B),J3(0x4E3C),       -1 ,J3(0x4E3D),
    J3(0x4E3E),       -1 ,J3(0x4E3F),J3(0x4E40),J3(0x4E41),J3(0x4E42),J3(0x4E43),J3(0x4E44),
    J3(0x4E45),       -1 ,J3(0x4E46),       -1 ,       -1 ,J3(0x4E47),J2(0x4869),       -1 ,
    J2(0x622E),       -1 ,       -1 ,       -1 ,J2(0x622F),       -1 ,       -1 ,J2(0x7369),
  @@ -5882,7 +5957,7 @@
           -1 ,J2(0x6328),J3(0x503F),       -1 ,J3(0x5040),       -1 ,J3(0x5041),J3(0x5042),
    J3(0x5043),       -1 ,       -1 ,       -1 ,       -1 ,J3(0x5044),J2(0x6268),J3(0x5045),
           -1 ,J3(0x5046),J2(0x626A),J2(0x632A),J2(0x6329),J3(0x5047),       -1 ,       -1 ,
  - J2(0x7B41),J3(0x5048),       -1 ,       -1 ,J3(0x5049),J3(0x504A),       -1 ,       -1 ,
  +        -1 ,J3(0x5048),       -1 ,       -1 ,J3(0x5049),J3(0x504A),       -1 ,       -1 ,
           -1 ,       -1 ,J2(0x3C28),J3(0x504B),J2(0x4E69),J3(0x504C),J2(0x3C52),J3(0x504D),
    J2(0x632B),J2(0x3737),       -1 ,       -1 ,J3(0x504E),J3(0x504F),J3(0x5050),J2(0x3540),
    J2(0x3527),J2(0x3B63),J3(0x5051),J3(0x5052),       -1 ,       -1 ,       -1 ,J3(0x5053),
  @@ -5938,7 +6013,7 @@
    J2(0x635E),J3(0x5165),J2(0x6366),J2(0x4E29),J3(0x5166),J2(0x6367),J3(0x5167),J2(0x6368),
           -1 ,J3(0x5168),J2(0x5474),J2(0x636A),       -1 ,J2(0x6369),       -1 ,       -1 ,
           -1 ,J2(0x636B),J2(0x636C),J3(0x5169),J2(0x4E35),J2(0x636D),       -1 ,J2(0x706F),
  - J2(0x3E4F),J2(0x636E),J2(0x636F),J2(0x3D57),       -1 ,J2(0x4638),J2(0x6370),J2(0x7B49),
  + J2(0x3E4F),J2(0x636E),J2(0x636F),J2(0x3D57),       -1 ,J2(0x4638),J2(0x6370),       -1 ,
    J3(0x516A),J3(0x516B),J2(0x4328),J3(0x516C),J3(0x516D),J2(0x6371),       -1 ,J2(0x433C),
    J2(0x6372),J3(0x516E),       -1 ,       -1 ,J3(0x516F),       -1 ,J2(0x3625),       -1 ,
    J2(0x513F),J2(0x435D),J2(0x3C33),J3(0x5170),       -1 ,J3(0x5171),J3(0x5172),J2(0x3448),
  @@ -6032,13 +6107,13 @@
    J3(0x5377),J2(0x6535),       -1 ,J3(0x5378),J3(0x5379),J3(0x537A),       -1 ,J2(0x6537),
           -1 ,J3(0x537B),       -1 ,J2(0x6534),       -1 ,       -1 ,J3(0x537C),J3(0x537D),
           -1 ,J2(0x3751),J2(0x4233),J2(0x6539),J2(0x416E),J3(0x537E),J3(0x5421),J2(0x6546),
  - J2(0x7B51),       -1 ,J2(0x6542),J2(0x653C),       -1 ,       -1 ,J3(0x5422),J3(0x5423),
  +        -1 ,       -1 ,J2(0x6542),J2(0x653C),       -1 ,       -1 ,J3(0x5422),J3(0x5423),
           -1 ,       -1 ,J3(0x5424),J2(0x6540),J2(0x3C7A),J2(0x305D),J2(0x653B),J2(0x6543),
    J2(0x6547),J2(0x394B),J2(0x4C56),J3(0x5425),J2(0x4456),J2(0x653D),J3(0x5426),J3(0x5427),
    J2(0x6545),J3(0x5428),J2(0x653A),J2(0x433E),       -1 ,J2(0x653F),J2(0x303D),J2(0x4C4A),
           -1 ,       -1 ,J3(0x5429),J3(0x542A),J3(0x542B),J3(0x542C),J3(0x542D),J2(0x653E),
           -1 ,       -1 ,J2(0x365B),J2(0x486C),J3(0x542E),J3(0x542F),J3(0x5430),J2(0x416D),
  -        -1 ,J2(0x4E50),J2(0x3D6F),       -1 ,       -1 ,J2(0x656E),J2(0x7B52),J3(0x5431),
  +        -1 ,J2(0x4E50),J2(0x3D6F),       -1 ,       -1 ,J2(0x656E),       -1 ,J3(0x5431),
    J2(0x6548),J3(0x5432),J2(0x407E),       -1 ,J2(0x6544),J2(0x6549),J2(0x654B),       -1 ,
    J2(0x4479),J2(0x654E),J3(0x5434),       -1 ,J2(0x654A),J3(0x5435),J3(0x5436),       -1 ,
    J2(0x4A54),J2(0x344B),J3(0x5437),J3(0x5438),J2(0x4C4B),J3(0x5439),       -1 ,J2(0x305E),
  @@ -6228,7 +6303,7 @@
           -1 ,J2(0x4170),J2(0x3755),       -1 ,       -1 ,J3(0x5777),J3(0x5778),J2(0x3141),
    J2(0x6828),J3(0x5779),J2(0x3953),J3(0x583E),J3(0x5763),J3(0x577A),J3(0x577B),J3(0x577C),
    J2(0x4171),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,J2(0x7B58),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  +        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
    J3(0x577D),       -1 ,       -1 ,J2(0x683A),       -1 ,J2(0x683B),       -1 ,J2(0x3259),
    J3(0x577E),       -1 ,       -1 ,J2(0x322E),J2(0x6838),J3(0x5821),       -1 ,J3(0x5822),
  @@ -6306,7 +6381,7 @@
    J3(0x5960),J2(0x4665),       -1 ,J2(0x692D),J2(0x6930),J3(0x5961),       -1 ,J3(0x5962),
    J3(0x5963),       -1 ,J3(0x5964),       -1 ,J2(0x6926),J3(0x5965),J2(0x4126),J3(0x5966),
    J2(0x692A),J2(0x3B27),J2(0x3F45),J2(0x3730),J2(0x4C74),J3(0x5974),J2(0x4C79),J2(0x3D72),
  - J2(0x7B62),       -1 ,       -1 ,       -1 ,J3(0x5967),       -1 ,J3(0x5968),J3(0x5969),
  +        -1 ,       -1 ,       -1 ,       -1 ,J3(0x5967),       -1 ,J3(0x5968),J3(0x5969),
    J3(0x596A),J2(0x6937),J2(0x6935),       -1 ,J3(0x596B),J3(0x596C),J3(0x596D),J3(0x596E),
           -1 ,J2(0x4F4E),J3(0x596F),       -1 ,       -1 ,       -1 ,       -1 ,J3(0x5970),
           -1 ,J2(0x6934),J3(0x5971),J3(0x5972),       -1 ,J2(0x4D75),J3(0x5973),J2(0x6936),
  @@ -6386,7 +6461,7 @@
    J3(0x5B65),J2(0x332A),J3(0x5B66),J2(0x3542),       -1 ,       -1 ,J2(0x6A39),J3(0x5B67),
    
    /* 8800h */
  -        -1 ,J3(0x5B68),       -1 ,J3(0x5B69),       -1 ,J2(0x6A24),J3(0x5B6A),J2(0x7B65),
  +        -1 ,J3(0x5B68),       -1 ,J3(0x5B69),       -1 ,J2(0x6A24),J3(0x5B6A),       -1 ,
           -1 ,J3(0x5B6B),J3(0x5B6C),J3(0x5B6D),       -1 ,J2(0x6A38),J2(0x6A3C),J2(0x6A37),
    J3(0x5B6E),J2(0x6A3E),J3(0x5B70),J3(0x5B71),J3(0x5B72),J2(0x6A40),J2(0x6A3F),       -1 ,
    J3(0x5B73),J3(0x5B6F),J3(0x5B74),J3(0x5B75),J3(0x5B76),       -1 ,J3(0x5B77),J3(0x5B78),
  @@ -6503,7 +6578,7 @@
           -1 ,       -1 ,       -1 ,J3(0x5E50),       -1 ,       -1 ,J2(0x3759),       -1 ,
           -1 ,       -1 ,       -1 ,J2(0x6B7E),J2(0x6C22),J3(0x5E51),       -1 ,J2(0x6C23),
    J2(0x3544),J2(0x6641),J2(0x3E79),       -1 ,J2(0x6C24),       -1 ,J3(0x5E52),J2(0x386E),
  - J3(0x5E53),J3(0x5E54),       -1 ,       -1 ,J3(0x5E55),J2(0x6C25),J3(0x5E56),J2(0x7B70),
  + J3(0x5E53),J3(0x5E54),       -1 ,       -1 ,J3(0x5E55),J2(0x6C25),J3(0x5E56),       -1 ,
    J2(0x6C26),J3(0x5E57),       -1 ,J2(0x3B3E),J3(0x5E58),J3(0x5E59),       -1 ,       -1 ,
           -1 ,       -1 ,J2(0x5A4E),J3(0x5E5A),J2(0x6C27),J3(0x5E5B),J2(0x6C28),J3(0x5E5C),
    J2(0x3D32),       -1 ,J2(0x6C29),J2(0x6C2A),J3(0x5E5D),J3(0x5E5E),J2(0x6C2B),       -1 ,
  @@ -6552,7 +6627,7 @@
           -1 ,J3(0x5F33),J2(0x6C4F),J2(0x3B3F),J2(0x3B72),J3(0x5F34),J2(0x3E5E),       -1 ,
    J2(0x4765),J3(0x5F35),J2(0x382D),J2(0x6C4E),J2(0x6C4D),       -1 ,J2(0x496A),       -1 ,
    J3(0x5F36),       -1 ,J2(0x3C41),       -1 ,J3(0x5F37),J2(0x4552),       -1 ,J3(0x5F38),
  - J3(0x5F39),       -1 ,J3(0x5F3A),       -1 ,J2(0x7B72),J3(0x5F3B),       -1 ,J3(0x5F3C),
  + J3(0x5F39),       -1 ,J3(0x5F3A),       -1 ,       -1 ,J3(0x5F3B),       -1 ,J3(0x5F3C),
    J3(0x5F3D),       -1 ,J2(0x6C51),J2(0x6C52),J2(0x3958),J2(0x6C50),J3(0x5F3E),J3(0x5F3F),
    
    /* 8D00h */
  @@ -6570,7 +6645,7 @@
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,J2(0x4056),J3(0x5F46),J2(0x3C4F),J2(0x6C5F),
           -1 ,J3(0x5F47),       -1 ,J2(0x3352),J3(0x5F48),J2(0x6C60),J3(0x5F49),       -1 ,
  - J2(0x4176),J2(0x6C61),       -1 ,J2(0x6C62),J2(0x496B),       -1 ,J2(0x7B74),J2(0x352F),
  + J2(0x4176),J2(0x6C61),       -1 ,J2(0x6C62),J2(0x496B),       -1 ,       -1 ,J2(0x352F),
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J3(0x5F4A),
           -1 ,J2(0x6C63),J3(0x5F4B),       -1 ,J3(0x5F4C),J2(0x4436),       -1 ,       -1 ,
    J3(0x5F4D),       -1 ,J2(0x315B),       -1 ,       -1 ,J3(0x5F4E),       -1 ,       -1 ,
  @@ -6685,7 +6760,7 @@
           -1 ,J2(0x306A),       -1 ,J3(0x617E),J3(0x6221),J3(0x6222),       -1 ,J3(0x6223),
    J3(0x6224),       -1 ,J2(0x3959),       -1 ,J3(0x617C),       -1 ,J2(0x4F3A),       -1 ,
           -1 ,       -1 ,J3(0x622D),       -1 ,       -1 ,J3(0x6225),       -1 ,J3(0x6226),
  - J3(0x6227),J3(0x6228),       -1 ,J2(0x6E3E),J3(0x6229),J3(0x622A),J2(0x7B7A),J3(0x622B),
  + J3(0x6227),J3(0x6228),       -1 ,J2(0x6E3E),J3(0x6229),J3(0x622A),       -1 ,J3(0x622B),
           -1 ,J2(0x3734),J2(0x6E3B),       -1 ,J2(0x6E3C),J3(0x622C),       -1 ,       -1 ,
    J2(0x4974),       -1 ,       -1 ,J3(0x622F),       -1 ,J2(0x3354),       -1 ,J3(0x6230),
    J3(0x6231),       -1 ,       -1 ,       -1 ,J3(0x6232),J2(0x4D39),J3(0x622E),J2(0x363F),
  @@ -6694,7 +6769,7 @@
    /* 9100h */
    J3(0x6235),       -1 ,J2(0x6E3F),       -1 ,J3(0x6236),J3(0x6237),J3(0x6238),       -1 ,
    J3(0x6239),       -1 ,       -1 ,       -1 ,       -1 ,J3(0x623A),       -1 ,       -1 ,
  - J3(0x623B),       -1 ,J2(0x6E40),       -1 ,J3(0x623C),J2(0x7B7C),J3(0x623D),J3(0x623E),
  + J3(0x623B),       -1 ,J2(0x6E40),       -1 ,J3(0x623C),       -1 ,J3(0x623D),J3(0x623E),
    J3(0x623F),J2(0x6E41),J3(0x6240),       -1 ,J3(0x6241),       -1 ,J3(0x6242),       -1 ,
    J3(0x6243),       -1 ,J3(0x6245),J3(0x6246),       -1 ,J3(0x6244),       -1 ,J3(0x6247),
           -1 ,J3(0x6248),       -1 ,       -1 ,       -1 ,J2(0x4522),J3(0x6249),J3(0x624A),
  @@ -6846,7 +6921,7 @@
    J3(0x657D),J3(0x657E),       -1 ,       -1 ,       -1 ,       -1 ,J3(0x6621),       -1 ,
    J2(0x4C67),       -1 ,J2(0x6F59),J2(0x412E),J3(0x6622),       -1 ,       -1 ,J2(0x6F5A),
    J3(0x6623),J2(0x4A44),J2(0x6F5B),J2(0x332B),J3(0x6624),J3(0x6625),J3(0x6626),J2(0x313C),
  -        -1 ,J2(0x3457),J2(0x7C4E),J2(0x3456),J2(0x6F5C),       -1 ,J2(0x6F5D),       -1 ,
  +        -1 ,J2(0x3457),       -1 ,J2(0x3456),J2(0x6F5C),       -1 ,J2(0x6F5D),       -1 ,
    J2(0x6F5E),J2(0x6F5F),       -1 ,       -1 ,       -1 ,J3(0x6627),J3(0x6628),J3(0x6629),
    J2(0x6F60),J3(0x662A),J2(0x3458),J2(0x3355),J2(0x395E),J2(0x4836),J3(0x662B),J2(0x6F62),
    J2(0x6F61),J3(0x662C),       -1 ,J3(0x662D),J3(0x662E),J2(0x6F63),       -1 ,       -1 ,
  @@ -6903,10 +6978,10 @@
           -1 ,J3(0x6727),J3(0x6728),J3(0x6729),J2(0x7045),       -1 ,       -1 ,J2(0x4C38),
    J3(0x672A),       -1 ,J2(0x7046),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
    J2(0x7047),J3(0x672B),J2(0x4F2A),J3(0x672C),       -1 ,       -1 ,       -1 ,       -1 ,
  - J2(0x5B31),J2(0x7048),       -1 ,J2(0x7C54),       -1 ,J2(0x7049),J2(0x704A),       -1 ,
  + J2(0x5B31),J2(0x7048),       -1 ,       -1 ,       -1 ,J2(0x7049),J2(0x704A),       -1 ,
           -1 ,J3(0x672D),J2(0x704E),J3(0x672E),J2(0x704B),       -1 ,J2(0x704C),       -1 ,
  - J2(0x704D),J2(0x704F),J3(0x672F),       -1 ,       -1 ,J2(0x7C56),J3(0x6730),J3(0x6731),
  -        -1 ,J2(0x7C58),J2(0x4044),       -1 ,       -1 ,J3(0x6732),J2(0x4C77),J3(0x6733),
  + J2(0x704D),J2(0x704F),J3(0x672F),       -1 ,       -1 ,       -1 ,J3(0x6730),J3(0x6731),
  +        -1 ,       -1 ,J2(0x4044),       -1 ,       -1 ,J3(0x6732),J2(0x4C77),J3(0x6733),
    J3(0x6734),J2(0x4045),J3(0x6735),J3(0x6736),J2(0x7050),       -1 ,J2(0x4873),       -1 ,
    J2(0x7051),J2(0x7353),J2(0x4C4C),J3(0x6737),J2(0x7052),       -1 ,J2(0x7053),J3(0x6738),
    J2(0x7054),J2(0x3357),J3(0x6739),J2(0x7056),       -1 ,J2(0x3F59),J3(0x673A),       -1 ,
  @@ -6983,7 +7058,7 @@
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x3C73),J2(0x7144),
  - J2(0x7145),J2(0x3961),       -1 ,J3(0x6877),       -1 ,J3(0x6878),J2(0x7C60),J3(0x6879),
  + J2(0x7145),J2(0x3961),       -1 ,J3(0x6877),       -1 ,J3(0x6878),       -1 ,J3(0x6879),
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x7146),J3(0x687A),       -1 ,
    J2(0x333E),       -1 ,       -1 ,       -1 ,J2(0x474F),J2(0x7147),J2(0x7148),       -1 ,
    J3(0x687B),J3(0x687C),J3(0x687D),J2(0x435A),J2(0x466B),J3(0x687E),       -1 ,       -1 ,
  @@ -7025,7 +7100,7 @@
    J2(0x716F),J3(0x6962),       -1 ,J3(0x6963),J2(0x3F71),       -1 ,J3(0x6964),       -1 ,
    J3(0x6965),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J3(0x6966),J2(0x7170),
    J3(0x6967),J2(0x7171),J3(0x6968),J2(0x7172),J2(0x7173),J3(0x6969),J3(0x696A),J3(0x696B),
  - J2(0x3962),J2(0x7C62),       -1 ,J3(0x696C),J3(0x696D),       -1 ,J2(0x7174),J2(0x7175),
  + J2(0x3962),       -1 ,       -1 ,J3(0x696C),J3(0x696D),       -1 ,J2(0x7174),J2(0x7175),
    J3(0x696E),       -1 ,J2(0x7176),J2(0x7177),J3(0x696F),J3(0x6970),J2(0x7178),J3(0x6971),
           -1 ,J3(0x6972),J2(0x4831),J2(0x717A),J3(0x6973),J2(0x4926),J2(0x717B),J2(0x7179),
           -1 ,J2(0x717D),J3(0x6974),J3(0x6975),J2(0x717C),J3(0x6976),       -1 ,J2(0x717E),
  @@ -7046,7 +7121,7 @@
    J2(0x7236),       -1 ,J2(0x357B),J3(0x6A40),       -1 ,       -1 ,J3(0x6A41),       -1 ,
           -1 ,J3(0x6A42),       -1 ,J3(0x6A43),       -1 ,J3(0x6A44),J3(0x6A45),       -1 ,
    J3(0x6A46),       -1 ,J3(0x6A47),J3(0x6A48),J3(0x6A49),J3(0x6A4A),J3(0x6A4B),J2(0x4F25),
  -        -1 ,       -1 ,J2(0x7C65),J3(0x6A4C),J2(0x7237),J3(0x6A4D),       -1 ,J3(0x6A4E),
  +        -1 ,       -1 ,       -1 ,J3(0x6A4C),J2(0x7237),J3(0x6A4D),       -1 ,J3(0x6A4E),
    J3(0x6A4F),J3(0x6A50),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J3(0x6A51),
    J3(0x6A52),       -1 ,       -1 ,J2(0x7239),J3(0x6A53),J3(0x6A54),J3(0x6A55),J3(0x6A56),
           -1 ,J3(0x6A57),J3(0x6A58),J3(0x6A59),       -1 ,J3(0x6A5A),J2(0x303E),J3(0x6A5B),
  @@ -7160,7 +7235,7 @@
    J2(0x7350),J2(0x396D),J2(0x4C4D),J2(0x4B63),J2(0x5677),       -1 ,J2(0x5D60),J2(0x4B7B),
           -1 ,       -1 ,       -1 ,       -1 ,J2(0x322B),       -1 ,J3(0x6C71),       -1 ,
    J3(0x6C72),       -1 ,       -1 ,J3(0x6C73),J2(0x7354),J2(0x3550),J2(0x7355),J2(0x7356),
  - J2(0x7357),J2(0x7C6E),J2(0x3975),       -1 ,J2(0x7358),J3(0x6C74),       -1 ,       -1 ,
  + J2(0x7357),       -1 ,J2(0x3975),       -1 ,J2(0x7358),J3(0x6C74),       -1 ,       -1 ,
    J2(0x6054),J2(0x4C5B),       -1 ,J2(0x4263),J2(0x7359),J2(0x735B),J2(0x735A),J3(0x6C75),
    J2(0x735C),       -1 ,       -1 ,       -1 ,J3(0x6C76),J2(0x735D),       -1 ,J3(0x6C77),
    J2(0x735E),       -1 ,       -1 ,       -1 ,J3(0x6C78),J3(0x6C79),J3(0x6C7A),J2(0x735F),
  @@ -7192,52 +7267,8 @@
   };
   
   static const int table_ucs_jis_r1[] = {
  - /* F900h */
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,J2(0x7A46),       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,J2(0x7C4F),       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  - 
  - /* FA00h */
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  -        -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,J2(0x7954),J2(0x795F),
  - J2(0x7960),J2(0x7975),J2(0x7A3E),J2(0x7A4E),J2(0x7A50),J2(0x7A7B),J2(0x7B23),J2(0x7B3A),
  - J2(0x7B42),J2(0x7B43),J2(0x7B44),J2(0x7B46),J2(0x7B4A),J2(0x7B4D),J2(0x7B56),J2(0x7B61),
  - J2(0x7B63),J2(0x7B64),J2(0x7B6D),J2(0x7B75),J2(0x7B77),J2(0x7B78),J2(0x7B7B),J2(0x7C39),
  - J2(0x7C40),J2(0x7C50),J2(0x7C5C),J2(0x7C5D),J2(0x7C5F),J2(0x7C6C)
  -};
  -
  -static const int table_ucs_jis_r2[] = {
    /* FF00h */
  -        -1 ,J2(0x212A),J2(0x7C7E),J2(0x2174),J2(0x2170),J2(0x2173),J2(0x2175),J2(0x7C7D),
  +        -1 ,J2(0x212A),       -1 ,J2(0x2174),J2(0x2170),J2(0x2173),J2(0x2175),       -1 ,
    J2(0x214A),J2(0x214B),J2(0x2176),J2(0x215C),J2(0x2124),J2(0x215D),J2(0x2125),J2(0x213F),
    J2(0x2330),J2(0x2331),J2(0x2332),J2(0x2333),J2(0x2334),J2(0x2335),J2(0x2336),J2(0x2337),
    J2(0x2338),J2(0x2339),J2(0x2127),J2(0x2128),J2(0x2163),J2(0x2161),J2(0x2164),J2(0x2129),
  @@ -7265,216 +7296,1409 @@
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
           -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,       -1 ,
  - J2(0x2171),J2(0x2172),J2(0x224C),J2(0x2131),J2(0x7C7C),J2(0x216F)
  + J2(0x2171),J2(0x2172),J2(0x224C),J2(0x2131),       -1 ,J2(0x216F)
   };
   
  +
  +static const int table_ucs_cp932_user_euc[] = {
  + /* E000h */
  + CP(0x7521),CP(0x7522),CP(0x7523),CP(0x7524),CP(0x7525),CP(0x7526),CP(0x7527),CP(0x7528),
  + CP(0x7529),CP(0x752A),CP(0x752B),CP(0x752C),CP(0x752D),CP(0x752E),CP(0x752F),CP(0x7530),
  + CP(0x7531),CP(0x7532),CP(0x7533),CP(0x7534),CP(0x7535),CP(0x7536),CP(0x7537),CP(0x7538),
  + CP(0x7539),CP(0x753A),CP(0x753B),CP(0x753C),CP(0x753D),CP(0x753E),CP(0x753F),CP(0x7540),
  + CP(0x7541),CP(0x7542),CP(0x7543),CP(0x7544),CP(0x7545),CP(0x7546),CP(0x7547),CP(0x7548),
  + CP(0x7549),CP(0x754A),CP(0x754B),CP(0x754C),CP(0x754D),CP(0x754E),CP(0x754F),CP(0x7550),
  + CP(0x7551),CP(0x7552),CP(0x7553),CP(0x7554),CP(0x7555),CP(0x7556),CP(0x7557),CP(0x7558),
  + CP(0x7559),CP(0x755A),CP(0x755B),CP(0x755C),CP(0x755D),CP(0x755E),CP(0x755F),CP(0x7560),
  + CP(0x7561),CP(0x7562),CP(0x7563),CP(0x7564),CP(0x7565),CP(0x7566),CP(0x7567),CP(0x7568),
  + CP(0x7569),CP(0x756A),CP(0x756B),CP(0x756C),CP(0x756D),CP(0x756E),CP(0x756F),CP(0x7570),
  + CP(0x7571),CP(0x7572),CP(0x7573),CP(0x7574),CP(0x7575),CP(0x7576),CP(0x7577),CP(0x7578),
  + CP(0x7579),CP(0x757A),CP(0x757B),CP(0x757C),CP(0x757D),CP(0x757E),CP(0x7621),CP(0x7622),
  + CP(0x7623),CP(0x7624),CP(0x7625),CP(0x7626),CP(0x7627),CP(0x7628),CP(0x7629),CP(0x762A),
  + CP(0x762B),CP(0x762C),CP(0x762D),CP(0x762E),CP(0x762F),CP(0x7630),CP(0x7631),CP(0x7632),
  + CP(0x7633),CP(0x7634),CP(0x7635),CP(0x7636),CP(0x7637),CP(0x7638),CP(0x7639),CP(0x763A),
  + CP(0x763B),CP(0x763C),CP(0x763D),CP(0x763E),CP(0x763F),CP(0x7640),CP(0x7641),CP(0x7642),
  + CP(0x7643),CP(0x7644),CP(0x7645),CP(0x7646),CP(0x7647),CP(0x7648),CP(0x7649),CP(0x764A),
  + CP(0x764B),CP(0x764C),CP(0x764D),CP(0x764E),CP(0x764F),CP(0x7650),CP(0x7651),CP(0x7652),
  + CP(0x7653),CP(0x7654),CP(0x7655),CP(0x7656),CP(0x7657),CP(0x7658),CP(0x7659),CP(0x765A),
  + CP(0x765B),CP(0x765C),CP(0x765D),CP(0x765E),CP(0x765F),CP(0x7660),CP(0x7661),CP(0x7662),
  + CP(0x7663),CP(0x7664),CP(0x7665),CP(0x7666),CP(0x7667),CP(0x7668),CP(0x7669),CP(0x766A),
  + CP(0x766B),CP(0x766C),CP(0x766D),CP(0x766E),CP(0x766F),CP(0x7670),CP(0x7671),CP(0x7672),
  + CP(0x7673),CP(0x7674),CP(0x7675),CP(0x7676),CP(0x7677),CP(0x7678),CP(0x7679),CP(0x767A),
  + CP(0x767B),CP(0x767C),CP(0x767D),CP(0x767E),CP(0x7721),CP(0x7722),CP(0x7723),CP(0x7724),
  + CP(0x7725),CP(0x7726),CP(0x7727),CP(0x7728),CP(0x7729),CP(0x772A),CP(0x772B),CP(0x772C),
  + CP(0x772D),CP(0x772E),CP(0x772F),CP(0x7730),CP(0x7731),CP(0x7732),CP(0x7733),CP(0x7734),
  + CP(0x7735),CP(0x7736),CP(0x7737),CP(0x7738),CP(0x7739),CP(0x773A),CP(0x773B),CP(0x773C),
  + CP(0x773D),CP(0x773E),CP(0x773F),CP(0x7740),CP(0x7741),CP(0x7742),CP(0x7743),CP(0x7744),
  + CP(0x7745),CP(0x7746),CP(0x7747),CP(0x7748),CP(0x7749),CP(0x774A),CP(0x774B),CP(0x774C),
  + CP(0x774D),CP(0x774E),CP(0x774F),CP(0x7750),CP(0x7751),CP(0x7752),CP(0x7753),CP(0x7754),
  + CP(0x7755),CP(0x7756),CP(0x7757),CP(0x7758),CP(0x7759),CP(0x775A),CP(0x775B),CP(0x775C),
  + CP(0x775D),CP(0x775E),CP(0x775F),CP(0x7760),CP(0x7761),CP(0x7762),CP(0x7763),CP(0x7764),
  + 
  + /* E100h */
  + CP(0x7765),CP(0x7766),CP(0x7767),CP(0x7768),CP(0x7769),CP(0x776A),CP(0x776B),CP(0x776C),
  + CP(0x776D),CP(0x776E),CP(0x776F),CP(0x7770),CP(0x7771),CP(0x7772),CP(0x7773),CP(0x7774),
  + CP(0x7775),CP(0x7776),CP(0x7777),CP(0x7778),CP(0x7779),CP(0x777A),CP(0x777B),CP(0x777C),
  + CP(0x777D),CP(0x777E),CP(0x7821),CP(0x7822),CP(0x7823),CP(0x7824),CP(0x7825),CP(0x7826),
  + CP(0x7827),CP(0x7828),CP(0x7829),CP(0x782A),CP(0x782B),CP(0x782C),CP(0x782D),CP(0x782E),
  + CP(0x782F),CP(0x7830),CP(0x7831),CP(0x7832),CP(0x7833),CP(0x7834),CP(0x7835),CP(0x7836),
  + CP(0x7837),CP(0x7838),CP(0x7839),CP(0x783A),CP(0x783B),CP(0x783C),CP(0x783D),CP(0x783E),
  + CP(0x783F),CP(0x7840),CP(0x7841),CP(0x7842),CP(0x7843),CP(0x7844),CP(0x7845),CP(0x7846),
  + CP(0x7847),CP(0x7848),CP(0x7849),CP(0x784A),CP(0x784B),CP(0x784C),CP(0x784D),CP(0x784E),
  + CP(0x784F),CP(0x7850),CP(0x7851),CP(0x7852),CP(0x7853),CP(0x7854),CP(0x7855),CP(0x7856),
  + CP(0x7857),CP(0x7858),CP(0x7859),CP(0x785A),CP(0x785B),CP(0x785C),CP(0x785D),CP(0x785E),
  + CP(0x785F),CP(0x7860),CP(0x7861),CP(0x7862),CP(0x7863),CP(0x7864),CP(0x7865),CP(0x7866),
  + CP(0x7867),CP(0x7868),CP(0x7869),CP(0x786A),CP(0x786B),CP(0x786C),CP(0x786D),CP(0x786E),
  + CP(0x786F),CP(0x7870),CP(0x7871),CP(0x7872),CP(0x7873),CP(0x7874),CP(0x7875),CP(0x7876),
  + CP(0x7877),CP(0x7878),CP(0x7879),CP(0x787A),CP(0x787B),CP(0x787C),CP(0x787D),CP(0x787E),
  + CP(0x7921),CP(0x7922),CP(0x7923),CP(0x7924),CP(0x7925),CP(0x7926),CP(0x7927),CP(0x7928),
  + CP(0x7929),CP(0x792A),CP(0x792B),CP(0x792C),CP(0x792D),CP(0x792E),CP(0x792F),CP(0x7930),
  + CP(0x7931),CP(0x7932),CP(0x7933),CP(0x7934),CP(0x7935),CP(0x7936),CP(0x7937),CP(0x7938),
  + CP(0x7939),CP(0x793A),CP(0x793B),CP(0x793C),CP(0x793D),CP(0x793E),CP(0x793F),CP(0x7940),
  + CP(0x7941),CP(0x7942),CP(0x7943),CP(0x7944),CP(0x7945),CP(0x7946),CP(0x7947),CP(0x7948),
  + CP(0x7949),CP(0x794A),CP(0x794B),CP(0x794C),CP(0x794D),CP(0x794E),CP(0x794F),CP(0x7950),
  + CP(0x7951),CP(0x7952),CP(0x7953),CP(0x7954),CP(0x7955),CP(0x7956),CP(0x7957),CP(0x7958),
  + CP(0x7959),CP(0x795A),CP(0x795B),CP(0x795C),CP(0x795D),CP(0x795E),CP(0x795F),CP(0x7960),
  + CP(0x7961),CP(0x7962),CP(0x7963),CP(0x7964),CP(0x7965),CP(0x7966),CP(0x7967),CP(0x7968),
  + CP(0x7969),CP(0x796A),CP(0x796B),CP(0x796C),CP(0x796D),CP(0x796E),CP(0x796F),CP(0x7970),
  + CP(0x7971),CP(0x7972),CP(0x7973),CP(0x7974),CP(0x7975),CP(0x7976),CP(0x7977),CP(0x7978),
  + CP(0x7979),CP(0x797A),CP(0x797B),CP(0x797C),CP(0x797D),CP(0x797E),CP(0x7A21),CP(0x7A22),
  + CP(0x7A23),CP(0x7A24),CP(0x7A25),CP(0x7A26),CP(0x7A27),CP(0x7A28),CP(0x7A29),CP(0x7A2A),
  + CP(0x7A2B),CP(0x7A2C),CP(0x7A2D),CP(0x7A2E),CP(0x7A2F),CP(0x7A30),CP(0x7A31),CP(0x7A32),
  + CP(0x7A33),CP(0x7A34),CP(0x7A35),CP(0x7A36),CP(0x7A37),CP(0x7A38),CP(0x7A39),CP(0x7A3A),
  + CP(0x7A3B),CP(0x7A3C),CP(0x7A3D),CP(0x7A3E),CP(0x7A3F),CP(0x7A40),CP(0x7A41),CP(0x7A42),
  + CP(0x7A43),CP(0x7A44),CP(0x7A45),CP(0x7A46),CP(0x7A47),CP(0x7A48),CP(0x7A49),CP(0x7A4A),
  + 
  + /* E200h */
  + CP(0x7A4B),CP(0x7A4C),CP(0x7A4D),CP(0x7A4E),CP(0x7A4F),CP(0x7A50),CP(0x7A51),CP(0x7A52),
  + CP(0x7A53),CP(0x7A54),CP(0x7A55),CP(0x7A56),CP(0x7A57),CP(0x7A58),CP(0x7A59),CP(0x7A5A),
  + CP(0x7A5B),CP(0x7A5C),CP(0x7A5D),CP(0x7A5E),CP(0x7A5F),CP(0x7A60),CP(0x7A61),CP(0x7A62),
  + CP(0x7A63),CP(0x7A64),CP(0x7A65),CP(0x7A66),CP(0x7A67),CP(0x7A68),CP(0x7A69),CP(0x7A6A),
  + CP(0x7A6B),CP(0x7A6C),CP(0x7A6D),CP(0x7A6E),CP(0x7A6F),CP(0x7A70),CP(0x7A71),CP(0x7A72),
  + CP(0x7A73),CP(0x7A74),CP(0x7A75),CP(0x7A76),CP(0x7A77),CP(0x7A78),CP(0x7A79),CP(0x7A7A),
  + CP(0x7A7B),CP(0x7A7C),CP(0x7A7D),CP(0x7A7E),CP(0x7B21),CP(0x7B22),CP(0x7B23),CP(0x7B24),
  + CP(0x7B25),CP(0x7B26),CP(0x7B27),CP(0x7B28),CP(0x7B29),CP(0x7B2A),CP(0x7B2B),CP(0x7B2C),
  + CP(0x7B2D),CP(0x7B2E),CP(0x7B2F),CP(0x7B30),CP(0x7B31),CP(0x7B32),CP(0x7B33),CP(0x7B34),
  + CP(0x7B35),CP(0x7B36),CP(0x7B37),CP(0x7B38),CP(0x7B39),CP(0x7B3A),CP(0x7B3B),CP(0x7B3C),
  + CP(0x7B3D),CP(0x7B3E),CP(0x7B3F),CP(0x7B40),CP(0x7B41),CP(0x7B42),CP(0x7B43),CP(0x7B44),
  + CP(0x7B45),CP(0x7B46),CP(0x7B47),CP(0x7B48),CP(0x7B49),CP(0x7B4A),CP(0x7B4B),CP(0x7B4C),
  + CP(0x7B4D),CP(0x7B4E),CP(0x7B4F),CP(0x7B50),CP(0x7B51),CP(0x7B52),CP(0x7B53),CP(0x7B54),
  + CP(0x7B55),CP(0x7B56),CP(0x7B57),CP(0x7B58),CP(0x7B59),CP(0x7B5A),CP(0x7B5B),CP(0x7B5C),
  + CP(0x7B5D),CP(0x7B5E),CP(0x7B5F),CP(0x7B60),CP(0x7B61),CP(0x7B62),CP(0x7B63),CP(0x7B64),
  + CP(0x7B65),CP(0x7B66),CP(0x7B67),CP(0x7B68),CP(0x7B69),CP(0x7B6A),CP(0x7B6B),CP(0x7B6C),
  + CP(0x7B6D),CP(0x7B6E),CP(0x7B6F),CP(0x7B70),CP(0x7B71),CP(0x7B72),CP(0x7B73),CP(0x7B74),
  + CP(0x7B75),CP(0x7B76),CP(0x7B77),CP(0x7B78),CP(0x7B79),CP(0x7B7A),CP(0x7B7B),CP(0x7B7C),
  + CP(0x7B7D),CP(0x7B7E),CP(0x7C21),CP(0x7C22),CP(0x7C23),CP(0x7C24),CP(0x7C25),CP(0x7C26),
  + CP(0x7C27),CP(0x7C28),CP(0x7C29),CP(0x7C2A),CP(0x7C2B),CP(0x7C2C),CP(0x7C2D),CP(0x7C2E),
  + CP(0x7C2F),CP(0x7C30),CP(0x7C31),CP(0x7C32),CP(0x7C33),CP(0x7C34),CP(0x7C35),CP(0x7C36),
  + CP(0x7C37),CP(0x7C38),CP(0x7C39),CP(0x7C3A),CP(0x7C3B),CP(0x7C3C),CP(0x7C3D),CP(0x7C3E),
  + CP(0x7C3F),CP(0x7C40),CP(0x7C41),CP(0x7C42),CP(0x7C43),CP(0x7C44),CP(0x7C45),CP(0x7C46),
  + CP(0x7C47),CP(0x7C48),CP(0x7C49),CP(0x7C4A),CP(0x7C4B),CP(0x7C4C),CP(0x7C4D),CP(0x7C4E),
  + CP(0x7C4F),CP(0x7C50),CP(0x7C51),CP(0x7C52),CP(0x7C53),CP(0x7C54),CP(0x7C55),CP(0x7C56),
  + CP(0x7C57),CP(0x7C58),CP(0x7C59),CP(0x7C5A),CP(0x7C5B),CP(0x7C5C),CP(0x7C5D),CP(0x7C5E),
  + CP(0x7C5F),CP(0x7C60),CP(0x7C61),CP(0x7C62),CP(0x7C63),CP(0x7C64),CP(0x7C65),CP(0x7C66),
  + CP(0x7C67),CP(0x7C68),CP(0x7C69),CP(0x7C6A),CP(0x7C6B),CP(0x7C6C),CP(0x7C6D),CP(0x7C6E),
  + CP(0x7C6F),CP(0x7C70),CP(0x7C71),CP(0x7C72),CP(0x7C73),CP(0x7C74),CP(0x7C75),CP(0x7C76),
  + CP(0x7C77),CP(0x7C78),CP(0x7C79),CP(0x7C7A),CP(0x7C7B),CP(0x7C7C),CP(0x7C7D),CP(0x7C7E),
  + CP(0x7D21),CP(0x7D22),CP(0x7D23),CP(0x7D24),CP(0x7D25),CP(0x7D26),CP(0x7D27),CP(0x7D28),
  + CP(0x7D29),CP(0x7D2A),CP(0x7D2B),CP(0x7D2C),CP(0x7D2D),CP(0x7D2E),CP(0x7D2F),CP(0x7D30),
  + 
  + /* E300h */
  + CP(0x7D31),CP(0x7D32),CP(0x7D33),CP(0x7D34),CP(0x7D35),CP(0x7D36),CP(0x7D37),CP(0x7D38),
  + CP(0x7D39),CP(0x7D3A),CP(0x7D3B),CP(0x7D3C),CP(0x7D3D),CP(0x7D3E),CP(0x7D3F),CP(0x7D40),
  + CP(0x7D41),CP(0x7D42),CP(0x7D43),CP(0x7D44),CP(0x7D45),CP(0x7D46),CP(0x7D47),CP(0x7D48),
  + CP(0x7D49),CP(0x7D4A),CP(0x7D4B),CP(0x7D4C),CP(0x7D4D),CP(0x7D4E),CP(0x7D4F),CP(0x7D50),
  + CP(0x7D51),CP(0x7D52),CP(0x7D53),CP(0x7D54),CP(0x7D55),CP(0x7D56),CP(0x7D57),CP(0x7D58),
  + CP(0x7D59),CP(0x7D5A),CP(0x7D5B),CP(0x7D5C),CP(0x7D5D),CP(0x7D5E),CP(0x7D5F),CP(0x7D60),
  + CP(0x7D61),CP(0x7D62),CP(0x7D63),CP(0x7D64),CP(0x7D65),CP(0x7D66),CP(0x7D67),CP(0x7D68),
  + CP(0x7D69),CP(0x7D6A),CP(0x7D6B),CP(0x7D6C),CP(0x7D6D),CP(0x7D6E),CP(0x7D6F),CP(0x7D70),
  + CP(0x7D71),CP(0x7D72),CP(0x7D73),CP(0x7D74),CP(0x7D75),CP(0x7D76),CP(0x7D77),CP(0x7D78),
  + CP(0x7D79),CP(0x7D7A),CP(0x7D7B),CP(0x7D7C),CP(0x7D7D),CP(0x7D7E),CP(0x7E21),CP(0x7E22),
  + CP(0x7E23),CP(0x7E24),CP(0x7E25),CP(0x7E26),CP(0x7E27),CP(0x7E28),CP(0x7E29),CP(0x7E2A),
  + CP(0x7E2B),CP(0x7E2C),CP(0x7E2D),CP(0x7E2E),CP(0x7E2F),CP(0x7E30),CP(0x7E31),CP(0x7E32),
  + CP(0x7E33),CP(0x7E34),CP(0x7E35),CP(0x7E36),CP(0x7E37),CP(0x7E38),CP(0x7E39),CP(0x7E3A),
  + CP(0x7E3B),CP(0x7E3C),CP(0x7E3D),CP(0x7E3E),CP(0x7E3F),CP(0x7E40),CP(0x7E41),CP(0x7E42),
  + CP(0x7E43),CP(0x7E44),CP(0x7E45),CP(0x7E46),CP(0x7E47),CP(0x7E48),CP(0x7E49),CP(0x7E4A),
  + CP(0x7E4B),CP(0x7E4C),CP(0x7E4D),CP(0x7E4E),CP(0x7E4F),CP(0x7E50),CP(0x7E51),CP(0x7E52),
  + CP(0x7E53),CP(0x7E54),CP(0x7E55),CP(0x7E56),CP(0x7E57),CP(0x7E58),CP(0x7E59),CP(0x7E5A),
  + CP(0x7E5B),CP(0x7E5C),CP(0x7E5D),CP(0x7E5E),CP(0x7E5F),CP(0x7E60),CP(0x7E61),CP(0x7E62),
  + CP(0x7E63),CP(0x7E64),CP(0x7E65),CP(0x7E66),CP(0x7E67),CP(0x7E68),CP(0x7E69),CP(0x7E6A),
  + CP(0x7E6B),CP(0x7E6C),CP(0x7E6D),CP(0x7E6E),CP(0x7E6F),CP(0x7E70),CP(0x7E71),CP(0x7E72),
  + CP(0x7E73),CP(0x7E74),CP(0x7E75),CP(0x7E76),CP(0x7E77),CP(0x7E78),CP(0x7E79),CP(0x7E7A),
  + CP(0x7E7B),CP(0x7E7C),CP(0x7E7D),CP(0x7E7E),J3(0x7521),J3(0x7522),J3(0x7523),J3(0x7524),
  + J3(0x7525),J3(0x7526),J3(0x7527),J3(0x7528),J3(0x7529),J3(0x752A),J3(0x752B),J3(0x752C),
  + J3(0x752D),J3(0x752E),J3(0x752F),J3(0x7530),J3(0x7531),J3(0x7532),J3(0x7533),J3(0x7534),
  + J3(0x7535),J3(0x7536),J3(0x7537),J3(0x7538),J3(0x7539),J3(0x753A),J3(0x753B),J3(0x753C),
  + J3(0x753D),J3(0x753E),J3(0x753F),J3(0x7540),J3(0x7541),J3(0x7542),J3(0x7543),J3(0x7544),
  + J3(0x7545),J3(0x7546),J3(0x7547),J3(0x7548),J3(0x7549),J3(0x754A),J3(0x754B),J3(0x754C),
  + J3(0x754D),J3(0x754E),J3(0x754F),J3(0x7550),J3(0x7551),J3(0x7552),J3(0x7553),J3(0x7554),
  + J3(0x7555),J3(0x7556),J3(0x7557),J3(0x7558),J3(0x7559),J3(0x755A),J3(0x755B),J3(0x755C),
  + J3(0x755D),J3(0x755E),J3(0x755F),J3(0x7560),J3(0x7561),J3(0x7562),J3(0x7563),J3(0x7564),
  + J3(0x7565),J3(0x7566),J3(0x7567),J3(0x7568),J3(0x7569),J3(0x756A),J3(0x756B),J3(0x756C),
  + J3(0x756D),J3(0x756E),J3(0x756F),J3(0x7570),J3(0x7571),J3(0x7572),J3(0x7573),J3(0x7574),
  + 
  + /* E400h */
  + J3(0x7575),J3(0x7576),J3(0x7577),J3(0x7578),J3(0x7579),J3(0x757A),J3(0x757B),J3(0x757C),
  + J3(0x757D),J3(0x757E),J3(0x7621),J3(0x7622),J3(0x7623),J3(0x7624),J3(0x7625),J3(0x7626),
  + J3(0x7627),J3(0x7628),J3(0x7629),J3(0x762A),J3(0x762B),J3(0x762C),J3(0x762D),J3(0x762E),
  + J3(0x762F),J3(0x7630),J3(0x7631),J3(0x7632),J3(0x7633),J3(0x7634),J3(0x7635),J3(0x7636),
  + J3(0x7637),J3(0x7638),J3(0x7639),J3(0x763A),J3(0x763B),J3(0x763C),J3(0x763D),J3(0x763E),
  + J3(0x763F),J3(0x7640),J3(0x7641),J3(0x7642),J3(0x7643),J3(0x7644),J3(0x7645),J3(0x7646),
  + J3(0x7647),J3(0x7648),J3(0x7649),J3(0x764A),J3(0x764B),J3(0x764C),J3(0x764D),J3(0x764E),
  + J3(0x764F),J3(0x7650),J3(0x7651),J3(0x7652),J3(0x7653),J3(0x7654),J3(0x7655),J3(0x7656),
  + J3(0x7657),J3(0x7658),J3(0x7659),J3(0x765A),J3(0x765B),J3(0x765C),J3(0x765D),J3(0x765E),
  + J3(0x765F),J3(0x7660),J3(0x7661),J3(0x7662),J3(0x7663),J3(0x7664),J3(0x7665),J3(0x7666),
  + J3(0x7667),J3(0x7668),J3(0x7669),J3(0x766A),J3(0x766B),J3(0x766C),J3(0x766D),J3(0x766E),
  + J3(0x766F),J3(0x7670),J3(0x7671),J3(0x7672),J3(0x7673),J3(0x7674),J3(0x7675),J3(0x7676),
  + J3(0x7677),J3(0x7678),J3(0x7679),J3(0x767A),J3(0x767B),J3(0x767C),J3(0x767D),J3(0x767E),
  + J3(0x7721),J3(0x7722),J3(0x7723),J3(0x7724),J3(0x7725),J3(0x7726),J3(0x7727),J3(0x7728),
  + J3(0x7729),J3(0x772A),J3(0x772B),J3(0x772C),J3(0x772D),J3(0x772E),J3(0x772F),J3(0x7730),
  + J3(0x7731),J3(0x7732),J3(0x7733),J3(0x7734),J3(0x7735),J3(0x7736),J3(0x7737),J3(0x7738),
  + J3(0x7739),J3(0x773A),J3(0x773B),J3(0x773C),J3(0x773D),J3(0x773E),J3(0x773F),J3(0x7740),
  + J3(0x7741),J3(0x7742),J3(0x7743),J3(0x7744),J3(0x7745),J3(0x7746),J3(0x7747),J3(0x7748),
  + J3(0x7749),J3(0x774A),J3(0x774B),J3(0x774C),J3(0x774D),J3(0x774E),J3(0x774F),J3(0x7750),
  + J3(0x7751),J3(0x7752),J3(0x7753),J3(0x7754),J3(0x7755),J3(0x7756),J3(0x7757),J3(0x7758),
  + J3(0x7759),J3(0x775A),J3(0x775B),J3(0x775C),J3(0x775D),J3(0x775E),J3(0x775F),J3(0x7760),
  + J3(0x7761),J3(0x7762),J3(0x7763),J3(0x7764),J3(0x7765),J3(0x7766),J3(0x7767),J3(0x7768),
  + J3(0x7769),J3(0x776A),J3(0x776B),J3(0x776C),J3(0x776D),J3(0x776E),J3(0x776F),J3(0x7770),
  + J3(0x7771),J3(0x7772),J3(0x7773),J3(0x7774),J3(0x7775),J3(0x7776),J3(0x7777),J3(0x7778),
  + J3(0x7779),J3(0x777A),J3(0x777B),J3(0x777C),J3(0x777D),J3(0x777E),J3(0x7821),J3(0x7822),
  + J3(0x7823),J3(0x7824),J3(0x7825),J3(0x7826),J3(0x7827),J3(0x7828),J3(0x7829),J3(0x782A),
  + J3(0x782B),J3(0x782C),J3(0x782D),J3(0x782E),J3(0x782F),J3(0x7830),J3(0x7831),J3(0x7832),
  + J3(0x7833),J3(0x7834),J3(0x7835),J3(0x7836),J3(0x7837),J3(0x7838),J3(0x7839),J3(0x783A),
  + J3(0x783B),J3(0x783C),J3(0x783D),J3(0x783E),J3(0x783F),J3(0x7840),J3(0x7841),J3(0x7842),
  + J3(0x7843),J3(0x7844),J3(0x7845),J3(0x7846),J3(0x7847),J3(0x7848),J3(0x7849),J3(0x784A),
  + J3(0x784B),J3(0x784C),J3(0x784D),J3(0x784E),J3(0x784F),J3(0x7850),J3(0x7851),J3(0x7852),
  + J3(0x7853),J3(0x7854),J3(0x7855),J3(0x7856),J3(0x7857),J3(0x7858),J3(0x7859),J3(0x785A),
  + 
  + /* E500h */
  + J3(0x785B),J3(0x785C),J3(0x785D),J3(0x785E),J3(0x785F),J3(0x7860),J3(0x7861),J3(0x7862),
  + J3(0x7863),J3(0x7864),J3(0x7865),J3(0x7866),J3(0x7867),J3(0x7868),J3(0x7869),J3(0x786A),
  + J3(0x786B),J3(0x786C),J3(0x786D),J3(0x786E),J3(0x786F),J3(0x7870),J3(0x7871),J3(0x7872),
  + J3(0x7873),J3(0x7874),J3(0x7875),J3(0x7876),J3(0x7877),J3(0x7878),J3(0x7879),J3(0x787A),
  + J3(0x787B),J3(0x787C),J3(0x787D),J3(0x787E),J3(0x7921),J3(0x7922),J3(0x7923),J3(0x7924),
  + J3(0x7925),J3(0x7926),J3(0x7927),J3(0x7928),J3(0x7929),J3(0x792A),J3(0x792B),J3(0x792C),
  + J3(0x792D),J3(0x792E),J3(0x792F),J3(0x7930),J3(0x7931),J3(0x7932),J3(0x7933),J3(0x7934),
  + J3(0x7935),J3(0x7936),J3(0x7937),J3(0x7938),J3(0x7939),J3(0x793A),J3(0x793B),J3(0x793C),
  + J3(0x793D),J3(0x793E),J3(0x793F),J3(0x7940),J3(0x7941),J3(0x7942),J3(0x7943),J3(0x7944),
  + J3(0x7945),J3(0x7946),J3(0x7947),J3(0x7948),J3(0x7949),J3(0x794A),J3(0x794B),J3(0x794C),
  + J3(0x794D),J3(0x794E),J3(0x794F),J3(0x7950),J3(0x7951),J3(0x7952),J3(0x7953),J3(0x7954),
  + J3(0x7955),J3(0x7956),J3(0x7957),J3(0x7958),J3(0x7959),J3(0x795A),J3(0x795B),J3(0x795C),
  + J3(0x795D),J3(0x795E),J3(0x795F),J3(0x7960),J3(0x7961),J3(0x7962),J3(0x7963),J3(0x7964),
  + J3(0x7965),J3(0x7966),J3(0x7967),J3(0x7968),J3(0x7969),J3(0x796A),J3(0x796B),J3(0x796C),
  + J3(0x796D),J3(0x796E),J3(0x796F),J3(0x7970),J3(0x7971),J3(0x7972),J3(0x7973),J3(0x7974),
  + J3(0x7975),J3(0x7976),J3(0x7977),J3(0x7978),J3(0x7979),J3(0x797A),J3(0x797B),J3(0x797C),
  + J3(0x797D),J3(0x797E),J3(0x7A21),J3(0x7A22),J3(0x7A23),J3(0x7A24),J3(0x7A25),J3(0x7A26),
  + J3(0x7A27),J3(0x7A28),J3(0x7A29),J3(0x7A2A),J3(0x7A2B),J3(0x7A2C),J3(0x7A2D),J3(0x7A2E),
  + J3(0x7A2F),J3(0x7A30),J3(0x7A31),J3(0x7A32),J3(0x7A33),J3(0x7A34),J3(0x7A35),J3(0x7A36),
  + J3(0x7A37),J3(0x7A38),J3(0x7A39),J3(0x7A3A),J3(0x7A3B),J3(0x7A3C),J3(0x7A3D),J3(0x7A3E),
  + J3(0x7A3F),J3(0x7A40),J3(0x7A41),J3(0x7A42),J3(0x7A43),J3(0x7A44),J3(0x7A45),J3(0x7A46),
  + J3(0x7A47),J3(0x7A48),J3(0x7A49),J3(0x7A4A),J3(0x7A4B),J3(0x7A4C),J3(0x7A4D),J3(0x7A4E),
  + J3(0x7A4F),J3(0x7A50),J3(0x7A51),J3(0x7A52),J3(0x7A53),J3(0x7A54),J3(0x7A55),J3(0x7A56),
  + J3(0x7A57),J3(0x7A58),J3(0x7A59),J3(0x7A5A),J3(0x7A5B),J3(0x7A5C),J3(0x7A5D),J3(0x7A5E),
  + J3(0x7A5F),J3(0x7A60),J3(0x7A61),J3(0x7A62),J3(0x7A63),J3(0x7A64),J3(0x7A65),J3(0x7A66),
  + J3(0x7A67),J3(0x7A68),J3(0x7A69),J3(0x7A6A),J3(0x7A6B),J3(0x7A6C),J3(0x7A6D),J3(0x7A6E),
  + J3(0x7A6F),J3(0x7A70),J3(0x7A71),J3(0x7A72),J3(0x7A73),J3(0x7A74),J3(0x7A75),J3(0x7A76),
  + J3(0x7A77),J3(0x7A78),J3(0x7A79),J3(0x7A7A),J3(0x7A7B),J3(0x7A7C),J3(0x7A7D),J3(0x7A7E),
  + J3(0x7B21),J3(0x7B22),J3(0x7B23),J3(0x7B24),J3(0x7B25),J3(0x7B26),J3(0x7B27),J3(0x7B28),
  + J3(0x7B29),J3(0x7B2A),J3(0x7B2B),J3(0x7B2C),J3(0x7B2D),J3(0x7B2E),J3(0x7B2F),J3(0x7B30),
  + J3(0x7B31),J3(0x7B32),J3(0x7B33),J3(0x7B34),J3(0x7B35),J3(0x7B36),J3(0x7B37),J3(0x7B38),
  + J3(0x7B39),J3(0x7B3A),J3(0x7B3B),J3(0x7B3C),J3(0x7B3D),J3(0x7B3E),J3(0x7B3F),J3(0x7B40),
  + 
  + /* E600h */
  + J3(0x7B41),J3(0x7B42),J3(0x7B43),J3(0x7B44),J3(0x7B45),J3(0x7B46),J3(0x7B47),J3(0x7B48),
  + J3(0x7B49),J3(0x7B4A),J3(0x7B4B),J3(0x7B4C),J3(0x7B4D),J3(0x7B4E),J3(0x7B4F),J3(0x7B50),
  + J3(0x7B51),J3(0x7B52),J3(0x7B53),J3(0x7B54),J3(0x7B55),J3(0x7B56),J3(0x7B57),J3(0x7B58),
  + J3(0x7B59),J3(0x7B5A),J3(0x7B5B),J3(0x7B5C),J3(0x7B5D),J3(0x7B5E),J3(0x7B5F),J3(0x7B60),
  + J3(0x7B61),J3(0x7B62),J3(0x7B63),J3(0x7B64),J3(0x7B65),J3(0x7B66),J3(0x7B67),J3(0x7B68),
  + J3(0x7B69),J3(0x7B6A),J3(0x7B6B),J3(0x7B6C),J3(0x7B6D),J3(0x7B6E),J3(0x7B6F),J3(0x7B70),
  + J3(0x7B71),J3(0x7B72),J3(0x7B73),J3(0x7B74),J3(0x7B75),J3(0x7B76),J3(0x7B77),J3(0x7B78),
  + J3(0x7B79),J3(0x7B7A),J3(0x7B7B),J3(0x7B7C),J3(0x7B7D),J3(0x7B7E),J3(0x7C21),J3(0x7C22),
  + J3(0x7C23),J3(0x7C24),J3(0x7C25),J3(0x7C26),J3(0x7C27),J3(0x7C28),J3(0x7C29),J3(0x7C2A),
  + J3(0x7C2B),J3(0x7C2C),J3(0x7C2D),J3(0x7C2E),J3(0x7C2F),J3(0x7C30),J3(0x7C31),J3(0x7C32),
  + J3(0x7C33),J3(0x7C34),J3(0x7C35),J3(0x7C36),J3(0x7C37),J3(0x7C38),J3(0x7C39),J3(0x7C3A),
  + J3(0x7C3B),J3(0x7C3C),J3(0x7C3D),J3(0x7C3E),J3(0x7C3F),J3(0x7C40),J3(0x7C41),J3(0x7C42),
  + J3(0x7C43),J3(0x7C44),J3(0x7C45),J3(0x7C46),J3(0x7C47),J3(0x7C48),J3(0x7C49),J3(0x7C4A),
  + J3(0x7C4B),J3(0x7C4C),J3(0x7C4D),J3(0x7C4E),J3(0x7C4F),J3(0x7C50),J3(0x7C51),J3(0x7C52),
  + J3(0x7C53),J3(0x7C54),J3(0x7C55),J3(0x7C56),J3(0x7C57),J3(0x7C58),J3(0x7C59),J3(0x7C5A),
  + J3(0x7C5B),J3(0x7C5C),J3(0x7C5D),J3(0x7C5E),J3(0x7C5F),J3(0x7C60),J3(0x7C61),J3(0x7C62),
  + J3(0x7C63),J3(0x7C64),J3(0x7C65),J3(0x7C66),J3(0x7C67),J3(0x7C68),J3(0x7C69),J3(0x7C6A),
  + J3(0x7C6B),J3(0x7C6C),J3(0x7C6D),J3(0x7C6E),J3(0x7C6F),J3(0x7C70),J3(0x7C71),J3(0x7C72),
  + J3(0x7C73),J3(0x7C74),J3(0x7C75),J3(0x7C76),J3(0x7C77),J3(0x7C78),J3(0x7C79),J3(0x7C7A),
  + J3(0x7C7B),J3(0x7C7C),J3(0x7C7D),J3(0x7C7E),J3(0x7D21),J3(0x7D22),J3(0x7D23),J3(0x7D24),
  + J3(0x7D25),J3(0x7D26),J3(0x7D27),J3(0x7D28),J3(0x7D29),J3(0x7D2A),J3(0x7D2B),J3(0x7D2C),
  + J3(0x7D2D),J3(0x7D2E),J3(0x7D2F),J3(0x7D30),J3(0x7D31),J3(0x7D32),J3(0x7D33),J3(0x7D34),
  + J3(0x7D35),J3(0x7D36),J3(0x7D37),J3(0x7D38),J3(0x7D39),J3(0x7D3A),J3(0x7D3B),J3(0x7D3C),
  + J3(0x7D3D),J3(0x7D3E),J3(0x7D3F),J3(0x7D40),J3(0x7D41),J3(0x7D42),J3(0x7D43),J3(0x7D44),
  + J3(0x7D45),J3(0x7D46),J3(0x7D47),J3(0x7D48),J3(0x7D49),J3(0x7D4A),J3(0x7D4B),J3(0x7D4C),
  + J3(0x7D4D),J3(0x7D4E),J3(0x7D4F),J3(0x7D50),J3(0x7D51),J3(0x7D52),J3(0x7D53),J3(0x7D54),
  + J3(0x7D55),J3(0x7D56),J3(0x7D57),J3(0x7D58),J3(0x7D59),J3(0x7D5A),J3(0x7D5B),J3(0x7D5C),
  + J3(0x7D5D),J3(0x7D5E),J3(0x7D5F),J3(0x7D60),J3(0x7D61),J3(0x7D62),J3(0x7D63),J3(0x7D64),
  + J3(0x7D65),J3(0x7D66),J3(0x7D67),J3(0x7D68),J3(0x7D69),J3(0x7D6A),J3(0x7D6B),J3(0x7D6C),
  + J3(0x7D6D),J3(0x7D6E),J3(0x7D6F),J3(0x7D70),J3(0x7D71),J3(0x7D72),J3(0x7D73),J3(0x7D74),
  + J3(0x7D75),J3(0x7D76),J3(0x7D77),J3(0x7D78),J3(0x7D79),J3(0x7D7A),J3(0x7D7B),J3(0x7D7C),
  + J3(0x7D7D),J3(0x7D7E),J3(0x7E21),J3(0x7E22),J3(0x7E23),J3(0x7E24),J3(0x7E25),J3(0x7E26),
  + 
  + /* E700h */
  + J3(0x7E27),J3(0x7E28),J3(0x7E29),J3(0x7E2A),J3(0x7E2B),J3(0x7E2C),J3(0x7E2D),J3(0x7E2E),
  + J3(0x7E2F),J3(0x7E30),J3(0x7E31),J3(0x7E32),J3(0x7E33),J3(0x7E34),J3(0x7E35),J3(0x7E36),
  + J3(0x7E37),J3(0x7E38),J3(0x7E39),J3(0x7E3A),J3(0x7E3B),J3(0x7E3C),J3(0x7E3D),J3(0x7E3E),
  + J3(0x7E3F),J3(0x7E40),J3(0x7E41),J3(0x7E42),J3(0x7E43),J3(0x7E44),J3(0x7E45),J3(0x7E46),
  + J3(0x7E47),J3(0x7E48),J3(0x7E49),J3(0x7E4A),J3(0x7E4B),J3(0x7E4C),J3(0x7E4D),J3(0x7E4E),
  + J3(0x7E4F),J3(0x7E50),J3(0x7E51),J3(0x7E52),J3(0x7E53),J3(0x7E54),J3(0x7E55),J3(0x7E56),
  + J3(0x7E57),J3(0x7E58),J3(0x7E59),J3(0x7E5A),J3(0x7E5B),J3(0x7E5C),J3(0x7E5D),J3(0x7E5E),
  + J3(0x7E5F),J3(0x7E60),J3(0x7E61),J3(0x7E62),J3(0x7E63),J3(0x7E64),J3(0x7E65),J3(0x7E66),
  + J3(0x7E67),J3(0x7E68),J3(0x7E69),J3(0x7E6A),J3(0x7E6B),J3(0x7E6C),J3(0x7E6D),J3(0x7E6E),
  + J3(0x7E6F),J3(0x7E70),J3(0x7E71),J3(0x7E72),J3(0x7E73),J3(0x7E74),J3(0x7E75),J3(0x7E76),
  + J3(0x7E77),J3(0x7E78),J3(0x7E79),J3(0x7E7A),J3(0x7E7B),J3(0x7E7C),J3(0x7E7D),J3(0x7E7E)
  +};
  +
  +
  +static const int table_ucs_cp932_user_sjis[] = {
  + /* E000h */
  + CP(0x7F21),CP(0x7F22),CP(0x7F23),CP(0x7F24),CP(0x7F25),CP(0x7F26),CP(0x7F27),CP(0x7F28),
  + CP(0x7F29),CP(0x7F2A),CP(0x7F2B),CP(0x7F2C),CP(0x7F2D),CP(0x7F2E),CP(0x7F2F),CP(0x7F30),
  + CP(0x7F31),CP(0x7F32),CP(0x7F33),CP(0x7F34),CP(0x7F35),CP(0x7F36),CP(0x7F37),CP(0x7F38),
  + CP(0x7F39),CP(0x7F3A),CP(0x7F3B),CP(0x7F3C),CP(0x7F3D),CP(0x7F3E),CP(0x7F3F),CP(0x7F40),
  + CP(0x7F41),CP(0x7F42),CP(0x7F43),CP(0x7F44),CP(0x7F45),CP(0x7F46),CP(0x7F47),CP(0x7F48),
  + CP(0x7F49),CP(0x7F4A),CP(0x7F4B),CP(0x7F4C),CP(0x7F4D),CP(0x7F4E),CP(0x7F4F),CP(0x7F50),
  + CP(0x7F51),CP(0x7F52),CP(0x7F53),CP(0x7F54),CP(0x7F55),CP(0x7F56),CP(0x7F57),CP(0x7F58),
  + CP(0x7F59),CP(0x7F5A),CP(0x7F5B),CP(0x7F5C),CP(0x7F5D),CP(0x7F5E),CP(0x7F5F),CP(0x7F60),
  + CP(0x7F61),CP(0x7F62),CP(0x7F63),CP(0x7F64),CP(0x7F65),CP(0x7F66),CP(0x7F67),CP(0x7F68),
  + CP(0x7F69),CP(0x7F6A),CP(0x7F6B),CP(0x7F6C),CP(0x7F6D),CP(0x7F6E),CP(0x7F6F),CP(0x7F70),
  + CP(0x7F71),CP(0x7F72),CP(0x7F73),CP(0x7F74),CP(0x7F75),CP(0x7F76),CP(0x7F77),CP(0x7F78),
  + CP(0x7F79),CP(0x7F7A),CP(0x7F7B),CP(0x7F7C),CP(0x7F7D),CP(0x7F7E),CP(0x8021),CP(0x8022),
  + CP(0x8023),CP(0x8024),CP(0x8025),CP(0x8026),CP(0x8027),CP(0x8028),CP(0x8029),CP(0x802A),
  + CP(0x802B),CP(0x802C),CP(0x802D),CP(0x802E),CP(0x802F),CP(0x8030),CP(0x8031),CP(0x8032),
  + CP(0x8033),CP(0x8034),CP(0x8035),CP(0x8036),CP(0x8037),CP(0x8038),CP(0x8039),CP(0x803A),
  + CP(0x803B),CP(0x803C),CP(0x803D),CP(0x803E),CP(0x803F),CP(0x8040),CP(0x8041),CP(0x8042),
  + CP(0x8043),CP(0x8044),CP(0x8045),CP(0x8046),CP(0x8047),CP(0x8048),CP(0x8049),CP(0x804A),
  + CP(0x804B),CP(0x804C),CP(0x804D),CP(0x804E),CP(0x804F),CP(0x8050),CP(0x8051),CP(0x8052),
  + CP(0x8053),CP(0x8054),CP(0x8055),CP(0x8056),CP(0x8057),CP(0x8058),CP(0x8059),CP(0x805A),
  + CP(0x805B),CP(0x805C),CP(0x805D),CP(0x805E),CP(0x805F),CP(0x8060),CP(0x8061),CP(0x8062),
  + CP(0x8063),CP(0x8064),CP(0x8065),CP(0x8066),CP(0x8067),CP(0x8068),CP(0x8069),CP(0x806A),
  + CP(0x806B),CP(0x806C),CP(0x806D),CP(0x806E),CP(0x806F),CP(0x8070),CP(0x8071),CP(0x8072),
  + CP(0x8073),CP(0x8074),CP(0x8075),CP(0x8076),CP(0x8077),CP(0x8078),CP(0x8079),CP(0x807A),
  + CP(0x807B),CP(0x807C),CP(0x807D),CP(0x807E),CP(0x8121),CP(0x8122),CP(0x8123),CP(0x8124),
  + CP(0x8125),CP(0x8126),CP(0x8127),CP(0x8128),CP(0x8129),CP(0x812A),CP(0x812B),CP(0x812C),
  + CP(0x812D),CP(0x812E),CP(0x812F),CP(0x8130),CP(0x8131),CP(0x8132),CP(0x8133),CP(0x8134),
  + CP(0x8135),CP(0x8136),CP(0x8137),CP(0x8138),CP(0x8139),CP(0x813A),CP(0x813B),CP(0x813C),
  + CP(0x813D),CP(0x813E),CP(0x813F),CP(0x8140),CP(0x8141),CP(0x8142),CP(0x8143),CP(0x8144),
  + CP(0x8145),CP(0x8146),CP(0x8147),CP(0x8148),CP(0x8149),CP(0x814A),CP(0x814B),CP(0x814C),
  + CP(0x814D),CP(0x814E),CP(0x814F),CP(0x8150),CP(0x8151),CP(0x8152),CP(0x8153),CP(0x8154),
  + CP(0x8155),CP(0x8156),CP(0x8157),CP(0x8158),CP(0x8159),CP(0x815A),CP(0x815B),CP(0x815C),
  + CP(0x815D),CP(0x815E),CP(0x815F),CP(0x8160),CP(0x8161),CP(0x8162),CP(0x8163),CP(0x8164),
  + 
  + /* E100h */
  + CP(0x8165),CP(0x8166),CP(0x8167),CP(0x8168),CP(0x8169),CP(0x816A),CP(0x816B),CP(0x816C),
  + CP(0x816D),CP(0x816E),CP(0x816F),CP(0x8170),CP(0x8171),CP(0x8172),CP(0x8173),CP(0x8174),
  + CP(0x8175),CP(0x8176),CP(0x8177),CP(0x8178),CP(0x8179),CP(0x817A),CP(0x817B),CP(0x817C),
  + CP(0x817D),CP(0x817E),CP(0x8221),CP(0x8222),CP(0x8223),CP(0x8224),CP(0x8225),CP(0x8226),
  + CP(0x8227),CP(0x8228),CP(0x8229),CP(0x822A),CP(0x822B),CP(0x822C),CP(0x822D),CP(0x822E),
  + CP(0x822F),CP(0x8230),CP(0x8231),CP(0x8232),CP(0x8233),CP(0x8234),CP(0x8235),CP(0x8236),
  + CP(0x8237),CP(0x8238),CP(0x8239),CP(0x823A),CP(0x823B),CP(0x823C),CP(0x823D),CP(0x823E),
  + CP(0x823F),CP(0x8240),CP(0x8241),CP(0x8242),CP(0x8243),CP(0x8244),CP(0x8245),CP(0x8246),
  + CP(0x8247),CP(0x8248),CP(0x8249),CP(0x824A),CP(0x824B),CP(0x824C),CP(0x824D),CP(0x824E),
  + CP(0x824F),CP(0x8250),CP(0x8251),CP(0x8252),CP(0x8253),CP(0x8254),CP(0x8255),CP(0x8256),
  + CP(0x8257),CP(0x8258),CP(0x8259),CP(0x825A),CP(0x825B),CP(0x825C),CP(0x825D),CP(0x825E),
  + CP(0x825F),CP(0x8260),CP(0x8261),CP(0x8262),CP(0x8263),CP(0x8264),CP(0x8265),CP(0x8266),
  + CP(0x8267),CP(0x8268),CP(0x8269),CP(0x826A),CP(0x826B),CP(0x826C),CP(0x826D),CP(0x826E),
  + CP(0x826F),CP(0x8270),CP(0x8271),CP(0x8272),CP(0x8273),CP(0x8274),CP(0x8275),CP(0x8276),
  + CP(0x8277),CP(0x8278),CP(0x8279),CP(0x827A),CP(0x827B),CP(0x827C),CP(0x827D),CP(0x827E),
  + CP(0x8321),CP(0x8322),CP(0x8323),CP(0x8324),CP(0x8325),CP(0x8326),CP(0x8327),CP(0x8328),
  + CP(0x8329),CP(0x832A),CP(0x832B),CP(0x832C),CP(0x832D),CP(0x832E),CP(0x832F),CP(0x8330),
  + CP(0x8331),CP(0x8332),CP(0x8333),CP(0x8334),CP(0x8335),CP(0x8336),CP(0x8337),CP(0x8338),
  + CP(0x8339),CP(0x833A),CP(0x833B),CP(0x833C),CP(0x833D),CP(0x833E),CP(0x833F),CP(0x8340),
  + CP(0x8341),CP(0x8342),CP(0x8343),CP(0x8344),CP(0x8345),CP(0x8346),CP(0x8347),CP(0x8348),
  + CP(0x8349),CP(0x834A),CP(0x834B),CP(0x834C),CP(0x834D),CP(0x834E),CP(0x834F),CP(0x8350),
  + CP(0x8351),CP(0x8352),CP(0x8353),CP(0x8354),CP(0x8355),CP(0x8356),CP(0x8357),CP(0x8358),
  + CP(0x8359),CP(0x835A),CP(0x835B),CP(0x835C),CP(0x835D),CP(0x835E),CP(0x835F),CP(0x8360),
  + CP(0x8361),CP(0x8362),CP(0x8363),CP(0x8364),CP(0x8365),CP(0x8366),CP(0x8367),CP(0x8368),
  + CP(0x8369),CP(0x836A),CP(0x836B),CP(0x836C),CP(0x836D),CP(0x836E),CP(0x836F),CP(0x8370),
  + CP(0x8371),CP(0x8372),CP(0x8373),CP(0x8374),CP(0x8375),CP(0x8376),CP(0x8377),CP(0x8378),
  + CP(0x8379),CP(0x837A),CP(0x837B),CP(0x837C),CP(0x837D),CP(0x837E),CP(0x8421),CP(0x8422),
  + CP(0x8423),CP(0x8424),CP(0x8425),CP(0x8426),CP(0x8427),CP(0x8428),CP(0x8429),CP(0x842A),
  + CP(0x842B),CP(0x842C),CP(0x842D),CP(0x842E),CP(0x842F),CP(0x8430),CP(0x8431),CP(0x8432),
  + CP(0x8433),CP(0x8434),CP(0x8435),CP(0x8436),CP(0x8437),CP(0x8438),CP(0x8439),CP(0x843A),
  + CP(0x843B),CP(0x843C),CP(0x843D),CP(0x843E),CP(0x843F),CP(0x8440),CP(0x8441),CP(0x8442),
  + CP(0x8443),CP(0x8444),CP(0x8445),CP(0x8446),CP(0x8447),CP(0x8448),CP(0x8449),CP(0x844A),
  + 
  + /* E200h */
  + CP(0x844B),CP(0x844C),CP(0x844D),CP(0x844E),CP(0x844F),CP(0x8450),CP(0x8451),CP(0x8452),
  + CP(0x8453),CP(0x8454),CP(0x8455),CP(0x8456),CP(0x8457),CP(0x8458),CP(0x8459),CP(0x845A),
  + CP(0x845B),CP(0x845C),CP(0x845D),CP(0x845E),CP(0x845F),CP(0x8460),CP(0x8461),CP(0x8462),
  + CP(0x8463),CP(0x8464),CP(0x8465),CP(0x8466),CP(0x8467),CP(0x8468),CP(0x8469),CP(0x846A),
  + CP(0x846B),CP(0x846C),CP(0x846D),CP(0x846E),CP(0x846F),CP(0x8470),CP(0x8471),CP(0x8472),
  + CP(0x8473),CP(0x8474),CP(0x8475),CP(0x8476),CP(0x8477),CP(0x8478),CP(0x8479),CP(0x847A),
  + CP(0x847B),CP(0x847C),CP(0x847D),CP(0x847E),CP(0x8521),CP(0x8522),CP(0x8523),CP(0x8524),
  + CP(0x8525),CP(0x8526),CP(0x8527),CP(0x8528),CP(0x8529),CP(0x852A),CP(0x852B),CP(0x852C),
  + CP(0x852D),CP(0x852E),CP(0x852F),CP(0x8530),CP(0x8531),CP(0x8532),CP(0x8533),CP(0x8534),
  + CP(0x8535),CP(0x8536),CP(0x8537),CP(0x8538),CP(0x8539),CP(0x853A),CP(0x853B),CP(0x853C),
  + CP(0x853D),CP(0x853E),CP(0x853F),CP(0x8540),CP(0x8541),CP(0x8542),CP(0x8543),CP(0x8544),
  + CP(0x8545),CP(0x8546),CP(0x8547),CP(0x8548),CP(0x8549),CP(0x854A),CP(0x854B),CP(0x854C),
  + CP(0x854D),CP(0x854E),CP(0x854F),CP(0x8550),CP(0x8551),CP(0x8552),CP(0x8553),CP(0x8554),
  + CP(0x8555),CP(0x8556),CP(0x8557),CP(0x8558),CP(0x8559),CP(0x855A),CP(0x855B),CP(0x855C),
  + CP(0x855D),CP(0x855E),CP(0x855F),CP(0x8560),CP(0x8561),CP(0x8562),CP(0x8563),CP(0x8564),
  + CP(0x8565),CP(0x8566),CP(0x8567),CP(0x8568),CP(0x8569),CP(0x856A),CP(0x856B),CP(0x856C),
  + CP(0x856D),CP(0x856E),CP(0x856F),CP(0x8570),CP(0x8571),CP(0x8572),CP(0x8573),CP(0x8574),
  + CP(0x8575),CP(0x8576),CP(0x8577),CP(0x8578),CP(0x8579),CP(0x857A),CP(0x857B),CP(0x857C),
  + CP(0x857D),CP(0x857E),CP(0x8621),CP(0x8622),CP(0x8623),CP(0x8624),CP(0x8625),CP(0x8626),
  + CP(0x8627),CP(0x8628),CP(0x8629),CP(0x862A),CP(0x862B),CP(0x862C),CP(0x862D),CP(0x862E),
  + CP(0x862F),CP(0x8630),CP(0x8631),CP(0x8632),CP(0x8633),CP(0x8634),CP(0x8635),CP(0x8636),
  + CP(0x8637),CP(0x8638),CP(0x8639),CP(0x863A),CP(0x863B),CP(0x863C),CP(0x863D),CP(0x863E),
  + CP(0x863F),CP(0x8640),CP(0x8641),CP(0x8642),CP(0x8643),CP(0x8644),CP(0x8645),CP(0x8646),
  + CP(0x8647),CP(0x8648),CP(0x8649),CP(0x864A),CP(0x864B),CP(0x864C),CP(0x864D),CP(0x864E),
  + CP(0x864F),CP(0x8650),CP(0x8651),CP(0x8652),CP(0x8653),CP(0x8654),CP(0x8655),CP(0x8656),
  + CP(0x8657),CP(0x8658),CP(0x8659),CP(0x865A),CP(0x865B),CP(0x865C),CP(0x865D),CP(0x865E),
  + CP(0x865F),CP(0x8660),CP(0x8661),CP(0x8662),CP(0x8663),CP(0x8664),CP(0x8665),CP(0x8666),
  + CP(0x8667),CP(0x8668),CP(0x8669),CP(0x866A),CP(0x866B),CP(0x866C),CP(0x866D),CP(0x866E),
  + CP(0x866F),CP(0x8670),CP(0x8671),CP(0x8672),CP(0x8673),CP(0x8674),CP(0x8675),CP(0x8676),
  + CP(0x8677),CP(0x8678),CP(0x8679),CP(0x867A),CP(0x867B),CP(0x867C),CP(0x867D),CP(0x867E),
  + CP(0x8721),CP(0x8722),CP(0x8723),CP(0x8724),CP(0x8725),CP(0x8726),CP(0x8727),CP(0x8728),
  + CP(0x8729),CP(0x872A),CP(0x872B),CP(0x872C),CP(0x872D),CP(0x872E),CP(0x872F),CP(0x8730),
  + 
  + /* E300h */
  + CP(0x8731),CP(0x8732),CP(0x8733),CP(0x8734),CP(0x8735),CP(0x8736),CP(0x8737),CP(0x8738),
  + CP(0x8739),CP(0x873A),CP(0x873B),CP(0x873C),CP(0x873D),CP(0x873E),CP(0x873F),CP(0x8740),
  + CP(0x8741),CP(0x8742),CP(0x8743),CP(0x8744),CP(0x8745),CP(0x8746),CP(0x8747),CP(0x8748),
  + CP(0x8749),CP(0x874A),CP(0x874B),CP(0x874C),CP(0x874D),CP(0x874E),CP(0x874F),CP(0x8750),
  + CP(0x8751),CP(0x8752),CP(0x8753),CP(0x8754),CP(0x8755),CP(0x8756),CP(0x8757),CP(0x8758),
  + CP(0x8759),CP(0x875A),CP(0x875B),CP(0x875C),CP(0x875D),CP(0x875E),CP(0x875F),CP(0x8760),
  + CP(0x8761),CP(0x8762),CP(0x8763),CP(0x8764),CP(0x8765),CP(0x8766),CP(0x8767),CP(0x8768),
  + CP(0x8769),CP(0x876A),CP(0x876B),CP(0x876C),CP(0x876D),CP(0x876E),CP(0x876F),CP(0x8770),
  + CP(0x8771),CP(0x8772),CP(0x8773),CP(0x8774),CP(0x8775),CP(0x8776),CP(0x8777),CP(0x8778),
  + CP(0x8779),CP(0x877A),CP(0x877B),CP(0x877C),CP(0x877D),CP(0x877E),CP(0x8821),CP(0x8822),
  + CP(0x8823),CP(0x8824),CP(0x8825),CP(0x8826),CP(0x8827),CP(0x8828),CP(0x8829),CP(0x882A),
  + CP(0x882B),CP(0x882C),CP(0x882D),CP(0x882E),CP(0x882F),CP(0x8830),CP(0x8831),CP(0x8832),
  + CP(0x8833),CP(0x8834),CP(0x8835),CP(0x8836),CP(0x8837),CP(0x8838),CP(0x8839),CP(0x883A),
  + CP(0x883B),CP(0x883C),CP(0x883D),CP(0x883E),CP(0x883F),CP(0x8840),CP(0x8841),CP(0x8842),
  + CP(0x8843),CP(0x8844),CP(0x8845),CP(0x8846),CP(0x8847),CP(0x8848),CP(0x8849),CP(0x884A),
  + CP(0x884B),CP(0x884C),CP(0x884D),CP(0x884E),CP(0x884F),CP(0x8850),CP(0x8851),CP(0x8852),
  + CP(0x8853),CP(0x8854),CP(0x8855),CP(0x8856),CP(0x8857),CP(0x8858),CP(0x8859),CP(0x885A),
  + CP(0x885B),CP(0x885C),CP(0x885D),CP(0x885E),CP(0x885F),CP(0x8860),CP(0x8861),CP(0x8862),
  + CP(0x8863),CP(0x8864),CP(0x8865),CP(0x8866),CP(0x8867),CP(0x8868),CP(0x8869),CP(0x886A),
  + CP(0x886B),CP(0x886C),CP(0x886D),CP(0x886E),CP(0x886F),CP(0x8870),CP(0x8871),CP(0x8872),
  + CP(0x8873),CP(0x8874),CP(0x8875),CP(0x8876),CP(0x8877),CP(0x8878),CP(0x8879),CP(0x887A),
  + CP(0x887B),CP(0x887C),CP(0x887D),CP(0x887E),CP(0x8921),CP(0x8922),CP(0x8923),CP(0x8924),
  + CP(0x8925),CP(0x8926),CP(0x8927),CP(0x8928),CP(0x8929),CP(0x892A),CP(0x892B),CP(0x892C),
  + CP(0x892D),CP(0x892E),CP(0x892F),CP(0x8930),CP(0x8931),CP(0x8932),CP(0x8933),CP(0x8934),
  + CP(0x8935),CP(0x8936),CP(0x8937),CP(0x8938),CP(0x8939),CP(0x893A),CP(0x893B),CP(0x893C),
  + CP(0x893D),CP(0x893E),CP(0x893F),CP(0x8940),CP(0x8941),CP(0x8942),CP(0x8943),CP(0x8944),
  + CP(0x8945),CP(0x8946),CP(0x8947),CP(0x8948),CP(0x8949),CP(0x894A),CP(0x894B),CP(0x894C),
  + CP(0x894D),CP(0x894E),CP(0x894F),CP(0x8950),CP(0x8951),CP(0x8952),CP(0x8953),CP(0x8954),
  + CP(0x8955),CP(0x8956),CP(0x8957),CP(0x8958),CP(0x8959),CP(0x895A),CP(0x895B),CP(0x895C),
  + CP(0x895D),CP(0x895E),CP(0x895F),CP(0x8960),CP(0x8961),CP(0x8962),CP(0x8963),CP(0x8964),
  + CP(0x8965),CP(0x8966),CP(0x8967),CP(0x8968),CP(0x8969),CP(0x896A),CP(0x896B),CP(0x896C),
  + CP(0x896D),CP(0x896E),CP(0x896F),CP(0x8970),CP(0x8971),CP(0x8972),CP(0x8973),CP(0x8974),
  + 
  + /* E400h */
  + CP(0x8975),CP(0x8976),CP(0x8977),CP(0x8978),CP(0x8979),CP(0x897A),CP(0x897B),CP(0x897C),
  + CP(0x897D),CP(0x897E),CP(0x8A21),CP(0x8A22),CP(0x8A23),CP(0x8A24),CP(0x8A25),CP(0x8A26),
  + CP(0x8A27),CP(0x8A28),CP(0x8A29),CP(0x8A2A),CP(0x8A2B),CP(0x8A2C),CP(0x8A2D),CP(0x8A2E),
  + CP(0x8A2F),CP(0x8A30),CP(0x8A31),CP(0x8A32),CP(0x8A33),CP(0x8A34),CP(0x8A35),CP(0x8A36),
  + CP(0x8A37),CP(0x8A38),CP(0x8A39),CP(0x8A3A),CP(0x8A3B),CP(0x8A3C),CP(0x8A3D),CP(0x8A3E),
  + CP(0x8A3F),CP(0x8A40),CP(0x8A41),CP(0x8A42),CP(0x8A43),CP(0x8A44),CP(0x8A45),CP(0x8A46),
  + CP(0x8A47),CP(0x8A48),CP(0x8A49),CP(0x8A4A),CP(0x8A4B),CP(0x8A4C),CP(0x8A4D),CP(0x8A4E),
  + CP(0x8A4F),CP(0x8A50),CP(0x8A51),CP(0x8A52),CP(0x8A53),CP(0x8A54),CP(0x8A55),CP(0x8A56),
  + CP(0x8A57),CP(0x8A58),CP(0x8A59),CP(0x8A5A),CP(0x8A5B),CP(0x8A5C),CP(0x8A5D),CP(0x8A5E),
  + CP(0x8A5F),CP(0x8A60),CP(0x8A61),CP(0x8A62),CP(0x8A63),CP(0x8A64),CP(0x8A65),CP(0x8A66),
  + CP(0x8A67),CP(0x8A68),CP(0x8A69),CP(0x8A6A),CP(0x8A6B),CP(0x8A6C),CP(0x8A6D),CP(0x8A6E),
  + CP(0x8A6F),CP(0x8A70),CP(0x8A71),CP(0x8A72),CP(0x8A73),CP(0x8A74),CP(0x8A75),CP(0x8A76),
  + CP(0x8A77),CP(0x8A78),CP(0x8A79),CP(0x8A7A),CP(0x8A7B),CP(0x8A7C),CP(0x8A7D),CP(0x8A7E),
  + CP(0x8B21),CP(0x8B22),CP(0x8B23),CP(0x8B24),CP(0x8B25),CP(0x8B26),CP(0x8B27),CP(0x8B28),
  + CP(0x8B29),CP(0x8B2A),CP(0x8B2B),CP(0x8B2C),CP(0x8B2D),CP(0x8B2E),CP(0x8B2F),CP(0x8B30),
  + CP(0x8B31),CP(0x8B32),CP(0x8B33),CP(0x8B34),CP(0x8B35),CP(0x8B36),CP(0x8B37),CP(0x8B38),
  + CP(0x8B39),CP(0x8B3A),CP(0x8B3B),CP(0x8B3C),CP(0x8B3D),CP(0x8B3E),CP(0x8B3F),CP(0x8B40),
  + CP(0x8B41),CP(0x8B42),CP(0x8B43),CP(0x8B44),CP(0x8B45),CP(0x8B46),CP(0x8B47),CP(0x8B48),
  + CP(0x8B49),CP(0x8B4A),CP(0x8B4B),CP(0x8B4C),CP(0x8B4D),CP(0x8B4E),CP(0x8B4F),CP(0x8B50),
  + CP(0x8B51),CP(0x8B52),CP(0x8B53),CP(0x8B54),CP(0x8B55),CP(0x8B56),CP(0x8B57),CP(0x8B58),
  + CP(0x8B59),CP(0x8B5A),CP(0x8B5B),CP(0x8B5C),CP(0x8B5D),CP(0x8B5E),CP(0x8B5F),CP(0x8B60),
  + CP(0x8B61),CP(0x8B62),CP(0x8B63),CP(0x8B64),CP(0x8B65),CP(0x8B66),CP(0x8B67),CP(0x8B68),
  + CP(0x8B69),CP(0x8B6A),CP(0x8B6B),CP(0x8B6C),CP(0x8B6D),CP(0x8B6E),CP(0x8B6F),CP(0x8B70),
  + CP(0x8B71),CP(0x8B72),CP(0x8B73),CP(0x8B74),CP(0x8B75),CP(0x8B76),CP(0x8B77),CP(0x8B78),
  + CP(0x8B79),CP(0x8B7A),CP(0x8B7B),CP(0x8B7C),CP(0x8B7D),CP(0x8B7E),CP(0x8C21),CP(0x8C22),
  + CP(0x8C23),CP(0x8C24),CP(0x8C25),CP(0x8C26),CP(0x8C27),CP(0x8C28),CP(0x8C29),CP(0x8C2A),
  + CP(0x8C2B),CP(0x8C2C),CP(0x8C2D),CP(0x8C2E),CP(0x8C2F),CP(0x8C30),CP(0x8C31),CP(0x8C32),
  + CP(0x8C33),CP(0x8C34),CP(0x8C35),CP(0x8C36),CP(0x8C37),CP(0x8C38),CP(0x8C39),CP(0x8C3A),
  + CP(0x8C3B),CP(0x8C3C),CP(0x8C3D),CP(0x8C3E),CP(0x8C3F),CP(0x8C40),CP(0x8C41),CP(0x8C42),
  + CP(0x8C43),CP(0x8C44),CP(0x8C45),CP(0x8C46),CP(0x8C47),CP(0x8C48),CP(0x8C49),CP(0x8C4A),
  + CP(0x8C4B),CP(0x8C4C),CP(0x8C4D),CP(0x8C4E),CP(0x8C4F),CP(0x8C50),CP(0x8C51),CP(0x8C52),
  + CP(0x8C53),CP(0x8C54),CP(0x8C55),CP(0x8C56),CP(0x8C57),CP(0x8C58),CP(0x8C59),CP(0x8C5A),
  + 
  + /* E500h */
  + CP(0x8C5B),CP(0x8C5C),CP(0x8C5D),CP(0x8C5E),CP(0x8C5F),CP(0x8C60),CP(0x8C61),CP(0x8C62),
  + CP(0x8C63),CP(0x8C64),CP(0x8C65),CP(0x8C66),CP(0x8C67),CP(0x8C68),CP(0x8C69),CP(0x8C6A),
  + CP(0x8C6B),CP(0x8C6C),CP(0x8C6D),CP(0x8C6E),CP(0x8C6F),CP(0x8C70),CP(0x8C71),CP(0x8C72),
  + CP(0x8C73),CP(0x8C74),CP(0x8C75),CP(0x8C76),CP(0x8C77),CP(0x8C78),CP(0x8C79),CP(0x8C7A),
  + CP(0x8C7B),CP(0x8C7C),CP(0x8C7D),CP(0x8C7E),CP(0x8D21),CP(0x8D22),CP(0x8D23),CP(0x8D24),
  + CP(0x8D25),CP(0x8D26),CP(0x8D27),CP(0x8D28),CP(0x8D29),CP(0x8D2A),CP(0x8D2B),CP(0x8D2C),
  + CP(0x8D2D),CP(0x8D2E),CP(0x8D2F),CP(0x8D30),CP(0x8D31),CP(0x8D32),CP(0x8D33),CP(0x8D34),
  + CP(0x8D35),CP(0x8D36),CP(0x8D37),CP(0x8D38),CP(0x8D39),CP(0x8D3A),CP(0x8D3B),CP(0x8D3C),
  + CP(0x8D3D),CP(0x8D3E),CP(0x8D3F),CP(0x8D40),CP(0x8D41),CP(0x8D42),CP(0x8D43),CP(0x8D44),
  + CP(0x8D45),CP(0x8D46),CP(0x8D47),CP(0x8D48),CP(0x8D49),CP(0x8D4A),CP(0x8D4B),CP(0x8D4C),
  + CP(0x8D4D),CP(0x8D4E),CP(0x8D4F),CP(0x8D50),CP(0x8D51),CP(0x8D52),CP(0x8D53),CP(0x8D54),
  + CP(0x8D55),CP(0x8D56),CP(0x8D57),CP(0x8D58),CP(0x8D59),CP(0x8D5A),CP(0x8D5B),CP(0x8D5C),
  + CP(0x8D5D),CP(0x8D5E),CP(0x8D5F),CP(0x8D60),CP(0x8D61),CP(0x8D62),CP(0x8D63),CP(0x8D64),
  + CP(0x8D65),CP(0x8D66),CP(0x8D67),CP(0x8D68),CP(0x8D69),CP(0x8D6A),CP(0x8D6B),CP(0x8D6C),
  + CP(0x8D6D),CP(0x8D6E),CP(0x8D6F),CP(0x8D70),CP(0x8D71),CP(0x8D72),CP(0x8D73),CP(0x8D74),
  + CP(0x8D75),CP(0x8D76),CP(0x8D77),CP(0x8D78),CP(0x8D79),CP(0x8D7A),CP(0x8D7B),CP(0x8D7C),
  + CP(0x8D7D),CP(0x8D7E),CP(0x8E21),CP(0x8E22),CP(0x8E23),CP(0x8E24),CP(0x8E25),CP(0x8E26),
  + CP(0x8E27),CP(0x8E28),CP(0x8E29),CP(0x8E2A),CP(0x8E2B),CP(0x8E2C),CP(0x8E2D),CP(0x8E2E),
  + CP(0x8E2F),CP(0x8E30),CP(0x8E31),CP(0x8E32),CP(0x8E33),CP(0x8E34),CP(0x8E35),CP(0x8E36),
  + CP(0x8E37),CP(0x8E38),CP(0x8E39),CP(0x8E3A),CP(0x8E3B),CP(0x8E3C),CP(0x8E3D),CP(0x8E3E),
  + CP(0x8E3F),CP(0x8E40),CP(0x8E41),CP(0x8E42),CP(0x8E43),CP(0x8E44),CP(0x8E45),CP(0x8E46),
  + CP(0x8E47),CP(0x8E48),CP(0x8E49),CP(0x8E4A),CP(0x8E4B),CP(0x8E4C),CP(0x8E4D),CP(0x8E4E),
  + CP(0x8E4F),CP(0x8E50),CP(0x8E51),CP(0x8E52),CP(0x8E53),CP(0x8E54),CP(0x8E55),CP(0x8E56),
  + CP(0x8E57),CP(0x8E58),CP(0x8E59),CP(0x8E5A),CP(0x8E5B),CP(0x8E5C),CP(0x8E5D),CP(0x8E5E),
  + CP(0x8E5F),CP(0x8E60),CP(0x8E61),CP(0x8E62),CP(0x8E63),CP(0x8E64),CP(0x8E65),CP(0x8E66),
  + CP(0x8E67),CP(0x8E68),CP(0x8E69),CP(0x8E6A),CP(0x8E6B),CP(0x8E6C),CP(0x8E6D),CP(0x8E6E),
  + CP(0x8E6F),CP(0x8E70),CP(0x8E71),CP(0x8E72),CP(0x8E73),CP(0x8E74),CP(0x8E75),CP(0x8E76),
  + CP(0x8E77),CP(0x8E78),CP(0x8E79),CP(0x8E7A),CP(0x8E7B),CP(0x8E7C),CP(0x8E7D),CP(0x8E7E),
  + CP(0x8F21),CP(0x8F22),CP(0x8F23),CP(0x8F24),CP(0x8F25),CP(0x8F26),CP(0x8F27),CP(0x8F28),
  + CP(0x8F29),CP(0x8F2A),CP(0x8F2B),CP(0x8F2C),CP(0x8F2D),CP(0x8F2E),CP(0x8F2F),CP(0x8F30),
  + CP(0x8F31),CP(0x8F32),CP(0x8F33),CP(0x8F34),CP(0x8F35),CP(0x8F36),CP(0x8F37),CP(0x8F38),
  + CP(0x8F39),CP(0x8F3A),CP(0x8F3B),CP(0x8F3C),CP(0x8F3D),CP(0x8F3E),CP(0x8F3F),CP(0x8F40),
  + 
  + /* E600h */
  + CP(0x8F41),CP(0x8F42),CP(0x8F43),CP(0x8F44),CP(0x8F45),CP(0x8F46),CP(0x8F47),CP(0x8F48),
  + CP(0x8F49),CP(0x8F4A),CP(0x8F4B),CP(0x8F4C),CP(0x8F4D),CP(0x8F4E),CP(0x8F4F),CP(0x8F50),
  + CP(0x8F51),CP(0x8F52),CP(0x8F53),CP(0x8F54),CP(0x8F55),CP(0x8F56),CP(0x8F57),CP(0x8F58),
  + CP(0x8F59),CP(0x8F5A),CP(0x8F5B),CP(0x8F5C),CP(0x8F5D),CP(0x8F5E),CP(0x8F5F),CP(0x8F60),
  + CP(0x8F61),CP(0x8F62),CP(0x8F63),CP(0x8F64),CP(0x8F65),CP(0x8F66),CP(0x8F67),CP(0x8F68),
  + CP(0x8F69),CP(0x8F6A),CP(0x8F6B),CP(0x8F6C),CP(0x8F6D),CP(0x8F6E),CP(0x8F6F),CP(0x8F70),
  + CP(0x8F71),CP(0x8F72),CP(0x8F73),CP(0x8F74),CP(0x8F75),CP(0x8F76),CP(0x8F77),CP(0x8F78),
  + CP(0x8F79),CP(0x8F7A),CP(0x8F7B),CP(0x8F7C),CP(0x8F7D),CP(0x8F7E),CP(0x9021),CP(0x9022),
  + CP(0x9023),CP(0x9024),CP(0x9025),CP(0x9026),CP(0x9027),CP(0x9028),CP(0x9029),CP(0x902A),
  + CP(0x902B),CP(0x902C),CP(0x902D),CP(0x902E),CP(0x902F),CP(0x9030),CP(0x9031),CP(0x9032),
  + CP(0x9033),CP(0x9034),CP(0x9035),CP(0x9036),CP(0x9037),CP(0x9038),CP(0x9039),CP(0x903A),
  + CP(0x903B),CP(0x903C),CP(0x903D),CP(0x903E),CP(0x903F),CP(0x9040),CP(0x9041),CP(0x9042),
  + CP(0x9043),CP(0x9044),CP(0x9045),CP(0x9046),CP(0x9047),CP(0x9048),CP(0x9049),CP(0x904A),
  + CP(0x904B),CP(0x904C),CP(0x904D),CP(0x904E),CP(0x904F),CP(0x9050),CP(0x9051),CP(0x9052),
  + CP(0x9053),CP(0x9054),CP(0x9055),CP(0x9056),CP(0x9057),CP(0x9058),CP(0x9059),CP(0x905A),
  + CP(0x905B),CP(0x905C),CP(0x905D),CP(0x905E),CP(0x905F),CP(0x9060),CP(0x9061),CP(0x9062),
  + CP(0x9063),CP(0x9064),CP(0x9065),CP(0x9066),CP(0x9067),CP(0x9068),CP(0x9069),CP(0x906A),
  + CP(0x906B),CP(0x906C),CP(0x906D),CP(0x906E),CP(0x906F),CP(0x9070),CP(0x9071),CP(0x9072),
  + CP(0x9073),CP(0x9074),CP(0x9075),CP(0x9076),CP(0x9077),CP(0x9078),CP(0x9079),CP(0x907A),
  + CP(0x907B),CP(0x907C),CP(0x907D),CP(0x907E),CP(0x9121),CP(0x9122),CP(0x9123),CP(0x9124),
  + CP(0x9125),CP(0x9126),CP(0x9127),CP(0x9128),CP(0x9129),CP(0x912A),CP(0x912B),CP(0x912C),
  + CP(0x912D),CP(0x912E),CP(0x912F),CP(0x9130),CP(0x9131),CP(0x9132),CP(0x9133),CP(0x9134),
  + CP(0x9135),CP(0x9136),CP(0x9137),CP(0x9138),CP(0x9139),CP(0x913A),CP(0x913B),CP(0x913C),
  + CP(0x913D),CP(0x913E),CP(0x913F),CP(0x9140),CP(0x9141),CP(0x9142),CP(0x9143),CP(0x9144),
  + CP(0x9145),CP(0x9146),CP(0x9147),CP(0x9148),CP(0x9149),CP(0x914A),CP(0x914B),CP(0x914C),
  + CP(0x914D),CP(0x914E),CP(0x914F),CP(0x9150),CP(0x9151),CP(0x9152),CP(0x9153),CP(0x9154),
  + CP(0x9155),CP(0x9156),CP(0x9157),CP(0x9158),CP(0x9159),CP(0x915A),CP(0x915B),CP(0x915C),
  + CP(0x915D),CP(0x915E),CP(0x915F),CP(0x9160),CP(0x9161),CP(0x9162),CP(0x9163),CP(0x9164),
  + CP(0x9165),CP(0x9166),CP(0x9167),CP(0x9168),CP(0x9169),CP(0x916A),CP(0x916B),CP(0x916C),
  + CP(0x916D),CP(0x916E),CP(0x916F),CP(0x9170),CP(0x9171),CP(0x9172),CP(0x9173),CP(0x9174),
  + CP(0x9175),CP(0x9176),CP(0x9177),CP(0x9178),CP(0x9179),CP(0x917A),CP(0x917B),CP(0x917C),
  + CP(0x917D),CP(0x917E),CP(0x9221),CP(0x9222),CP(0x9223),CP(0x9224),CP(0x9225),CP(0x9226),
  + 
  + /* E700h */
  + CP(0x9227),CP(0x9228),CP(0x9229),CP(0x922A),CP(0x922B),CP(0x922C),CP(0x922D),CP(0x922E),
  + CP(0x922F),CP(0x9230),CP(0x9231),CP(0x9232),CP(0x9233),CP(0x9234),CP(0x9235),CP(0x9236),
  + CP(0x9237),CP(0x9238),CP(0x9239),CP(0x923A),CP(0x923B),CP(0x923C),CP(0x923D),CP(0x923E),
  + CP(0x923F),CP(0x9240),CP(0x9241),CP(0x9242),CP(0x9243),CP(0x9244),CP(0x9245),CP(0x9246),
  + CP(0x9247),CP(0x9248),CP(0x9249),CP(0x924A),CP(0x924B),CP(0x924C),CP(0x924D),CP(0x924E),
  + CP(0x924F),CP(0x9250),CP(0x9251),CP(0x9252),CP(0x9253),CP(0x9254),CP(0x9255),CP(0x9256),
  + CP(0x9257),CP(0x9258),CP(0x9259),CP(0x925A),CP(0x925B),CP(0x925C),CP(0x925D),CP(0x925E),
  + CP(0x925F),CP(0x9260),CP(0x9261),CP(0x9262),CP(0x9263),CP(0x9264),CP(0x9265),CP(0x9266),
  + CP(0x9267),CP(0x9268),CP(0x9269),CP(0x926A),CP(0x926B),CP(0x926C),CP(0x926D),CP(0x926E),
  + CP(0x926F),CP(0x9270),CP(0x9271),CP(0x9272),CP(0x9273),CP(0x9274),CP(0x9275),CP(0x9276),
  + CP(0x9277),CP(0x9278),CP(0x9279),CP(0x927A),CP(0x927B),CP(0x927C),CP(0x927D),CP(0x927E)
  +};
  +
  +
  +static const int table_ucs_cp932_ext_euc[] = {
  + 0x2121,CP(0x2D64),
  + 0x2160,CP(0x2D35),
  + 0x2161,CP(0x2D36),
  + 0x2162,CP(0x2D37),
  + 0x2163,CP(0x2D38),
  + 0x2164,CP(0x2D39),
  + 0x2165,CP(0x2D3A),
  + 0x2166,CP(0x2D3B),
  + 0x2167,CP(0x2D3C),
  + 0x2168,CP(0x2D3D),
  + 0x2169,CP(0x2D3E),
  + 0x2170,J3(0x7373),
  + 0x2171,J3(0x7374),
  + 0x2172,J3(0x7375),
  + 0x2173,J3(0x7376),
  + 0x2174,J3(0x7377),
  + 0x2175,J3(0x7378),
  + 0x2176,J3(0x7379),
  + 0x2177,J3(0x737A),
  + 0x2178,J3(0x737B),
  + 0x2179,J3(0x737C),
  + 0x2211,CP(0x2D74),
  + 0x221F,CP(0x2D78),
  + 0x222E,CP(0x2D73),
  + 0x22BF,CP(0x2D79),
  + 0x2460,CP(0x2D21),
  + 0x2461,CP(0x2D22),
  + 0x2462,CP(0x2D23),
  + 0x2463,CP(0x2D24),
  + 0x2464,CP(0x2D25),
  + 0x2465,CP(0x2D26),
  + 0x2466,CP(0x2D27),
  + 0x2467,CP(0x2D28),
  + 0x2468,CP(0x2D29),
  + 0x2469,CP(0x2D2A),
  + 0x246A,CP(0x2D2B),
  + 0x246B,CP(0x2D2C),
  + 0x246C,CP(0x2D2D),
  + 0x246D,CP(0x2D2E),
  + 0x246E,CP(0x2D2F),
  + 0x246F,CP(0x2D30),
  + 0x2470,CP(0x2D31),
  + 0x2471,CP(0x2D32),
  + 0x2472,CP(0x2D33),
  + 0x2473,CP(0x2D34),
  + 0x301D,CP(0x2D60),
  + 0x301F,CP(0x2D61),
  + 0x3231,CP(0x2D6A),
  + 0x3232,CP(0x2D6B),
  + 0x3239,CP(0x2D6C),
  + 0x32A4,CP(0x2D65),
  + 0x32A5,CP(0x2D66),
  + 0x32A6,CP(0x2D67),
  + 0x32A7,CP(0x2D68),
  + 0x32A8,CP(0x2D69),
  + 0x3303,CP(0x2D46),
  + 0x330D,CP(0x2D4A),
  + 0x3314,CP(0x2D41),
  + 0x3318,CP(0x2D44),
  + 0x3322,CP(0x2D42),
  + 0x3323,CP(0x2D4C),
  + 0x3326,CP(0x2D4B),
  + 0x3327,CP(0x2D45),
  + 0x332B,CP(0x2D4D),
  + 0x3336,CP(0x2D47),
  + 0x333B,CP(0x2D4F),
  + 0x3349,CP(0x2D40),
  + 0x334A,CP(0x2D4E),
  + 0x334D,CP(0x2D43),
  + 0x3351,CP(0x2D48),
  + 0x3357,CP(0x2D49),
  + 0x337B,CP(0x2D5F),
  + 0x337C,CP(0x2D6F),
  + 0x337D,CP(0x2D6E),
  + 0x337E,CP(0x2D6D),
  + 0x338E,CP(0x2D53),
  + 0x338F,CP(0x2D54),
  + 0x339C,CP(0x2D50),
  + 0x339D,CP(0x2D51),
  + 0x339E,CP(0x2D52),
  + 0x33A1,CP(0x2D56),
  + 0x33C4,CP(0x2D55),
  + 0x33CD,CP(0x2D63),
  + 0x4EFC,J3(0x742F),
  + 0x50F4,J3(0x7430),
  + 0x51EC,J3(0x7431),
  + 0x5307,J3(0x7432),
  + 0x5324,J3(0x7433),
  + 0x548A,J3(0x7435),
  + 0x5759,J3(0x7436),
  + 0x589E,J3(0x7439),
  + 0x5BEC,J3(0x743A),
  + 0x5CF5,J3(0x743B),
  + 0x5D53,J3(0x743C),
  + 0x5FB7,J3(0x743E),
  + 0x6085,J3(0x743F),
  + 0x6120,J3(0x7440),
  + 0x654E,J3(0x7441),
  + 0x663B,J3(0x7442),
  + 0x6665,J3(0x7443),
  + 0x6801,J3(0x7446),
  + 0x6A6B,J3(0x7449),
  + 0x6AE2,J3(0x744A),
  + 0x6DF2,J3(0x744C),
  + 0x6DF8,J3(0x744B),
  + 0x7028,J3(0x744D),
  + 0x70BB,J3(0x742E),
  + 0x7501,J3(0x7450),
  + 0x7682,J3(0x7451),
  + 0x769E,J3(0x7452),
  + 0x7930,J3(0x7454),
  + 0x7AE7,J3(0x7459),
  + 0x7DA0,J3(0x745C),
  + 0x7DD6,J3(0x745D),
  + 0x8362,J3(0x745F),
  + 0x85B0,J3(0x7461),
  + 0x8807,J3(0x7464),
  + 0x8B7F,J3(0x7466),
  + 0x8CF4,J3(0x7467),
  + 0x8D76,J3(0x7468),
  + 0x90DE,J3(0x746C),
  + 0x9115,J3(0x746E),
  + 0x9592,J3(0x7471),
  + 0x973B,J3(0x7474),
  + 0x974D,J3(0x7475),
  + 0x9751,J3(0x7476),
  + 0x999E,J3(0x747A),
  + 0x9AD9,J3(0x747B),
  + 0x9B72,J3(0x747C),
  + 0x9ED1,J3(0x747E),
  + 0xF929,J3(0x7445),
  + 0xF9DC,J3(0x7472),
  + 0xFA0E,J3(0x7434),
  + 0xFA0F,J3(0x7437),
  + 0xFA10,J3(0x7438),
  + 0xFA11,J3(0x743D),
  + 0xFA12,J3(0x7444),
  + 0xFA13,J3(0x7447),
  + 0xFA14,J3(0x7448),
  + 0xFA15,J3(0x744E),
  + 0xFA16,J3(0x744F),
  + 0xFA17,J3(0x7453),
  + 0xFA18,J3(0x7455),
  + 0xFA19,J3(0x7456),
  + 0xFA1A,J3(0x7457),
  + 0xFA1B,J3(0x7458),
  + 0xFA1C,J3(0x745A),
  + 0xFA1D,J3(0x745B),
  + 0xFA1E,J3(0x745E),
  + 0xFA1F,J3(0x7460),
  + 0xFA20,J3(0x7462),
  + 0xFA21,J3(0x7463),
  + 0xFA22,J3(0x7465),
  + 0xFA23,J3(0x7469),
  + 0xFA24,J3(0x746A),
  + 0xFA25,J3(0x746B),
  + 0xFA26,J3(0x746D),
  + 0xFA27,J3(0x746F),
  + 0xFA28,J3(0x7470),
  + 0xFA29,J3(0x7473),
  + 0xFA2A,J3(0x7477),
  + 0xFA2B,J3(0x7478),
  + 0xFA2C,J3(0x7479),
  + 0xFA2D,J3(0x747D),
  + 0xFF02,J3(0x742A),
  + 0xFF07,J3(0x7429),
  + 0xFFE4,J3(0x2243)
  +};
  +
  +
  +static const int table_ucs_cp932_ext_sjis[] = {
  + 0x2116,CP(0x2D62),
  + 0x2121,CP(0x2D64),
  + 0x2160,CP(0x2D35),
  + 0x2161,CP(0x2D36),
  + 0x2162,CP(0x2D37),
  + 0x2163,CP(0x2D38),
  + 0x2164,CP(0x2D39),
  + 0x2165,CP(0x2D3A),
  + 0x2166,CP(0x2D3B),
  + 0x2167,CP(0x2D3C),
  + 0x2168,CP(0x2D3D),
  + 0x2169,CP(0x2D3E),
  + 0x2170,CP(0x9321),
  + 0x2171,CP(0x9322),
  + 0x2172,CP(0x9323),
  + 0x2173,CP(0x9324),
  + 0x2174,CP(0x9325),
  + 0x2175,CP(0x9326),
  + 0x2176,CP(0x9327),
  + 0x2177,CP(0x9328),
  + 0x2178,CP(0x9329),
  + 0x2179,CP(0x932A),
  + 0x2211,CP(0x2D74),
  + 0x221F,CP(0x2D78),
  + 0x222E,CP(0x2D73),
  + 0x22BF,CP(0x2D79),
  + 0x2460,CP(0x2D21),
  + 0x2461,CP(0x2D22),
  + 0x2462,CP(0x2D23),
  + 0x2463,CP(0x2D24),
  + 0x2464,CP(0x2D25),
  + 0x2465,CP(0x2D26),
  + 0x2466,CP(0x2D27),
  + 0x2467,CP(0x2D28),
  + 0x2468,CP(0x2D29),
  + 0x2469,CP(0x2D2A),
  + 0x246A,CP(0x2D2B),
  + 0x246B,CP(0x2D2C),
  + 0x246C,CP(0x2D2D),
  + 0x246D,CP(0x2D2E),
  + 0x246E,CP(0x2D2F),
  + 0x246F,CP(0x2D30),
  + 0x2470,CP(0x2D31),
  + 0x2471,CP(0x2D32),
  + 0x2472,CP(0x2D33),
  + 0x2473,CP(0x2D34),
  + 0x301D,CP(0x2D60),
  + 0x301F,CP(0x2D61),
  + 0x3231,CP(0x2D6A),
  + 0x3232,CP(0x2D6B),
  + 0x3239,CP(0x2D6C),
  + 0x32A4,CP(0x2D65),
  + 0x32A5,CP(0x2D66),
  + 0x32A6,CP(0x2D67),
  + 0x32A7,CP(0x2D68),
  + 0x32A8,CP(0x2D69),
  + 0x3303,CP(0x2D46),
  + 0x330D,CP(0x2D4A),
  + 0x3314,CP(0x2D41),
  + 0x3318,CP(0x2D44),
  + 0x3322,CP(0x2D42),
  + 0x3323,CP(0x2D4C),
  + 0x3326,CP(0x2D4B),
  + 0x3327,CP(0x2D45),
  + 0x332B,CP(0x2D4D),
  + 0x3336,CP(0x2D47),
  + 0x333B,CP(0x2D4F),
  + 0x3349,CP(0x2D40),
  + 0x334A,CP(0x2D4E),
  + 0x334D,CP(0x2D43),
  + 0x3351,CP(0x2D48),
  + 0x3357,CP(0x2D49),
  + 0x337B,CP(0x2D5F),
  + 0x337C,CP(0x2D6F),
  + 0x337D,CP(0x2D6E),
  + 0x337E,CP(0x2D6D),
  + 0x338E,CP(0x2D53),
  + 0x338F,CP(0x2D54),
  + 0x339C,CP(0x2D50),
  + 0x339D,CP(0x2D51),
  + 0x339E,CP(0x2D52),
  + 0x33A1,CP(0x2D56),
  + 0x33C4,CP(0x2D55),
  + 0x33CD,CP(0x2D63),
  + 0x4E28,CP(0x9349),
  + 0x4EE1,CP(0x934A),
  + 0x4EFC,CP(0x934B),
  + 0x4F00,CP(0x934C),
  + 0x4F03,CP(0x934D),
  + 0x4F39,CP(0x934E),
  + 0x4F56,CP(0x934F),
  + 0x4F8A,CP(0x9351),
  + 0x4F92,CP(0x9350),
  + 0x4F94,CP(0x9353),
  + 0x4F9A,CP(0x9352),
  + 0x4FC9,CP(0x9342),
  + 0x4FCD,CP(0x9354),
  + 0x4FFF,CP(0x9357),
  + 0x501E,CP(0x9358),
  + 0x5022,CP(0x9356),
  + 0x5040,CP(0x9355),
  + 0x5042,CP(0x935B),
  + 0x5046,CP(0x9359),
  + 0x5070,CP(0x935A),
  + 0x5094,CP(0x935C),
  + 0x50D8,CP(0x935E),
  + 0x50F4,CP(0x935D),
  + 0x514A,CP(0x935F),
  + 0x5164,CP(0x9360),
  + 0x519D,CP(0x9361),
  + 0x51BE,CP(0x9362),
  + 0x51EC,CP(0x9363),
  + 0x5215,CP(0x9364),
  + 0x529C,CP(0x9365),
  + 0x52A6,CP(0x9366),
  + 0x52AF,CP(0x9558),
  + 0x52C0,CP(0x9367),
  + 0x52DB,CP(0x9368),
  + 0x5300,CP(0x9369),
  + 0x5307,CP(0x936A),
  + 0x5324,CP(0x936B),
  + 0x5372,CP(0x936C),
  + 0x5393,CP(0x936D),
  + 0x53B2,CP(0x936E),
  + 0x53DD,CP(0x936F),
  + 0x548A,CP(0x9372),
  + 0x549C,CP(0x9371),
  + 0x54A9,CP(0x9373),
  + 0x54FF,CP(0x9374),
  + 0x5586,CP(0x9375),
  + 0x5759,CP(0x9376),
  + 0x5765,CP(0x9377),
  + 0x57AC,CP(0x9378),
  + 0x57C7,CP(0x937A),
  + 0x57C8,CP(0x9379),
  + 0x589E,CP(0x937D),
  + 0x58B2,CP(0x937E),
  + 0x590B,CP(0x9421),
  + 0x5953,CP(0x9422),
  + 0x595B,CP(0x9423),
  + 0x595D,CP(0x9424),
  + 0x5963,CP(0x9425),
  + 0x59A4,CP(0x9426),
  + 0x59BA,CP(0x9427),
  + 0x5B56,CP(0x9428),
  + 0x5BC0,CP(0x9429),
  + 0x5BD8,CP(0x942B),
  + 0x5BEC,CP(0x942C),
  + 0x5C1E,CP(0x942D),
  + 0x5CA6,CP(0x942E),
  + 0x5CBA,CP(0x942F),
  + 0x5CF5,CP(0x9430),
  + 0x5D27,CP(0x9431),
  + 0x5D42,CP(0x9434),
  + 0x5D53,CP(0x9432),
  + 0x5D6D,CP(0x9435),
  + 0x5DB8,CP(0x9436),
  + 0x5DB9,CP(0x9437),
  + 0x5DD0,CP(0x9438),
  + 0x5F21,CP(0x9439),
  + 0x5F34,CP(0x943A),
  + 0x5F45,CP(0x9348),
  + 0x5F67,CP(0x943B),
  + 0x5FB7,CP(0x943C),
  + 0x5FDE,CP(0x943D),
  + 0x605D,CP(0x943E),
  + 0x6085,CP(0x943F),
  + 0x608A,CP(0x9440),
  + 0x60D5,CP(0x9442),
  + 0x60DE,CP(0x9441),
  + 0x60F2,CP(0x9444),
  + 0x6111,CP(0x9445),
  + 0x6120,CP(0x9443),
  + 0x6130,CP(0x9447),
  + 0x6137,CP(0x9446),
  + 0x6198,CP(0x9448),
  + 0x6213,CP(0x9449),
  + 0x62A6,CP(0x944A),
  + 0x63F5,CP(0x944B),
  + 0x6460,CP(0x944C),
  + 0x649D,CP(0x944D),
  + 0x64CE,CP(0x944E),
  + 0x654E,CP(0x944F),
  + 0x6600,CP(0x9450),
  + 0x6609,CP(0x9453),
  + 0x6615,CP(0x9451),
  + 0x661E,CP(0x9455),
  + 0x6624,CP(0x9456),
  + 0x662E,CP(0x9454),
  + 0x6631,CP(0x9344),
  + 0x663B,CP(0x9452),
  + 0x6657,CP(0x9458),
  + 0x6659,CP(0x9459),
  + 0x6665,CP(0x9457),
  + 0x6673,CP(0x945B),
  + 0x6699,CP(0x945C),
  + 0x66A0,CP(0x945D),
  + 0x66B2,CP(0x945E),
  + 0x66BF,CP(0x945F),
  + 0x66FA,CP(0x9460),
  + 0x66FB,CP(0x9347),
  + 0x670E,CP(0x9461),
  + 0x6766,CP(0x9463),
  + 0x67BB,CP(0x9464),
  + 0x67C0,CP(0x9466),
  + 0x6801,CP(0x9467),
  + 0x6844,CP(0x9468),
  + 0x6852,CP(0x9465),
  + 0x68C8,CP(0x9345),
  + 0x68CF,CP(0x9469),
  + 0x6968,CP(0x946B),
  + 0x6998,CP(0x946D),
  + 0x69E2,CP(0x946E),
  + 0x6A30,CP(0x946F),
  + 0x6A46,CP(0x9471),
  + 0x6A6B,CP(0x9470),
  + 0x6A73,CP(0x9472),
  + 0x6A7E,CP(0x9473),
  + 0x6AE2,CP(0x9474),
  + 0x6AE4,CP(0x9475),
  + 0x6BD6,CP(0x9476),
  + 0x6C3F,CP(0x9477),
  + 0x6C5C,CP(0x9478),
  + 0x6C6F,CP(0x947A),
  + 0x6C86,CP(0x9479),
  + 0x6CDA,CP(0x947B),
  + 0x6D04,CP(0x947C),
  + 0x6D6F,CP(0x947E),
  + 0x6D87,CP(0x947D),
  + 0x6D96,CP(0x9521),
  + 0x6DAC,CP(0x9522),
  + 0x6DCF,CP(0x9523),
  + 0x6DF2,CP(0x9525),
  + 0x6DF8,CP(0x9524),
  + 0x6DFC,CP(0x9526),
  + 0x6E27,CP(0x9529),
  + 0x6E39,CP(0x9527),
  + 0x6E3C,CP(0x952A),
  + 0x6E5C,CP(0x9528),
  + 0x6EBF,CP(0x952B),
  + 0x6F88,CP(0x952C),
  + 0x6FB5,CP(0x952D),
  + 0x6FF5,CP(0x952E),
  + 0x7005,CP(0x952F),
  + 0x7007,CP(0x9530),
  + 0x7028,CP(0x9531),
  + 0x7085,CP(0x9532),
  + 0x70AB,CP(0x9533),
  + 0x70BB,CP(0x9343),
  + 0x7104,CP(0x9535),
  + 0x710F,CP(0x9534),
  + 0x7146,CP(0x9537),
  + 0x7147,CP(0x9538),
  + 0x715C,CP(0x9536),
  + 0x71C1,CP(0x953A),
  + 0x71FE,CP(0x953B),
  + 0x72B1,CP(0x953C),
  + 0x72BE,CP(0x953D),
  + 0x7324,CP(0x953E),
  + 0x7377,CP(0x9540),
  + 0x73BD,CP(0x9541),
  + 0x73C9,CP(0x9542),
  + 0x73D2,CP(0x9545),
  + 0x73D6,CP(0x9543),
  + 0x73E3,CP(0x9544),
  + 0x73F5,CP(0x9547),
  + 0x7407,CP(0x9546),
  + 0x7426,CP(0x9548),
  + 0x7429,CP(0x954A),
  + 0x742A,CP(0x9549),
  + 0x742E,CP(0x954B),
  + 0x7462,CP(0x954C),
  + 0x7489,CP(0x954D),
  + 0x749F,CP(0x954E),
  + 0x7501,CP(0x954F),
  + 0x752F,CP(0x942A),
  + 0x756F,CP(0x9550),
  + 0x7682,CP(0x9551),
  + 0x769B,CP(0x9554),
  + 0x769C,CP(0x9552),
  + 0x769E,CP(0x9553),
  + 0x76A6,CP(0x9555),
  + 0x7746,CP(0x9557),
  + 0x7821,CP(0x9559),
  + 0x784E,CP(0x955A),
  + 0x7864,CP(0x955B),
  + 0x787A,CP(0x955C),
  + 0x7930,CP(0x955D),
  + 0x7994,CP(0x9561),
  + 0x799B,CP(0x9563),
  + 0x7AD1,CP(0x9564),
  + 0x7AE7,CP(0x9565),
  + 0x7AEB,CP(0x9567),
  + 0x7B9E,CP(0x9568),
  + 0x7D48,CP(0x956A),
  + 0x7D5C,CP(0x956B),
  + 0x7DA0,CP(0x956D),
  + 0x7DB7,CP(0x956C),
  + 0x7DD6,CP(0x956E),
  + 0x7E52,CP(0x956F),
  + 0x7E8A,CP(0x933D),
  + 0x7F47,CP(0x9570),
  + 0x7FA1,CP(0x9571),
  + 0x8301,CP(0x9573),
  + 0x8362,CP(0x9574),
  + 0x837F,CP(0x9575),
  + 0x83C7,CP(0x9576),
  + 0x83F6,CP(0x9577),
  + 0x8448,CP(0x9578),
  + 0x84B4,CP(0x9579),
  + 0x84DC,CP(0x9341),
  + 0x8553,CP(0x957A),
  + 0x8559,CP(0x957B),
  + 0x856B,CP(0x957C),
  + 0x85B0,CP(0x957E),
  + 0x8807,CP(0x9623),
  + 0x88F5,CP(0x9624),
  + 0x891C,CP(0x933E),
  + 0x8A12,CP(0x9625),
  + 0x8A37,CP(0x9626),
  + 0x8A79,CP(0x9627),
  + 0x8AA7,CP(0x9628),
  + 0x8ABE,CP(0x9629),
  + 0x8ADF,CP(0x962A),
  + 0x8AF6,CP(0x962C),
  + 0x8B53,CP(0x962D),
  + 0x8B7F,CP(0x962E),
  + 0x8CF0,CP(0x962F),
  + 0x8CF4,CP(0x9630),
  + 0x8D12,CP(0x9631),
  + 0x8D76,CP(0x9632),
  + 0x8ECF,CP(0x9634),
  + 0x9067,CP(0x9637),
  + 0x90DE,CP(0x9638),
  + 0x9115,CP(0x963A),
  + 0x9127,CP(0x963B),
  + 0x91D7,CP(0x963D),
  + 0x91DA,CP(0x963C),
  + 0x91DE,CP(0x963E),
  + 0x91E4,CP(0x9641),
  + 0x91E5,CP(0x9642),
  + 0x91ED,CP(0x963F),
  + 0x91EE,CP(0x9640),
  + 0x9206,CP(0x9643),
  + 0x920A,CP(0x9645),
  + 0x9210,CP(0x9644),
  + 0x9239,CP(0x964C),
  + 0x923A,CP(0x9646),
  + 0x923C,CP(0x9648),
  + 0x9240,CP(0x9647),
  + 0x924E,CP(0x9649),
  + 0x9251,CP(0x964B),
  + 0x9259,CP(0x964A),
  + 0x9267,CP(0x964D),
  + 0x9277,CP(0x964F),
  + 0x9278,CP(0x9650),
  + 0x9288,CP(0x9340),
  + 0x92A7,CP(0x964E),
  + 0x92D0,CP(0x9654),
  + 0x92D3,CP(0x9658),
  + 0x92D5,CP(0x9656),
  + 0x92D7,CP(0x9652),
  + 0x92D9,CP(0x9653),
  + 0x92E0,CP(0x9657),
  + 0x92E7,CP(0x9651),
  + 0x92F9,CP(0x9346),
  + 0x92FB,CP(0x965B),
  + 0x92FF,CP(0x965E),
  + 0x9302,CP(0x9660),
  + 0x931D,CP(0x965F),
  + 0x931E,CP(0x965D),
  + 0x9321,CP(0x965A),
  + 0x9325,CP(0x9659),
  + 0x9348,CP(0x933F),
  + 0x9357,CP(0x9662),
  + 0x9370,CP(0x9661),
  + 0x93A4,CP(0x9663),
  + 0x93C6,CP(0x9664),
  + 0x93DE,CP(0x9665),
  + 0x93F8,CP(0x9666),
  + 0x9431,CP(0x9667),
  + 0x9445,CP(0x9668),
  + 0x9448,CP(0x9669),
  + 0x9592,CP(0x966A),
  + 0x969D,CP(0x966D),
  + 0x96AF,CP(0x966E),
  + 0x9733,CP(0x966F),
  + 0x973B,CP(0x9670),
  + 0x9743,CP(0x9671),
  + 0x974D,CP(0x9672),
  + 0x974F,CP(0x9673),
  + 0x9751,CP(0x9674),
  + 0x9755,CP(0x9675),
  + 0x9857,CP(0x9676),
  + 0x9865,CP(0x9677),
  + 0x9927,CP(0x967A),
  + 0x999E,CP(0x967C),
  + 0x9A4E,CP(0x967D),
  + 0x9AD9,CP(0x967E),
  + 0x9ADC,CP(0x9721),
  + 0x9B72,CP(0x9723),
  + 0x9B75,CP(0x9722),
  + 0x9B8F,CP(0x9724),
  + 0x9BB1,CP(0x9725),
  + 0x9BBB,CP(0x9726),
  + 0x9C00,CP(0x9727),
  + 0x9D6B,CP(0x9729),
  + 0x9D70,CP(0x9728),
  + 0x9E19,CP(0x972B),
  + 0x9ED1,CP(0x972C),
  + 0xF929,CP(0x9462),
  + 0xF9DC,CP(0x966B),
  + 0xFA0E,CP(0x9370),
  + 0xFA0F,CP(0x937B),
  + 0xFA10,CP(0x937C),
  + 0xFA11,CP(0x9433),
  + 0xFA12,CP(0x945A),
  + 0xFA13,CP(0x946A),
  + 0xFA14,CP(0x946C),
  + 0xFA15,CP(0x9539),
  + 0xFA16,CP(0x953F),
  + 0xFA17,CP(0x9556),
  + 0xFA18,CP(0x955E),
  + 0xFA19,CP(0x955F),
  + 0xFA1A,CP(0x9560),
  + 0xFA1B,CP(0x9562),
  + 0xFA1C,CP(0x9566),
  + 0xFA1D,CP(0x9569),
  + 0xFA1E,CP(0x9572),
  + 0xFA1F,CP(0x957D),
  + 0xFA20,CP(0x9621),
  + 0xFA21,CP(0x9622),
  + 0xFA22,CP(0x962B),
  + 0xFA23,CP(0x9633),
  + 0xFA24,CP(0x9635),
  + 0xFA25,CP(0x9636),
  + 0xFA26,CP(0x9639),
  + 0xFA27,CP(0x9655),
  + 0xFA28,CP(0x965C),
  + 0xFA29,CP(0x966C),
  + 0xFA2A,CP(0x9678),
  + 0xFA2B,CP(0x9679),
  + 0xFA2C,CP(0x967B),
  + 0xFA2D,CP(0x972A),
  + 0xFF02,CP(0x9338),
  + 0xFF07,CP(0x9337),
  + 0xFFE4,CP(0x9336),
  +};
  +
  +
   #undef J1
   #undef J2
   #undef J3
  +#undef CP
   
   
  -static const mbfl_lookup_table lookup_ascii_ucs = {
  +static mbfl_convert_table lookup_ascii_ucs = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_ascii_ucs",
   	table_ascii_ucs,
   	sizeof(table_ascii_ucs)/sizeof(int),
   	0,
   	sizeof(table_ascii_ucs)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_jisx0201_ucs_gl = {
  +static mbfl_convert_table lookup_jisx0201_ucs_gl = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_jisx0201_ucs_gl",
   	table_jisx0201_ucs_gl,
   	sizeof(table_jisx0201_ucs_gl)/sizeof(int),
   	MBFL_WCSPLANE_JIS0201 + 0x20,
   	MBFL_WCSPLANE_JIS0201 + 0x20 + sizeof(table_jisx0201_ucs_gl)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_jisx0201_ucs_gr = {
  +static mbfl_convert_table lookup_jisx0201_ucs_gr = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_jisx0201_ucs_gr",
   	table_jisx0201_ucs_gr,
   	sizeof(table_jisx0201_ucs_gr)/sizeof(int),
   	MBFL_WCSPLANE_JIS0201 + 0xa0,
   	MBFL_WCSPLANE_JIS0201 + 0xa0 + sizeof(table_jisx0201_ucs_gr)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_jisx0208_ucs_1ku = {
  +static mbfl_convert_table lookup_jisx0201_ucs_ascii = {
  +	MBFL_TABLE_TYPE_LOOKUP,
  +	"ja_jisx0201_ucs_ascii",
  +	table_ascii_ucs,
  +	sizeof(table_ascii_ucs)/sizeof(int),
  +	MBFL_WCSPLANE_JIS0201,
  +	MBFL_WCSPLANE_JIS0201 + sizeof(table_ascii_ucs)/sizeof(int),
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_table lookup_jisx0208_ucs_1ku = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_jisx0208_ucs_1ku",
   	table_jisx0208_ucs_1ku,
   	sizeof(table_jisx0208_ucs_1ku)/sizeof(int),
   	MBFL_WCSPLANE_JIS0208,
   	MBFL_WCSPLANE_JIS0208 + sizeof(table_jisx0208_ucs_1ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_jisx0208_ucs_16ku = {
  +static mbfl_convert_table lookup_jisx0208_ucs_16ku = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_jisx0208_ucs_16ku",
   	table_jisx0208_ucs_16ku,
   	sizeof(table_jisx0208_ucs_16ku)/sizeof(int),
   	MBFL_WCSPLANE_JIS0208 + (16 - 1)*94,
   	MBFL_WCSPLANE_JIS0208 + (16 - 1)*94 + sizeof(table_jisx0208_ucs_16ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_cp932_ucs_1ku = {
  +static mbfl_convert_table lookup_cp932_ucs_1ku = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_cp932_ucs_1ku",
   	table_cp932_ucs_1ku,
   	sizeof(table_cp932_ucs_1ku)/sizeof(int),
  -	MBFL_WCSPLANE_JIS0208,
  -	MBFL_WCSPLANE_JIS0208 + sizeof(table_cp932_ucs_1ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
  +	MBFL_WCSPLANE_WINCP932,
  +	MBFL_WCSPLANE_WINCP932 + sizeof(table_cp932_ucs_1ku)/sizeof(int),
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_table lookup_cp932_ucs_16ku = {
  +	MBFL_TABLE_TYPE_LOOKUP,
  +	"ja_cp932_ucs_16ku",
  +	table_jisx0208_ucs_16ku,
  +	sizeof(table_jisx0208_ucs_16ku)/sizeof(int),
  +	MBFL_WCSPLANE_WINCP932 + (16 - 1)*94,
  +	MBFL_WCSPLANE_WINCP932 + (16 - 1)*94 + sizeof(table_jisx0208_ucs_16ku)/sizeof(int),
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_cp932_ucs_13ku = {
  +static mbfl_convert_table lookup_cp932_ucs_13ku = {		/* vender ext1 */
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_cp932_ucs_13ku",
   	table_cp932_ucs_13ku,
   	sizeof(table_cp932_ucs_13ku)/sizeof(int),
  -	MBFL_WCSPLANE_JIS0208 + (13 - 1)*94,
  -	MBFL_WCSPLANE_JIS0208 + (13 - 1)*94 + sizeof(table_cp932_ucs_13ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
  +	MBFL_WCSPLANE_WINCP932 + (13 - 1)*94,
  +	MBFL_WCSPLANE_WINCP932 + (13 - 1)*94 + sizeof(table_cp932_ucs_13ku)/sizeof(int),
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_cp932_ucs_89ku = {
  -	"ja_cp932_ucs_13ku",
  +static mbfl_convert_table lookup_cp932_ucs_89ku = {		/* vender ext2 */
  +	MBFL_TABLE_TYPE_LOOKUP,
  +	"ja_cp932_ucs_89ku",
   	table_cp932_ucs_89ku,
   	sizeof(table_cp932_ucs_89ku)/sizeof(int),
  -	MBFL_WCSPLANE_JIS0208 + (89 - 1)*94,
  -	MBFL_WCSPLANE_JIS0208 + (89 - 1)*94 + sizeof(table_cp932_ucs_89ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
  +	MBFL_WCSPLANE_WINCP932 + (89 - 1)*94,
  +	MBFL_WCSPLANE_WINCP932 + (89 - 1)*94 + sizeof(table_cp932_ucs_89ku)/sizeof(int),
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_cp932_ucs_95ku = {		/* user1 */
  +static mbfl_convert_table lookup_cp932_ucs_95ku = {		/* user1 */
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_cp932_ucs_95ku",
   	table_cp932_ucs_95ku,
   	sizeof(table_cp932_ucs_95ku)/sizeof(int),
  -	MBFL_WCSPLANE_JIS0208 + (95 - 1)*94,
  -	MBFL_WCSPLANE_JIS0208 + (95 - 1)*94 + sizeof(table_cp932_ucs_95ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
  +	MBFL_WCSPLANE_WINCP932 + (95 - 1)*94,
  +	MBFL_WCSPLANE_WINCP932 + (95 - 1)*94 + sizeof(table_cp932_ucs_95ku)/sizeof(int),
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_cp932_ucs_95ku_euc = {		/* user1 */
  +static mbfl_convert_table lookup_cp932_ucs_95ku_euc = {		/* user1 */
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_cp932_ucs_95ku_euc",
   	table_cp932_ucs_95ku,
   	sizeof(table_cp932_ucs_95ku)/sizeof(int),
  -	MBFL_WCSPLANE_JIS0208 + (85 - 1)*94,
  -	MBFL_WCSPLANE_JIS0208 + (85 - 1)*94 + sizeof(table_cp932_ucs_95ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
  +	MBFL_WCSPLANE_WINCP932 + (85 - 1)*94,
  +	MBFL_WCSPLANE_WINCP932 + (85 - 1)*94 + sizeof(table_cp932_ucs_95ku)/sizeof(int),
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_cp932_ucs_105ku = {		/* user2 */
  +static mbfl_convert_table lookup_cp932_ucs_105ku = {		/* user2 */
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_cp932_ucs_105ku",
   	table_cp932_ucs_105ku,
   	sizeof(table_cp932_ucs_105ku)/sizeof(int),
  -	MBFL_WCSPLANE_JIS0208 + (105 - 1)*94,
  -	MBFL_WCSPLANE_JIS0208 + (105 - 1)*94 + sizeof(table_cp932_ucs_105ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
  +	MBFL_WCSPLANE_WINCP932 + (105 - 1)*94,
  +	MBFL_WCSPLANE_WINCP932 + (105 - 1)*94 + sizeof(table_cp932_ucs_105ku)/sizeof(int),
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_cp932_ucs_105ku_euc = {		/* user2 */
  +static mbfl_convert_table lookup_cp932_ucs_105ku_euc = {		/* user2 */
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_cp932_ucs_105ku_euc",
   	table_cp932_ucs_105ku,
   	sizeof(table_cp932_ucs_105ku)/sizeof(int),
   	MBFL_WCSPLANE_JIS0212 + (85 - 1)*94,
   	MBFL_WCSPLANE_JIS0212 + (85 - 1)*94 + sizeof(table_cp932_ucs_105ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_cp932_ucs_115ku = {
  +static mbfl_convert_table lookup_cp932_ucs_115ku = {		/* vender ext3 */
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_cp932_ucs_115ku",
   	table_cp932_ucs_115ku,
   	sizeof(table_cp932_ucs_115ku)/sizeof(int),
  -	MBFL_WCSPLANE_JIS0208 + (115 - 1)*94,
  -	MBFL_WCSPLANE_JIS0208 + (115 - 1)*94 + sizeof(table_cp932_ucs_115ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
  +	MBFL_WCSPLANE_WINCP932 + (115 - 1)*94,
  +	MBFL_WCSPLANE_WINCP932 + (115 - 1)*94 + sizeof(table_cp932_ucs_115ku)/sizeof(int),
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_jisx0212_ucs_1ku = {
  +static mbfl_convert_table lookup_cp932_ucs_115ku_euc = {		/* vender ext3 */
  +	MBFL_TABLE_TYPE_LOOKUP,
  +	"ja_cp932_ucs_115ku_euc",
  +	table_cp932_ucs_115ku_euc,
  +	sizeof(table_cp932_ucs_115ku_euc)/sizeof(int),
  +	MBFL_WCSPLANE_JIS0212 + (83 - 1)*94,
  +	MBFL_WCSPLANE_JIS0212 + (83 - 1)*94 + sizeof(table_cp932_ucs_115ku_euc)/sizeof(int),
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_table lookup_jisx0212_ucs_1ku = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_jisx0212_ucs_1ku",
   	table_jisx0212_ucs_1ku,
   	sizeof(table_jisx0212_ucs_1ku)/sizeof(int),
   	MBFL_WCSPLANE_JIS0212,
   	MBFL_WCSPLANE_JIS0212+ sizeof(table_jisx0212_ucs_1ku)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_ucs_jis_a1 = {
  +static mbfl_convert_table lookup_ucs_jis_a1 = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_ucs_jis_a1",
   	table_ucs_jis_a1,
   	sizeof(table_ucs_jis_a1)/sizeof(int),
   	0,
   	sizeof(table_ucs_jis_a1)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_ucs_jis_a2 = {
  +static mbfl_convert_table lookup_ucs_jis_a2 = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_ucs_jis_a2",
   	table_ucs_jis_a2,
   	sizeof(table_ucs_jis_a2)/sizeof(int),
   	0x2000,
   	0x2000 + sizeof(table_ucs_jis_a2)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_ucs_jis_a3 = {
  +static mbfl_convert_table lookup_ucs_jis_a3 = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_ucs_jis_a3",
   	table_ucs_jis_a3,
   	sizeof(table_ucs_jis_a3)/sizeof(int),
   	0x3000,
   	0x3000 + sizeof(table_ucs_jis_a3)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_ucs_jis_i = {
  +static mbfl_convert_table lookup_ucs_jis_i = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_ucs_jis_i",
   	table_ucs_jis_i,
   	sizeof(table_ucs_jis_i)/sizeof(int),
   	0x4e00,
   	0x4e00 + sizeof(table_ucs_jis_i)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_ucs_jis_r1 = {
  +static mbfl_convert_table lookup_ucs_jis_r = {
  +	MBFL_TABLE_TYPE_LOOKUP,
   	"ja_ucs_jis_r1",
   	table_ucs_jis_r1,
   	sizeof(table_ucs_jis_r1)/sizeof(int),
  -	0xf900,
  -	0xf900 + sizeof(table_ucs_jis_r1)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
  +	0xff00,
  +	0xff00 + sizeof(table_ucs_jis_r1)/sizeof(int),
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_lookup_table lookup_ucs_jis_r2 = {
  -	"ja_ucs_jis_r2",
  -	table_ucs_jis_r2,
  -	sizeof(table_ucs_jis_r2)/sizeof(int),
  -	0xff00,
  -	0xff00 + sizeof(table_ucs_jis_r2)/sizeof(int),
  -	MBFL_MEMORY_TYPE_CONST,
  +static mbfl_convert_table lookup_ucs_cp932_user_euc = {
  +	MBFL_TABLE_TYPE_LOOKUP,
  +	"ja_ucs_cp932_user_euc",
  +	table_ucs_cp932_user_euc,
  +	sizeof(table_ucs_cp932_user_euc)/sizeof(int),
  +	0xe000,
  +	0xe000 + sizeof(table_ucs_cp932_user_euc)/sizeof(int),
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_table lookup_ucs_cp932_user_sjis = {
  +	MBFL_TABLE_TYPE_LOOKUP,
  +	"ja_ucs_cp932_user_sjis",
  +	table_ucs_cp932_user_sjis,
  +	sizeof(table_ucs_cp932_user_sjis)/sizeof(int),
  +	0xe000,
  +	0xe000 + sizeof(table_ucs_cp932_user_sjis)/sizeof(int),
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_table index_ucs_cp932_ext_euc = {
  +	MBFL_TABLE_TYPE_SORT,
  +	"ja_ucs_cp932_ext_euc",
  +	table_ucs_cp932_ext_euc,
  +	sizeof(table_ucs_cp932_ext_euc)/sizeof(int),
  +	0,
  +	0,
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_table index_ucs_cp932_ext_sjis = {
  +	MBFL_TABLE_TYPE_SORT,
  +	"ja_ucs_cp932_ext_sjis",
  +	table_ucs_cp932_ext_sjis,
  +	sizeof(table_ucs_cp932_ext_sjis)/sizeof(int),
  +	0,
  +	0,
   	MBFL_MEMORY_TYPE_CONST
   };
   
   
  -static const mbfl_lookup_table *lookup_list_eucjp_wc[] = {
  +
  +static mbfl_convert_table *table_list_eucjp_wc[] = {
   	&lookup_ascii_ucs,
   	&lookup_jisx0208_ucs_1ku,
   	&lookup_jisx0208_ucs_16ku,
  @@ -7483,7 +8707,7 @@
   	NULL
   };
   
  -static const mbfl_lookup_table *lookup_list_sjis_wc[] = {
  +static mbfl_convert_table *table_list_sjis_wc[] = {
   	&lookup_ascii_ucs,
   	&lookup_jisx0208_ucs_1ku,
   	&lookup_jisx0208_ucs_16ku,
  @@ -7491,7 +8715,7 @@
   	NULL
   };
   
  -static const mbfl_lookup_table *lookup_list_jis_wc[] = {
  +static mbfl_convert_table *table_list_jis_wc[] = {
   	&lookup_ascii_ucs,
   	&lookup_jisx0208_ucs_1ku,
   	&lookup_jisx0208_ucs_16ku,
  @@ -7501,23 +8725,24 @@
   	NULL
   };
   
  -static const mbfl_lookup_table *lookup_list_eucjpwin_wc[] = {
  +static mbfl_convert_table *table_list_eucjpwin_wc[] = {
   	&lookup_ascii_ucs,
   	&lookup_cp932_ucs_1ku,
  +	&lookup_cp932_ucs_16ku,
   	&lookup_jisx0201_ucs_gr,
  -	&lookup_jisx0208_ucs_16ku,
   	&lookup_cp932_ucs_13ku,
   	&lookup_cp932_ucs_95ku_euc,
   	&lookup_cp932_ucs_105ku_euc,
  +	&lookup_cp932_ucs_115ku_euc,
   	&lookup_jisx0212_ucs_1ku,
   	NULL
   };
   
  -static const mbfl_lookup_table *lookup_list_sjiswin_wc[] = {
  +static mbfl_convert_table *table_list_sjiswin_wc[] = {
   	&lookup_ascii_ucs,
   	&lookup_cp932_ucs_1ku,
  +	&lookup_cp932_ucs_16ku,
   	&lookup_jisx0201_ucs_gr,
  -	&lookup_jisx0208_ucs_16ku,
   	&lookup_cp932_ucs_13ku,
   	&lookup_cp932_ucs_95ku,
   	&lookup_cp932_ucs_105ku,
  @@ -7526,23 +8751,45 @@
   	NULL
   };
   
  -static const mbfl_lookup_table *lookup_list_wc_jis[] = {
  +static mbfl_convert_table *table_list_wc_jis[] = {
  +	&lookup_ucs_jis_a1,
  +	&lookup_ucs_jis_a2,
  +	&lookup_ucs_jis_a3,
  +	&lookup_ucs_jis_i,
  +	&lookup_ucs_jis_r,
  +	NULL
  +};
  +
  +static mbfl_convert_table *table_list_wc_eucjpwin[] = {
   	&lookup_ucs_jis_a1,
  +	&index_ucs_cp932_ext_euc,
   	&lookup_ucs_jis_a2,
   	&lookup_ucs_jis_a3,
   	&lookup_ucs_jis_i,
  -	&lookup_ucs_jis_r1,
  -	&lookup_ucs_jis_r2,
  +	&lookup_ucs_jis_r,
  +	&lookup_ucs_cp932_user_euc,
   	NULL
   };
   
  +static mbfl_convert_table *table_list_wc_sjiswin[] = {
  +	&lookup_ucs_jis_a1,
  +	&index_ucs_cp932_ext_sjis,
  +	&lookup_ucs_jis_a2,
  +	&lookup_ucs_jis_a3,
  +	&lookup_ucs_jis_i,
  +	&lookup_ucs_jis_r,
  +	&lookup_ucs_cp932_user_sjis,
  +	NULL
  +};
   
  -const mbfl_lookup_table * mbfl_lookup_table_list_ja[] = {
  +
  +mbfl_convert_table * mbfl_convert_table_list_ja[] = {
   	&lookup_ascii_ucs,
   	&lookup_jisx0208_ucs_1ku,
   	&lookup_jisx0208_ucs_16ku,
   	&lookup_jisx0201_ucs_gl,
   	&lookup_jisx0201_ucs_gr,
  +	&lookup_jisx0201_ucs_ascii,
   	&lookup_jisx0212_ucs_1ku,
   	&lookup_cp932_ucs_1ku,
   	&lookup_cp932_ucs_13ku,
  @@ -7552,35 +8799,43 @@
   	&lookup_cp932_ucs_115ku,
   	&lookup_cp932_ucs_95ku_euc,
   	&lookup_cp932_ucs_105ku_euc,
  +	&lookup_cp932_ucs_115ku_euc,
   	&lookup_ucs_jis_a1,
   	&lookup_ucs_jis_a2,
   	&lookup_ucs_jis_a3,
   	&lookup_ucs_jis_i,
  -	&lookup_ucs_jis_r1,
  -	&lookup_ucs_jis_r2,
  +	&lookup_ucs_jis_r,
  +	&lookup_ucs_cp932_user_euc,
  +	&lookup_ucs_cp932_user_sjis,
  +	&index_ucs_cp932_ext_euc,
  +	&index_ucs_cp932_ext_sjis,
   	NULL
   };
   
   
  -#define LKUP_EUCJP_WC		lookup_list_eucjp_wc
  -#define LKUP_SJIS_WC		lookup_list_sjis_wc
  -#define LKUP_JIS_WC			lookup_list_jis_wc
  -#define LKUP_EUCJPWIN_WC	lookup_list_eucjpwin_wc
  -#define LKUP_SJISWIN_WC		lookup_list_sjiswin_wc
  -#define LKUP_WC_JIS			lookup_list_wc_jis
  +#define TABLE_EUCJP_WCHAR			table_list_eucjp_wc
  +#define TABLE_SJIS_WCHAR			table_list_sjis_wc
  +#define TABLE_JIS_WCHAR				table_list_jis_wc
  +#define TABLE_EUCJPWIN_WCHAR		table_list_eucjpwin_wc
  +#define TABLE_SJISWIN_WCHAR			table_list_sjiswin_wc
  +#define TABLE_WCHAR_JIS				table_list_wc_jis
  +#define TABLE_WCHAR_EUCJPWIN		table_list_wc_eucjpwin
  +#define TABLE_WCHAR_SJISWIN			table_list_wc_sjiswin
   
   #else	/* not HAVE_MBSTR_JA */
   
  -const mbfl_lookup_table * mbfl_lookup_table_list_ja[] = {
  +mbfl_convert_table * mbfl_convert_table_list_ja[] = {
   	NULL
   };
   
  -#define LKUP_EUCJP_WC		NULL
  -#define LKUP_SJIS_WC		NULL
  -#define LKUP_JIS_WC			NULL
  -#define LKUP_EUCJPWIN_WC	NULL
  -#define LKUP_SJISWIN_WC		NULL
  -#define LKUP_WC_JIS			NULL
  +#define TABLE_EUCJP_WCHAR			mbfl_convert_table_list_empty
  +#define TABLE_SJIS_WCHAR			mbfl_convert_table_list_empty
  +#define TABLE_JIS_WCHAR				mbfl_convert_table_list_empty
  +#define TABLE_EUCJPWIN_WCHAR		mbfl_convert_table_list_empty
  +#define TABLE_SJISWIN_WCHAR			mbfl_convert_table_list_empty
  +#define TABLE_WCHAR_JIS				mbfl_convert_table_list_empty
  +#define TABLE_WCHAR_EUCJPWIN		mbfl_convert_table_list_empty
  +#define TABLE_WCHAR_SJISWIN			mbfl_convert_table_list_empty
   
   #endif
   
  @@ -7588,7 +8843,7 @@
   /*
    * convert filter function
    */
  -static const mbfl_convert_function cvfn_eucjp_wchar = {
  +static mbfl_convert_function cvfn_eucjp_wchar = {
   	"eucjp_wchar",
   	mbfl_filt_conv_common_ctor,
   	mbfl_filt_conv_common_dtor,
  @@ -7597,7 +8852,7 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_function cvfn_wchar_eucjp = {
  +static mbfl_convert_function cvfn_wchar_eucjp = {
   	"wchar_eucjp",
   	mbfl_filt_conv_common_ctor,
   	mbfl_filt_conv_common_dtor,
  @@ -7606,7 +8861,7 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_function cvfn_sjis_wchar = {
  +static mbfl_convert_function cvfn_sjis_wchar = {
   	"sjis_wchar",
   	mbfl_filt_conv_common_ctor,
   	mbfl_filt_conv_common_dtor,
  @@ -7615,7 +8870,7 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_function cvfn_wchar_sjis = {
  +static mbfl_convert_function cvfn_wchar_sjis = {
   	"wchar_sjis",
   	mbfl_filt_conv_common_ctor,
   	mbfl_filt_conv_common_dtor,
  @@ -7624,7 +8879,43 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_function cvfn_jis_wchar = {
  +static mbfl_convert_function cvfn_eucjpwin_wchar = {
  +	"eucjpwin_wchar",
  +	mbfl_filt_conv_common_ctor,
  +	mbfl_filt_conv_common_dtor,
  +	filt_conv_eucjpwin_wchar,
  +	mbfl_filt_conv_common_flush,
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_function cvfn_wchar_eucjpwin = {
  +	"wchar_eucjpwin",
  +	mbfl_filt_conv_common_ctor,
  +	mbfl_filt_conv_common_dtor,
  +	filt_conv_wchar_eucjpwin,
  +	mbfl_filt_conv_common_flush,
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_function cvfn_sjiswin_wchar = {
  +	"sjiswin_wchar",
  +	mbfl_filt_conv_common_ctor,
  +	mbfl_filt_conv_common_dtor,
  +	filt_conv_sjiswin_wchar,
  +	mbfl_filt_conv_common_flush,
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_function cvfn_wchar_sjiswin = {
  +	"wchar_sjiswin",
  +	mbfl_filt_conv_common_ctor,
  +	mbfl_filt_conv_common_dtor,
  +	filt_conv_wchar_sjiswin,
  +	mbfl_filt_conv_common_flush,
  +	MBFL_MEMORY_TYPE_CONST
  +};
  +
  +static mbfl_convert_function cvfn_jis_wchar = {
   	"jis_wchar",
   	mbfl_filt_conv_common_ctor,
   	mbfl_filt_conv_common_dtor,
  @@ -7633,7 +8924,7 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_function cvfn_wchar_jis = {
  +static mbfl_convert_function cvfn_wchar_jis = {
   	"wchar_jis",
   	mbfl_filt_conv_common_ctor,
   	mbfl_filt_conv_common_dtor,
  @@ -7642,11 +8933,11 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_function cvfn_wchar_2022jp = {
  +static mbfl_convert_function cvfn_wchar_2022jp = {
   	"wchar_2022jp",
   	mbfl_filt_conv_common_ctor,
   	mbfl_filt_conv_common_dtor,
  -	mbfl_filt_conv_wchar_2022jp,
  +	filt_conv_wchar_2022jp,
   	filt_conv_any_jis_flush,
   	MBFL_MEMORY_TYPE_CONST
   };
  @@ -7655,123 +8946,111 @@
   /*
    * convert filter collection
    */
  -static const mbfl_convert_collection conv_eucjp_wchar = {
  +static mbfl_convert_collection conv_eucjp_wchar = {
   	"eucjp_wchar",
   	php_mb_encid_euc_jp,
   	php_mb_encid_wchar,
   	&cvfn_eucjp_wchar,
  -	NULL,
  -	LKUP_EUCJP_WC,
  +	TABLE_EUCJP_WCHAR,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_wchar_eucjp = {
  +static mbfl_convert_collection conv_wchar_eucjp = {
   	"wchar_eucjp",
   	php_mb_encid_wchar,
   	php_mb_encid_euc_jp,
   	&cvfn_wchar_eucjp,
  -	NULL,
  -	LKUP_WC_JIS,
  +	TABLE_WCHAR_JIS,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_sjis_wchar = {
  +static mbfl_convert_collection conv_sjis_wchar = {
   	"sjis_wchar",
   	php_mb_encid_sjis,
   	php_mb_encid_wchar,
   	&cvfn_sjis_wchar,
  -	NULL,
  -	LKUP_SJIS_WC,
  +	TABLE_SJIS_WCHAR,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_wchar_sjis = {
  +static mbfl_convert_collection conv_wchar_sjis = {
   	"wchar_sjis",
   	php_mb_encid_wchar,
   	php_mb_encid_sjis,
   	&cvfn_wchar_sjis,
  -	NULL,
  -	LKUP_WC_JIS,
  +	TABLE_WCHAR_JIS,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_jis_wchar = {
  +static mbfl_convert_collection conv_jis_wchar = {
   	"jis_wchar",
   	php_mb_encid_jis,
   	php_mb_encid_wchar,
   	&cvfn_jis_wchar,
  -	NULL,
  -	LKUP_JIS_WC,
  +	TABLE_JIS_WCHAR,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_wchar_jis = {
  +static mbfl_convert_collection conv_wchar_jis = {
   	"wchar_jis",
   	php_mb_encid_wchar,
   	php_mb_encid_jis,
   	&cvfn_wchar_jis,
  -	NULL,
  -	LKUP_WC_JIS,
  +	TABLE_WCHAR_JIS,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_2022jp_wchar = {
  +static mbfl_convert_collection conv_2022jp_wchar = {
   	"2022jp_wchar",
   	php_mb_encid_2022jp,
   	php_mb_encid_wchar,
   	&cvfn_jis_wchar,
  -	NULL,
  -	LKUP_JIS_WC,
  +	TABLE_JIS_WCHAR,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_wchar_2022jp = {
  +static mbfl_convert_collection conv_wchar_2022jp = {
   	"wchar_2022jp",
   	php_mb_encid_wchar,
   	php_mb_encid_2022jp,
   	&cvfn_wchar_2022jp,
  -	NULL,
  -	LKUP_WC_JIS,
  +	TABLE_WCHAR_JIS,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_eucjpwin_wchar = {
  +static mbfl_convert_collection conv_eucjpwin_wchar = {
   	"eucjpwin_wchar",
   	php_mb_encid_eucjp_win,
   	php_mb_encid_wchar,
  -	&cvfn_eucjp_wchar,
  -	NULL,
  -	LKUP_EUCJPWIN_WC,
  +	&cvfn_eucjpwin_wchar,
  +	TABLE_EUCJPWIN_WCHAR,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_wchar_eucjpwin = {
  +static mbfl_convert_collection conv_wchar_eucjpwin = {
   	"wchar_eucjpwin",
   	php_mb_encid_wchar,
   	php_mb_encid_eucjp_win,
  -	&cvfn_wchar_eucjp,
  -	NULL,
  -	LKUP_WC_JIS,
  +	&cvfn_wchar_eucjpwin,
  +	TABLE_WCHAR_EUCJPWIN,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_sjiswin_wchar = {
  +static mbfl_convert_collection conv_sjiswin_wchar = {
   	"sjiswin_wchar",
   	php_mb_encid_sjis_win,
   	php_mb_encid_wchar,
  -	&cvfn_sjis_wchar,
  -	NULL,
  -	LKUP_SJISWIN_WC,
  +	&cvfn_sjiswin_wchar,
  +	TABLE_SJISWIN_WCHAR,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_convert_collection conv_wchar_sjiswin = {
  +static mbfl_convert_collection conv_wchar_sjiswin = {
   	"wchar_sjiswin",
   	php_mb_encid_wchar,
   	php_mb_encid_sjis_win,
  -	&cvfn_wchar_sjis,
  -	NULL,
  -	LKUP_WC_JIS,
  +	&cvfn_wchar_sjiswin,
  +	TABLE_WCHAR_SJISWIN,
   	MBFL_MEMORY_TYPE_CONST
   };
   
  @@ -7780,7 +9059,8 @@
   /*
    * identify filter function table
    */
  -static const mbfl_identify_function ident_func_eucjp = {
  +static mbfl_identify_function ident_func_eucjp = {
  +	"eucjp",
   	php_mb_encid_euc_jp,
   	mbfl_filt_ident_common_ctor,
   	mbfl_filt_ident_common_dtor,
  @@ -7788,7 +9068,8 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_identify_function ident_func_eucjpwin = {
  +static mbfl_identify_function ident_func_eucjpwin = {
  +	"eucjpwin",
   	php_mb_encid_eucjp_win,
   	mbfl_filt_ident_common_ctor,
   	mbfl_filt_ident_common_dtor,
  @@ -7796,7 +9077,8 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_identify_function ident_func_sjis = {
  +static mbfl_identify_function ident_func_sjis = {
  +	"sjis",
   	php_mb_encid_sjis,
   	mbfl_filt_ident_common_ctor,
   	mbfl_filt_ident_common_dtor,
  @@ -7804,7 +9086,8 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_identify_function ident_func_sjiswin = {
  +static mbfl_identify_function ident_func_sjiswin = {
  +	"sjiswin",
   	php_mb_encid_sjis_win,
   	mbfl_filt_ident_common_ctor,
   	mbfl_filt_ident_common_dtor,
  @@ -7812,7 +9095,8 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_identify_function ident_func_jis = {
  +static mbfl_identify_function ident_func_jis = {
  +	"jis",
   	php_mb_encid_jis,
   	mbfl_filt_ident_common_ctor,
   	mbfl_filt_ident_common_dtor,
  @@ -7820,7 +9104,8 @@
   	MBFL_MEMORY_TYPE_CONST
   };
   
  -static const mbfl_identify_function ident_func_2022jp = {
  +static mbfl_identify_function ident_func_2022jp = {
  +	"iso2022jp",
   	php_mb_encid_2022jp,
   	mbfl_filt_ident_common_ctor,
   	mbfl_filt_ident_common_dtor,
  @@ -7833,20 +9118,22 @@
   /*
    * filter list
    */
  -#if 0
  -const mbfl_convert_function * mbfl_convert_function_list_ja[] = {
  +mbfl_convert_function * mbfl_convert_function_list_ja[] = {
   	&cvfn_eucjp_wchar,
   	&cvfn_wchar_eucjp,
   	&cvfn_sjis_wchar,
   	&cvfn_wchar_sjis,
  +	&cvfn_eucjpwin_wchar,
  +	&cvfn_wchar_eucjpwin,
  +	&cvfn_sjiswin_wchar,
  +	&cvfn_wchar_sjiswin,
   	&cvfn_jis_wchar,
   	&cvfn_wchar_jis,
   	&cvfn_wchar_2022jp,
   	NULL
   };
  -#endif
   
  -const mbfl_convert_collection * mbfl_convert_collection_list_ja[] = {
  +mbfl_convert_collection * mbfl_convert_collection_list_ja[] = {
   	&conv_eucjp_wchar,
   	&conv_wchar_eucjp,
   	&conv_sjis_wchar,
  @@ -7863,7 +9150,7 @@
   };
   
   
  -const mbfl_identify_function * mbfl_identify_function_list_ja[] = {
  +mbfl_identify_function * mbfl_identify_function_list_ja[] = {
   	&ident_func_eucjp,
   	&ident_func_sjis,
   	&ident_func_eucjpwin,
  
  
  



php-i18n-commits メーリングリストの案内
Back to archive index