File Coverage

lib/Jacode4e/RoundTrip.pm
Criterion Covered Total %
statement 74 135 54.8
branch 27 48 56.2
condition 12 20 60.0
subroutine 8 9 88.8
pod 0 4 0.0
total 121 216 56.0


line stmt bran cond sub pod time code
1             package Jacode4e::RoundTrip;
2             $VERSION = '2.13.81.12';
3             '有朋自遠方来不亦楽乎'=~/^\xE6\x9C\x89/ or die "Perl script '@{[__FILE__]}' must be UTF-8 encoding.\n";
4             # 如果您可以阅读此字符,则可以通过选择所有内容并将其保存为文件名“Jacode4e/RoundTrip.pm”来将其用作模块。
5             # 如果您可以閱讀此字符,則可以通過選擇所有內容並將其保存為文件名“Jacode4e/RoundTrip.pm”來將其用作模塊。
6             # この文字が読める場合は、内容を全て選択してファイル名を "Jacode4e/RoundTrip.pm" にして保存すればそのままモジュールとして利用することができます。
7             # 이 문자를 읽을 수 있는 경우는, 내용을 모두 선택해 파일명을 "Jacode4e/RoundTrip.pm" 로 해 보존하면 그대로 모듈로서 이용할 수가 있습니다.
8             # But that is very far into the future isn't it?
9             ######################################################################
10             #
11             # Jacode4e::RoundTrip - Jacode4e for round-trip conversion in JIS X 0213
12             #
13             # Copyright (c) 2018, 2019, 2021, 2022 INABA Hitoshi in a CPAN
14             ######################################################################
15             #
16             # CAUTION
17             # -------
18             # MUST USE SAME VERSION OF THIS SOFTWARE BOTH CONVERTING "A to B" AND "B to A"
19             # TO HAVE ROUND-TRIP CONVERSION.
20             #
21             # SYNOPSIS
22             # --------
23             #
24             # use FindBin;
25             # use lib "$FindBin::Bin/lib";
26             # use Jacode4e::RoundTrip;
27             #
28             # $return =
29             # Jacode4e::RoundTrip::convert(\$line, $OUTPUT_encoding, $INPUT_encoding [, { %option }]);
30             #
31             # $return
32             # Number of characters in $line
33             #
34             # $line
35             # String variable to convert
36             # After conversion, this variable is overwritten
37             #
38             # $OUTPUT_encoding, and $INPUT_encoding
39             # To convert, you must specify both $OUTPUT_encoding and $INPUT_encoding.
40             # The encodings you can specify are as follows:
41             #
42             # mnemonic means
43             # -----------------------------------------------------------------------
44             # cp932x CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
45             # cp00930 IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
46             # keis78 HITACHI KEIS78
47             # keis83 HITACHI KEIS83
48             # keis90 HITACHI KEIS90
49             # jef FUJITSU JEF (12 point size for printing with option OUTPUT_SHIFTING)
50             # jef9p FUJITSU JEF ( 9 point size for printing with option OUTPUT_SHIFTING)
51             # jipsj NEC JIPS(J)
52             # jipse NEC JIPS(E)
53             # letsj UNISYS LetsJ
54             # utf8 UTF-8.0 (aka UTF-8)
55             # utf8.1 UTF-8.1
56             # utf8jp UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
57             # -----------------------------------------------------------------------
58             #
59             # Round-trip conversion impossible, only for reference
60             #
61             # mnemonic means
62             # -----------------------------------------------------------------------
63             # cp932 Microsoft CP932, IANA Windows-31J
64             # cp932ibm IBM CP932
65             # cp932nec NEC CP932
66             # sjis2004 JISC Shift_JIS-2004
67             # -----------------------------------------------------------------------
68             #
69             # %option
70             # The options you can specify are as follows:
71             #
72             # key mnemonic value means
73             # -----------------------------------------------------------------------
74             # INPUT_LAYOUT input record layout by 'S' and 'D' sequence
75             # 'S' means one char as SBCS, 'D' means one char as DBCS
76             # default is 'S'
77             # each letter may optionally be followed by a number
78             # indicating the repeat count, see samples
79             # OUTPUT_SHIFTING true means use output shift code, false means not use
80             # default is false
81             # SPACE output space code in DBCS/MBCS
82             # default is U+3000 in Unicode
83             # GETA output geta code in DBCS/MBCS
84             # default is U+3013 in Unicode
85             # OVERRIDE_MAPPING hash reference of FROM => TO override mapping
86             # { "\x12\x34"=>"\x56\x78", "\x9A\xBC"=>"\xDE\xFE", }
87             # (CAUTION! override also SPACE option)
88             # -----------------------------------------------------------------------
89             #
90             # SAMPLES
91             # -------
92             #
93             # use FindBin;
94             # use lib "$FindBin::Bin/lib";
95             # use Jacode4e::RoundTrip;
96             # Jacode4e::RoundTrip::VERSION('2.13.81.12');
97             #
98             # while (<>) {
99             # $return =
100             # Jacode4e::RoundTrip::convert(\$_, 'cp932x', 'cp00930', {
101             # 'INPUT_LAYOUT' => 'SSSDDDSSDDSDSD',
102             # 'OUTPUT_SHIFTING' => 0,
103             # 'SPACE' => "\x81\xA2",
104             # 'GETA' => "\x81\xA1",
105             # 'OVERRIDE_MAPPING' => { "\x44\x5A" => "\x81\x7C", },
106             # });
107             # print $_;
108             # }
109             #
110             # while (<>) {
111             # $return =
112             # Jacode4e::RoundTrip::convert(\$_, 'cp932x', 'cp00930', {
113             # 'INPUT_LAYOUT' => 'S3D3S2D2SDSD',
114             # 'OUTPUT_SHIFTING' => 0,
115             # 'SPACE' => "\x81\xA2",
116             # 'GETA' => "\x81\xA1",
117             # 'OVERRIDE_MAPPING' => { "\x44\x5A" => "\x81\x7C", },
118             # });
119             # print $_;
120             # }
121             #
122             # while (<>) {
123             # Jacode4e::RoundTrip::convert(\$_, 'cp932ibm', 'utf8.1', {});
124             # print $_;
125             # }
126             #
127             # while (<>) {
128             # $return =
129             # Jacode4e::RoundTrip::convert(\$_, 'utf8.1', 'utf8', {
130             # # FULLWIDTH TILDE => WAVE DASH
131             # 'OVERRIDE_MAPPING' => { "\xEF\xBD\x9E" => "\xE3\x80\x9C", },
132             # });
133             # print $_;
134             # }
135             #
136             ######################################################################
137             $VERSION = $VERSION;
138              
139 28     28   304176 use 5.00503;
  28         340  
140 28     28   208 use strict;
  28         66  
  28         1511  
141 28 50   28   662 BEGIN { $INC{'warnings.pm'} = '' if $] < 5.006 }; use warnings; $^W=1;
  28     28   161  
  28         81  
  28         216943  
142              
143             my %tr = ();
144             my @encodings = qw(
145             cp932x
146             cp932
147             cp932ibm
148             cp932nec
149             sjis2004
150             cp00930
151             keis78
152             keis83
153             keis90
154             jef
155             jipsj
156             jipse
157             letsj
158             unicode
159             utf8
160             utf8.1
161             utf8jp
162             );
163             my @io_encodings = grep( ! /^(?:unicode)$/, @encodings);
164              
165             if ($0 eq __FILE__) {
166             if (not @ARGV) {
167             die <
168              
169             usage:
170             perl $0 --dumptable
171              
172             END
173             }
174             }
175              
176             #---------------------------------------------------------------------
177             # make DBCS codepoints
178             #---------------------------------------------------------------------
179             sub dbcs {
180 280     280 0 927 my @dbcs = ();
181 280         507 for my $octet1 (@{$_[0]}) {
  280         966  
182 12936         17379 for my $octet2 (@{$_[1]}) {
  12936         21996  
183 1199184         2182148 push @dbcs, pack('CC', $octet1, $octet2);
184             }
185             }
186 280         334717 return @dbcs;
187             }
188              
189             #---------------------------------------------------------------------
190             # make DBCS codepoints JIPS(E)
191             #---------------------------------------------------------------------
192             sub dbcs_jipse {
193 56     56 0 198 my @dbcs = ();
194              
195             # JIPS(J) --> JIPS(E) table
196             # http://ameblo.jp/geckoman/entry-11634710872.html
197 56         978 my @jtoe = (
198             0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x15,0x0B,0x0C,0x0D,0x0E,0x0F, # 0
199             0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F, # 1
200             0x40,0x4F,0x7F,0x7B,0xE0,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61, # 2
201             0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F, # 3
202             0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6, # 4
203             0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0x4A,0x5B,0x5A,0x5F,0x6D, # 5
204             0x79,0x57,0x59,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x70,0x71,0x72,0x73,0x74, # 6
205             0x75,0x76,0x77,0x78,0x80,0x8B,0x9B,0x9C,0xA0,0xAB,0xB0,0xC0,0x6A,0xD0,0xA1,0x00, # 7
206             0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, # 8
207             0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, # 9
208             0x00,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x51,0x52,0x53,0x54,0x55,0x56, # A
209             0x58,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8C,0x8D,0x8E,0x8F,0x90, # B
210             0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9D,0x9E,0x9F,0xA2,0xA3,0xA4, # C
211             0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAC,0xAD,0xAE,0xAF,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, # D
212             0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xDA,0xDB, # E
213             0xDC,0xDD,0xDE,0xDF,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xFA,0xFB,0xFC,0xFD,0xFE,0x00, # F
214             );
215              
216 56         117 for my $octet1 (@{$_[0]}) {
  56         184  
217 1176         1718 for my $octet2 (@{$_[1]}) {
  1176         1988  
218 110544         213045 push @dbcs, pack('CC', $jtoe[$octet1], $jtoe[$octet2]);
219             }
220             }
221 56         25927 return @dbcs;
222             }
223              
224             #------------------------------------------------------------------------------------------------------------------
225             # CP00930 User-defined Area: ([\x69-\x71][\x41-\xFE]|[\x72][\x41-\xEA])
226             #
227             # C-H 3-3220-024 IBM Corp. 2002, Table 2. Structure of Japanese DBCS-Host 6.2 Structure of Japanese DBCS-Host
228             # CJKV Information Processing by Ken Lunde 1999, Table D-20: IBM Japanese DBCS-Host Encoding Specifications
229             # The last user-defined character in this region is 0x72EA.
230             #
231             #------------------------------------------------------------------------------------------------------------------
232             # KEIS User-defined Area and Unused Area: ([\x81-\x9E\xA0][\xA1-\xFE]|[\x41-\x80][\xA1-\xFE]|[\x41-\xFE][\x41-\xA0])
233             #
234             # 8080-2-030 by 1980(SHOWA 54), Hitachi, Ltd., Chapter 4.6 Assignment of Extended Characters
235             # CJKV Information Processing by Ken Lunde 1999, Table D-23: KEIS Encoding Specifications
236             # Table D-23 said that user-defined area has (?:[\x81-\xA0][\xA1-\xFE]), but
237             # ([\x9F][\xA1-\xFE]) is already used by Japan Geographic Data Center.
238             #
239             #------------------------------------------------------------------------------------------------------------------
240             # JEF User-defined Area: ([\x80-\xA0][\xA1-\xFE])
241             #
242             # CJKV Information Processing by Ken Lunde 1999, Table D-14: JEF Encoding Specifications
243             #
244             #------------------------------------------------------------------------------------------------------------------
245             # JIPS User-defined Area: ([\x74-\x7E][\x21-\x7E]|[\xE0-\xFE][\xA1-\xFE])
246             #
247             # ZBB10-3, ZBB11-2 by NEC Corporation 1982, 1993, Figure-1 JIPS code plane
248             #
249             #------------------------------------------------------------------------------------------------------------------
250             # LetsJ User-defined Area: ([\x31-\x40\x6D-\x78][\xA1-\xFE])
251             #
252             # Heterogeneous database cooperation among heterogeneous OS environments
253             # http://www.unisys.co.jp/tec_info/tr56/5605.htm
254             #
255             #------------------------------------------------------------------------------------------------------------------
256             # UTF-8 User-defined Area: ([\xE0][\xA0-\xBF][\x80-\xBF]|[\xE1-\xEF][\x80-\xBF][\x80-\xBF])
257             #
258             # Private-Use Characters
259             # http://www.unicode.org/faq/private_use.html
260             #
261             #------------------------------------------------------------------------------------------------------------------
262              
263             my %userarea = ();
264             @{$userarea{'cp00930'}} = (dbcs([0x69..0x71],[0x41..0xFE]), dbcs([0x72],[0x41..0xEA]));
265             @{$userarea{'keis78'}} =
266             @{$userarea{'keis83'}} =
267             @{$userarea{'keis90'}} = (dbcs([0x81..0x9E,0xA0],[0xA1..0xFE]), dbcs([0x41..0x80],[0xA1..0xFE]), dbcs([0x41..0xFE],[0x41..0xA0]));
268             @{$userarea{'jef'}} = (dbcs([0x80..0xA0],[0xA1..0xFE]));
269             @{$userarea{'jipsj'}} = (dbcs ([0x74..0x7E],[0x21..0x7E]), dbcs ([0xE0..0xFE],[0xA1..0xFE]));
270             @{$userarea{'jipse'}} = (dbcs_jipse([0x74..0x7E],[0x21..0x7E]), dbcs_jipse([0xE0..0xFE],[0xA1..0xFE]));
271             @{$userarea{'letsj'}} = (dbcs([0x31..0x40,0x6D..0x78],[0xA1..0xFE]));
272             @{$userarea{'utf8'}} = (map { "\xEF" . $_ } dbcs([0x80..0xBF],[0x80..0xBF]));
273              
274             while () {
275             next if /^#/;
276             chomp;
277              
278             my %hex = ();
279             @hex{@encodings} = split(/ +/,$_);
280              
281             my %bin = ();
282             for my $encoding (@io_encodings) {
283             $bin{$encoding} = (($hex{$encoding} =~ /^[0123456789ABCDEF]+$/) ? pack('H*', $hex{$encoding}) : '');
284             }
285              
286             for my $encoding (@io_encodings) {
287             if ($bin{'utf8jp'} ne '') {
288             if ($bin{$encoding} ne '') {
289             if ($encoding eq 'utf8jp') {
290             }
291             elsif (defined($tr{'utf8jp'}{$encoding}{$bin{$encoding}}) and ($tr{'utf8jp'}{$encoding}{$bin{$encoding}} ne '')) {
292             die qq{@{[__FILE__]} duplicate definitions \$tr{'utf8jp'}{'$encoding'}{'$hex{$encoding}'} = "$hex{utf8}($bin{utf8})" and "} . uc unpack('H*',$tr{'utf8jp'}{$encoding}{$bin{$encoding}}) . qq{"($tr{'utf8jp'}{$encoding}{$bin{$encoding}})\n};
293             }
294             elsif (defined($tr{$encoding}{'utf8jp'}{$bin{'utf8jp' }}) and ($tr{$encoding}{'utf8jp'}{$bin{'utf8jp' }} ne '')) {
295             die qq{@{[__FILE__]} duplicate definitions \$tr{'$encoding'}{'utf8jp'}{'$hex{utf8}'} = "$hex{$encoding}" and "} . uc unpack('H*',$tr{$encoding}{'utf8jp'}{$bin{'utf8jp'}}) . qq{"\n};
296             }
297              
298             $tr{'utf8jp'}{$encoding}{$bin{$encoding}} = $bin{'utf8jp'};
299             $tr{$encoding}{'utf8jp'}{$bin{'utf8jp'} } = $bin{$encoding};
300             }
301             elsif (exists $userarea{$encoding}) {
302             if (my $bin_encoding = shift(@{$userarea{$encoding}})) {
303             $tr{'utf8jp'}{$encoding}{$bin_encoding} = $bin{'utf8jp'};
304             $tr{$encoding}{'utf8jp'}{$bin{'utf8jp'}} = $bin_encoding;
305             }
306             else {
307             die qq{@{[__FILE__]} User area of '$encoding' is not enough\n};
308             }
309             }
310             }
311             }
312             }
313              
314             my $data_count = scalar(keys %{$tr{'utf8jp'}{'utf8jp'}});
315             if ($data_count != 11578) {
316             die qq{@{[__FILE__]} is probably broken(data_count=$data_count).\n};
317             }
318              
319             my %Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode = ();
320             for (split /\n/, <<'END') {
321             # https://support.microsoft.com/ja-jp/help/170559/prb-conversion-problem-between-shift-jis-and-unicode
322             # CodePage 932 : 398 non-round-trip mappings
323             0x8790 -> U+2252 -> 0x81e0 Approximately Equal To Or The Image Of
324             0x8791 -> U+2261 -> 0x81df Identical To
325             0x8792 -> U+222b -> 0x81e7 Integral
326             0x8795 -> U+221a -> 0x81e3 Square Root
327             0x8796 -> U+22a5 -> 0x81db Up Tack
328             0x8797 -> U+2220 -> 0x81da Angle
329             0x879a -> U+2235 -> 0x81e6 Because
330             0x879b -> U+2229 -> 0x81bf Intersection
331             0x879c -> U+222a -> 0x81be Union
332             0xed40 -> U+7e8a -> 0xfa5c CJK Unified Ideograph
333             0xed41 -> U+891c -> 0xfa5d CJK Unified Ideograph
334             0xed42 -> U+9348 -> 0xfa5e CJK Unified Ideograph
335             0xed43 -> U+9288 -> 0xfa5f CJK Unified Ideograph
336             0xed44 -> U+84dc -> 0xfa60 CJK Unified Ideograph
337             0xed45 -> U+4fc9 -> 0xfa61 CJK Unified Ideograph
338             0xed46 -> U+70bb -> 0xfa62 CJK Unified Ideograph
339             0xed47 -> U+6631 -> 0xfa63 CJK Unified Ideograph
340             0xed48 -> U+68c8 -> 0xfa64 CJK Unified Ideograph
341             0xed49 -> U+92f9 -> 0xfa65 CJK Unified Ideograph
342             0xed4a -> U+66fb -> 0xfa66 CJK Unified Ideograph
343             0xed4b -> U+5f45 -> 0xfa67 CJK Unified Ideograph
344             0xed4c -> U+4e28 -> 0xfa68 CJK Unified Ideograph
345             0xed4d -> U+4ee1 -> 0xfa69 CJK Unified Ideograph
346             0xed4e -> U+4efc -> 0xfa6a CJK Unified Ideograph
347             0xed4f -> U+4f00 -> 0xfa6b CJK Unified Ideograph
348             0xed50 -> U+4f03 -> 0xfa6c CJK Unified Ideograph
349             0xed51 -> U+4f39 -> 0xfa6d CJK Unified Ideograph
350             0xed52 -> U+4f56 -> 0xfa6e CJK Unified Ideograph
351             0xed53 -> U+4f92 -> 0xfa6f CJK Unified Ideograph
352             0xed54 -> U+4f8a -> 0xfa70 CJK Unified Ideograph
353             0xed55 -> U+4f9a -> 0xfa71 CJK Unified Ideograph
354             0xed56 -> U+4f94 -> 0xfa72 CJK Unified Ideograph
355             0xed57 -> U+4fcd -> 0xfa73 CJK Unified Ideograph
356             0xed58 -> U+5040 -> 0xfa74 CJK Unified Ideograph
357             0xed59 -> U+5022 -> 0xfa75 CJK Unified Ideograph
358             0xed5a -> U+4fff -> 0xfa76 CJK Unified Ideograph
359             0xed5b -> U+501e -> 0xfa77 CJK Unified Ideograph
360             0xed5c -> U+5046 -> 0xfa78 CJK Unified Ideograph
361             0xed5d -> U+5070 -> 0xfa79 CJK Unified Ideograph
362             0xed5e -> U+5042 -> 0xfa7a CJK Unified Ideograph
363             0xed5f -> U+5094 -> 0xfa7b CJK Unified Ideograph
364             0xed60 -> U+50f4 -> 0xfa7c CJK Unified Ideograph
365             0xed61 -> U+50d8 -> 0xfa7d CJK Unified Ideograph
366             0xed62 -> U+514a -> 0xfa7e CJK Unified Ideograph
367             0xed63 -> U+5164 -> 0xfa80 CJK Unified Ideograph
368             0xed64 -> U+519d -> 0xfa81 CJK Unified Ideograph
369             0xed65 -> U+51be -> 0xfa82 CJK Unified Ideograph
370             0xed66 -> U+51ec -> 0xfa83 CJK Unified Ideograph
371             0xed67 -> U+5215 -> 0xfa84 CJK Unified Ideograph
372             0xed68 -> U+529c -> 0xfa85 CJK Unified Ideograph
373             0xed69 -> U+52a6 -> 0xfa86 CJK Unified Ideograph
374             0xed6a -> U+52c0 -> 0xfa87 CJK Unified Ideograph
375             0xed6b -> U+52db -> 0xfa88 CJK Unified Ideograph
376             0xed6c -> U+5300 -> 0xfa89 CJK Unified Ideograph
377             0xed6d -> U+5307 -> 0xfa8a CJK Unified Ideograph
378             0xed6e -> U+5324 -> 0xfa8b CJK Unified Ideograph
379             0xed6f -> U+5372 -> 0xfa8c CJK Unified Ideograph
380             0xed70 -> U+5393 -> 0xfa8d CJK Unified Ideograph
381             0xed71 -> U+53b2 -> 0xfa8e CJK Unified Ideograph
382             0xed72 -> U+53dd -> 0xfa8f CJK Unified Ideograph
383             0xed73 -> U+fa0e -> 0xfa90 CJK compatibility Ideograph
384             0xed74 -> U+549c -> 0xfa91 CJK Unified Ideograph
385             0xed75 -> U+548a -> 0xfa92 CJK Unified Ideograph
386             0xed76 -> U+54a9 -> 0xfa93 CJK Unified Ideograph
387             0xed77 -> U+54ff -> 0xfa94 CJK Unified Ideograph
388             0xed78 -> U+5586 -> 0xfa95 CJK Unified Ideograph
389             0xed79 -> U+5759 -> 0xfa96 CJK Unified Ideograph
390             0xed7a -> U+5765 -> 0xfa97 CJK Unified Ideograph
391             0xed7b -> U+57ac -> 0xfa98 CJK Unified Ideograph
392             0xed7c -> U+57c8 -> 0xfa99 CJK Unified Ideograph
393             0xed7d -> U+57c7 -> 0xfa9a CJK Unified Ideograph
394             0xed7e -> U+fa0f -> 0xfa9b CJK compatibility Ideograph
395             0xed80 -> U+fa10 -> 0xfa9c CJK compatibility Ideograph
396             0xed81 -> U+589e -> 0xfa9d CJK Unified Ideograph
397             0xed82 -> U+58b2 -> 0xfa9e CJK Unified Ideograph
398             0xed83 -> U+590b -> 0xfa9f CJK Unified Ideograph
399             0xed84 -> U+5953 -> 0xfaa0 CJK Unified Ideograph
400             0xed85 -> U+595b -> 0xfaa1 CJK Unified Ideograph
401             0xed86 -> U+595d -> 0xfaa2 CJK Unified Ideograph
402             0xed87 -> U+5963 -> 0xfaa3 CJK Unified Ideograph
403             0xed88 -> U+59a4 -> 0xfaa4 CJK Unified Ideograph
404             0xed89 -> U+59ba -> 0xfaa5 CJK Unified Ideograph
405             0xed8a -> U+5b56 -> 0xfaa6 CJK Unified Ideograph
406             0xed8b -> U+5bc0 -> 0xfaa7 CJK Unified Ideograph
407             0xed8c -> U+752f -> 0xfaa8 CJK Unified Ideograph
408             0xed8d -> U+5bd8 -> 0xfaa9 CJK Unified Ideograph
409             0xed8e -> U+5bec -> 0xfaaa CJK Unified Ideograph
410             0xed8f -> U+5c1e -> 0xfaab CJK Unified Ideograph
411             0xed90 -> U+5ca6 -> 0xfaac CJK Unified Ideograph
412             0xed91 -> U+5cba -> 0xfaad CJK Unified Ideograph
413             0xed92 -> U+5cf5 -> 0xfaae CJK Unified Ideograph
414             0xed93 -> U+5d27 -> 0xfaaf CJK Unified Ideograph
415             0xed94 -> U+5d53 -> 0xfab0 CJK Unified Ideograph
416             0xed95 -> U+fa11 -> 0xfab1 CJK compatibility Ideograph
417             0xed96 -> U+5d42 -> 0xfab2 CJK Unified Ideograph
418             0xed97 -> U+5d6d -> 0xfab3 CJK Unified Ideograph
419             0xed98 -> U+5db8 -> 0xfab4 CJK Unified Ideograph
420             0xed99 -> U+5db9 -> 0xfab5 CJK Unified Ideograph
421             0xed9a -> U+5dd0 -> 0xfab6 CJK Unified Ideograph
422             0xed9b -> U+5f21 -> 0xfab7 CJK Unified Ideograph
423             0xed9c -> U+5f34 -> 0xfab8 CJK Unified Ideograph
424             0xed9d -> U+5f67 -> 0xfab9 CJK Unified Ideograph
425             0xed9e -> U+5fb7 -> 0xfaba CJK Unified Ideograph
426             0xed9f -> U+5fde -> 0xfabb CJK Unified Ideograph
427             0xeda0 -> U+605d -> 0xfabc CJK Unified Ideograph
428             0xeda1 -> U+6085 -> 0xfabd CJK Unified Ideograph
429             0xeda2 -> U+608a -> 0xfabe CJK Unified Ideograph
430             0xeda3 -> U+60de -> 0xfabf CJK Unified Ideograph
431             0xeda4 -> U+60d5 -> 0xfac0 CJK Unified Ideograph
432             0xeda5 -> U+6120 -> 0xfac1 CJK Unified Ideograph
433             0xeda6 -> U+60f2 -> 0xfac2 CJK Unified Ideograph
434             0xeda7 -> U+6111 -> 0xfac3 CJK Unified Ideograph
435             0xeda8 -> U+6137 -> 0xfac4 CJK Unified Ideograph
436             0xeda9 -> U+6130 -> 0xfac5 CJK Unified Ideograph
437             0xedaa -> U+6198 -> 0xfac6 CJK Unified Ideograph
438             0xedab -> U+6213 -> 0xfac7 CJK Unified Ideograph
439             0xedac -> U+62a6 -> 0xfac8 CJK Unified Ideograph
440             0xedad -> U+63f5 -> 0xfac9 CJK Unified Ideograph
441             0xedae -> U+6460 -> 0xfaca CJK Unified Ideograph
442             0xedaf -> U+649d -> 0xfacb CJK Unified Ideograph
443             0xedb0 -> U+64ce -> 0xfacc CJK Unified Ideograph
444             0xedb1 -> U+654e -> 0xfacd CJK Unified Ideograph
445             0xedb2 -> U+6600 -> 0xface CJK Unified Ideograph
446             0xedb3 -> U+6615 -> 0xfacf CJK Unified Ideograph
447             0xedb4 -> U+663b -> 0xfad0 CJK Unified Ideograph
448             0xedb5 -> U+6609 -> 0xfad1 CJK Unified Ideograph
449             0xedb6 -> U+662e -> 0xfad2 CJK Unified Ideograph
450             0xedb7 -> U+661e -> 0xfad3 CJK Unified Ideograph
451             0xedb8 -> U+6624 -> 0xfad4 CJK Unified Ideograph
452             0xedb9 -> U+6665 -> 0xfad5 CJK Unified Ideograph
453             0xedba -> U+6657 -> 0xfad6 CJK Unified Ideograph
454             0xedbb -> U+6659 -> 0xfad7 CJK Unified Ideograph
455             0xedbc -> U+fa12 -> 0xfad8 CJK compatibility Ideograph
456             0xedbd -> U+6673 -> 0xfad9 CJK Unified Ideograph
457             0xedbe -> U+6699 -> 0xfada CJK Unified Ideograph
458             0xedbf -> U+66a0 -> 0xfadb CJK Unified Ideograph
459             0xedc0 -> U+66b2 -> 0xfadc CJK Unified Ideograph
460             0xedc1 -> U+66bf -> 0xfadd CJK Unified Ideograph
461             0xedc2 -> U+66fa -> 0xfade CJK Unified Ideograph
462             0xedc3 -> U+670e -> 0xfadf CJK Unified Ideograph
463             0xedc4 -> U+f929 -> 0xfae0 CJK compatibility Ideograph
464             0xedc5 -> U+6766 -> 0xfae1 CJK Unified Ideograph
465             0xedc6 -> U+67bb -> 0xfae2 CJK Unified Ideograph
466             0xedc7 -> U+6852 -> 0xfae3 CJK Unified Ideograph
467             0xedc8 -> U+67c0 -> 0xfae4 CJK Unified Ideograph
468             0xedc9 -> U+6801 -> 0xfae5 CJK Unified Ideograph
469             0xedca -> U+6844 -> 0xfae6 CJK Unified Ideograph
470             0xedcb -> U+68cf -> 0xfae7 CJK Unified Ideograph
471             0xedcc -> U+fa13 -> 0xfae8 CJK compatibility Ideograph
472             0xedcd -> U+6968 -> 0xfae9 CJK Unified Ideograph
473             0xedce -> U+fa14 -> 0xfaea CJK compatibility Ideograph
474             0xedcf -> U+6998 -> 0xfaeb CJK Unified Ideograph
475             0xedd0 -> U+69e2 -> 0xfaec CJK Unified Ideograph
476             0xedd1 -> U+6a30 -> 0xfaed CJK Unified Ideograph
477             0xedd2 -> U+6a6b -> 0xfaee CJK Unified Ideograph
478             0xedd3 -> U+6a46 -> 0xfaef CJK Unified Ideograph
479             0xedd4 -> U+6a73 -> 0xfaf0 CJK Unified Ideograph
480             0xedd5 -> U+6a7e -> 0xfaf1 CJK Unified Ideograph
481             0xedd6 -> U+6ae2 -> 0xfaf2 CJK Unified Ideograph
482             0xedd7 -> U+6ae4 -> 0xfaf3 CJK Unified Ideograph
483             0xedd8 -> U+6bd6 -> 0xfaf4 CJK Unified Ideograph
484             0xedd9 -> U+6c3f -> 0xfaf5 CJK Unified Ideograph
485             0xedda -> U+6c5c -> 0xfaf6 CJK Unified Ideograph
486             0xeddb -> U+6c86 -> 0xfaf7 CJK Unified Ideograph
487             0xeddc -> U+6c6f -> 0xfaf8 CJK Unified Ideograph
488             0xeddd -> U+6cda -> 0xfaf9 CJK Unified Ideograph
489             0xedde -> U+6d04 -> 0xfafa CJK Unified Ideograph
490             0xeddf -> U+6d87 -> 0xfafb CJK Unified Ideograph
491             0xede0 -> U+6d6f -> 0xfafc CJK Unified Ideograph
492             0xede1 -> U+6d96 -> 0xfb40 CJK Unified Ideograph
493             0xede2 -> U+6dac -> 0xfb41 CJK Unified Ideograph
494             0xede3 -> U+6dcf -> 0xfb42 CJK Unified Ideograph
495             0xede4 -> U+6df8 -> 0xfb43 CJK Unified Ideograph
496             0xede5 -> U+6df2 -> 0xfb44 CJK Unified Ideograph
497             0xede6 -> U+6dfc -> 0xfb45 CJK Unified Ideograph
498             0xede7 -> U+6e39 -> 0xfb46 CJK Unified Ideograph
499             0xede8 -> U+6e5c -> 0xfb47 CJK Unified Ideograph
500             0xede9 -> U+6e27 -> 0xfb48 CJK Unified Ideograph
501             0xedea -> U+6e3c -> 0xfb49 CJK Unified Ideograph
502             0xedeb -> U+6ebf -> 0xfb4a CJK Unified Ideograph
503             0xedec -> U+6f88 -> 0xfb4b CJK Unified Ideograph
504             0xeded -> U+6fb5 -> 0xfb4c CJK Unified Ideograph
505             0xedee -> U+6ff5 -> 0xfb4d CJK Unified Ideograph
506             0xedef -> U+7005 -> 0xfb4e CJK Unified Ideograph
507             0xedf0 -> U+7007 -> 0xfb4f CJK Unified Ideograph
508             0xedf1 -> U+7028 -> 0xfb50 CJK Unified Ideograph
509             0xedf2 -> U+7085 -> 0xfb51 CJK Unified Ideograph
510             0xedf3 -> U+70ab -> 0xfb52 CJK Unified Ideograph
511             0xedf4 -> U+710f -> 0xfb53 CJK Unified Ideograph
512             0xedf5 -> U+7104 -> 0xfb54 CJK Unified Ideograph
513             0xedf6 -> U+715c -> 0xfb55 CJK Unified Ideograph
514             0xedf7 -> U+7146 -> 0xfb56 CJK Unified Ideograph
515             0xedf8 -> U+7147 -> 0xfb57 CJK Unified Ideograph
516             0xedf9 -> U+fa15 -> 0xfb58 CJK compatibility Ideograph
517             0xedfa -> U+71c1 -> 0xfb59 CJK Unified Ideograph
518             0xedfb -> U+71fe -> 0xfb5a CJK Unified Ideograph
519             0xedfc -> U+72b1 -> 0xfb5b CJK Unified Ideograph
520             0xee40 -> U+72be -> 0xfb5c CJK Unified Ideograph
521             0xee41 -> U+7324 -> 0xfb5d CJK Unified Ideograph
522             0xee42 -> U+fa16 -> 0xfb5e CJK compatibility Ideograph
523             0xee43 -> U+7377 -> 0xfb5f CJK Unified Ideograph
524             0xee44 -> U+73bd -> 0xfb60 CJK Unified Ideograph
525             0xee45 -> U+73c9 -> 0xfb61 CJK Unified Ideograph
526             0xee46 -> U+73d6 -> 0xfb62 CJK Unified Ideograph
527             0xee47 -> U+73e3 -> 0xfb63 CJK Unified Ideograph
528             0xee48 -> U+73d2 -> 0xfb64 CJK Unified Ideograph
529             0xee49 -> U+7407 -> 0xfb65 CJK Unified Ideograph
530             0xee4a -> U+73f5 -> 0xfb66 CJK Unified Ideograph
531             0xee4b -> U+7426 -> 0xfb67 CJK Unified Ideograph
532             0xee4c -> U+742a -> 0xfb68 CJK Unified Ideograph
533             0xee4d -> U+7429 -> 0xfb69 CJK Unified Ideograph
534             0xee4e -> U+742e -> 0xfb6a CJK Unified Ideograph
535             0xee4f -> U+7462 -> 0xfb6b CJK Unified Ideograph
536             0xee50 -> U+7489 -> 0xfb6c CJK Unified Ideograph
537             0xee51 -> U+749f -> 0xfb6d CJK Unified Ideograph
538             0xee52 -> U+7501 -> 0xfb6e CJK Unified Ideograph
539             0xee53 -> U+756f -> 0xfb6f CJK Unified Ideograph
540             0xee54 -> U+7682 -> 0xfb70 CJK Unified Ideograph
541             0xee55 -> U+769c -> 0xfb71 CJK Unified Ideograph
542             0xee56 -> U+769e -> 0xfb72 CJK Unified Ideograph
543             0xee57 -> U+769b -> 0xfb73 CJK Unified Ideograph
544             0xee58 -> U+76a6 -> 0xfb74 CJK Unified Ideograph
545             0xee59 -> U+fa17 -> 0xfb75 CJK compatibility Ideograph
546             0xee5a -> U+7746 -> 0xfb76 CJK Unified Ideograph
547             0xee5b -> U+52af -> 0xfb77 CJK Unified Ideograph
548             0xee5c -> U+7821 -> 0xfb78 CJK Unified Ideograph
549             0xee5d -> U+784e -> 0xfb79 CJK Unified Ideograph
550             0xee5e -> U+7864 -> 0xfb7a CJK Unified Ideograph
551             0xee5f -> U+787a -> 0xfb7b CJK Unified Ideograph
552             0xee60 -> U+7930 -> 0xfb7c CJK Unified Ideograph
553             0xee61 -> U+fa18 -> 0xfb7d CJK compatibility Ideograph
554             0xee62 -> U+fa19 -> 0xfb7e CJK compatibility Ideograph
555             0xee63 -> U+fa1a -> 0xfb80 CJK compatibility Ideograph
556             0xee64 -> U+7994 -> 0xfb81 CJK Unified Ideograph
557             0xee65 -> U+fa1b -> 0xfb82 CJK compatibility Ideograph
558             0xee66 -> U+799b -> 0xfb83 CJK Unified Ideograph
559             0xee67 -> U+7ad1 -> 0xfb84 CJK Unified Ideograph
560             0xee68 -> U+7ae7 -> 0xfb85 CJK Unified Ideograph
561             0xee69 -> U+fa1c -> 0xfb86 CJK compatibility Ideograph
562             0xee6a -> U+7aeb -> 0xfb87 CJK Unified Ideograph
563             0xee6b -> U+7b9e -> 0xfb88 CJK Unified Ideograph
564             0xee6c -> U+fa1d -> 0xfb89 CJK compatibility Ideograph
565             0xee6d -> U+7d48 -> 0xfb8a CJK Unified Ideograph
566             0xee6e -> U+7d5c -> 0xfb8b CJK Unified Ideograph
567             0xee6f -> U+7db7 -> 0xfb8c CJK Unified Ideograph
568             0xee70 -> U+7da0 -> 0xfb8d CJK Unified Ideograph
569             0xee71 -> U+7dd6 -> 0xfb8e CJK Unified Ideograph
570             0xee72 -> U+7e52 -> 0xfb8f CJK Unified Ideograph
571             0xee73 -> U+7f47 -> 0xfb90 CJK Unified Ideograph
572             0xee74 -> U+7fa1 -> 0xfb91 CJK Unified Ideograph
573             0xee75 -> U+fa1e -> 0xfb92 CJK compatibility Ideograph
574             0xee76 -> U+8301 -> 0xfb93 CJK Unified Ideograph
575             0xee77 -> U+8362 -> 0xfb94 CJK Unified Ideograph
576             0xee78 -> U+837f -> 0xfb95 CJK Unified Ideograph
577             0xee79 -> U+83c7 -> 0xfb96 CJK Unified Ideograph
578             0xee7a -> U+83f6 -> 0xfb97 CJK Unified Ideograph
579             0xee7b -> U+8448 -> 0xfb98 CJK Unified Ideograph
580             0xee7c -> U+84b4 -> 0xfb99 CJK Unified Ideograph
581             0xee7d -> U+8553 -> 0xfb9a CJK Unified Ideograph
582             0xee7e -> U+8559 -> 0xfb9b CJK Unified Ideograph
583             0xee80 -> U+856b -> 0xfb9c CJK Unified Ideograph
584             0xee81 -> U+fa1f -> 0xfb9d CJK compatibility Ideograph
585             0xee82 -> U+85b0 -> 0xfb9e CJK Unified Ideograph
586             0xee83 -> U+fa20 -> 0xfb9f CJK compatibility Ideograph
587             0xee84 -> U+fa21 -> 0xfba0 CJK compatibility Ideograph
588             0xee85 -> U+8807 -> 0xfba1 CJK Unified Ideograph
589             0xee86 -> U+88f5 -> 0xfba2 CJK Unified Ideograph
590             0xee87 -> U+8a12 -> 0xfba3 CJK Unified Ideograph
591             0xee88 -> U+8a37 -> 0xfba4 CJK Unified Ideograph
592             0xee89 -> U+8a79 -> 0xfba5 CJK Unified Ideograph
593             0xee8a -> U+8aa7 -> 0xfba6 CJK Unified Ideograph
594             0xee8b -> U+8abe -> 0xfba7 CJK Unified Ideograph
595             0xee8c -> U+8adf -> 0xfba8 CJK Unified Ideograph
596             0xee8d -> U+fa22 -> 0xfba9 CJK compatibility Ideograph
597             0xee8e -> U+8af6 -> 0xfbaa CJK Unified Ideograph
598             0xee8f -> U+8b53 -> 0xfbab CJK Unified Ideograph
599             0xee90 -> U+8b7f -> 0xfbac CJK Unified Ideograph
600             0xee91 -> U+8cf0 -> 0xfbad CJK Unified Ideograph
601             0xee92 -> U+8cf4 -> 0xfbae CJK Unified Ideograph
602             0xee93 -> U+8d12 -> 0xfbaf CJK Unified Ideograph
603             0xee94 -> U+8d76 -> 0xfbb0 CJK Unified Ideograph
604             0xee95 -> U+fa23 -> 0xfbb1 CJK compatibility Ideograph
605             0xee96 -> U+8ecf -> 0xfbb2 CJK Unified Ideograph
606             0xee97 -> U+fa24 -> 0xfbb3 CJK compatibility Ideograph
607             0xee98 -> U+fa25 -> 0xfbb4 CJK compatibility Ideograph
608             0xee99 -> U+9067 -> 0xfbb5 CJK Unified Ideograph
609             0xee9a -> U+90de -> 0xfbb6 CJK Unified Ideograph
610             0xee9b -> U+fa26 -> 0xfbb7 CJK compatibility Ideograph
611             0xee9c -> U+9115 -> 0xfbb8 CJK Unified Ideograph
612             0xee9d -> U+9127 -> 0xfbb9 CJK Unified Ideograph
613             0xee9e -> U+91da -> 0xfbba CJK Unified Ideograph
614             0xee9f -> U+91d7 -> 0xfbbb CJK Unified Ideograph
615             0xeea0 -> U+91de -> 0xfbbc CJK Unified Ideograph
616             0xeea1 -> U+91ed -> 0xfbbd CJK Unified Ideograph
617             0xeea2 -> U+91ee -> 0xfbbe CJK Unified Ideograph
618             0xeea3 -> U+91e4 -> 0xfbbf CJK Unified Ideograph
619             0xeea4 -> U+91e5 -> 0xfbc0 CJK Unified Ideograph
620             0xeea5 -> U+9206 -> 0xfbc1 CJK Unified Ideograph
621             0xeea6 -> U+9210 -> 0xfbc2 CJK Unified Ideograph
622             0xeea7 -> U+920a -> 0xfbc3 CJK Unified Ideograph
623             0xeea8 -> U+923a -> 0xfbc4 CJK Unified Ideograph
624             0xeea9 -> U+9240 -> 0xfbc5 CJK Unified Ideograph
625             0xeeaa -> U+923c -> 0xfbc6 CJK Unified Ideograph
626             0xeeab -> U+924e -> 0xfbc7 CJK Unified Ideograph
627             0xeeac -> U+9259 -> 0xfbc8 CJK Unified Ideograph
628             0xeead -> U+9251 -> 0xfbc9 CJK Unified Ideograph
629             0xeeae -> U+9239 -> 0xfbca CJK Unified Ideograph
630             0xeeaf -> U+9267 -> 0xfbcb CJK Unified Ideograph
631             0xeeb0 -> U+92a7 -> 0xfbcc CJK Unified Ideograph
632             0xeeb1 -> U+9277 -> 0xfbcd CJK Unified Ideograph
633             0xeeb2 -> U+9278 -> 0xfbce CJK Unified Ideograph
634             0xeeb3 -> U+92e7 -> 0xfbcf CJK Unified Ideograph
635             0xeeb4 -> U+92d7 -> 0xfbd0 CJK Unified Ideograph
636             0xeeb5 -> U+92d9 -> 0xfbd1 CJK Unified Ideograph
637             0xeeb6 -> U+92d0 -> 0xfbd2 CJK Unified Ideograph
638             0xeeb7 -> U+fa27 -> 0xfbd3 CJK compatibility Ideograph
639             0xeeb8 -> U+92d5 -> 0xfbd4 CJK Unified Ideograph
640             0xeeb9 -> U+92e0 -> 0xfbd5 CJK Unified Ideograph
641             0xeeba -> U+92d3 -> 0xfbd6 CJK Unified Ideograph
642             0xeebb -> U+9325 -> 0xfbd7 CJK Unified Ideograph
643             0xeebc -> U+9321 -> 0xfbd8 CJK Unified Ideograph
644             0xeebd -> U+92fb -> 0xfbd9 CJK Unified Ideograph
645             0xeebe -> U+fa28 -> 0xfbda CJK compatibility Ideograph
646             0xeebf -> U+931e -> 0xfbdb CJK Unified Ideograph
647             0xeec0 -> U+92ff -> 0xfbdc CJK Unified Ideograph
648             0xeec1 -> U+931d -> 0xfbdd CJK Unified Ideograph
649             0xeec2 -> U+9302 -> 0xfbde CJK Unified Ideograph
650             0xeec3 -> U+9370 -> 0xfbdf CJK Unified Ideograph
651             0xeec4 -> U+9357 -> 0xfbe0 CJK Unified Ideograph
652             0xeec5 -> U+93a4 -> 0xfbe1 CJK Unified Ideograph
653             0xeec6 -> U+93c6 -> 0xfbe2 CJK Unified Ideograph
654             0xeec7 -> U+93de -> 0xfbe3 CJK Unified Ideograph
655             0xeec8 -> U+93f8 -> 0xfbe4 CJK Unified Ideograph
656             0xeec9 -> U+9431 -> 0xfbe5 CJK Unified Ideograph
657             0xeeca -> U+9445 -> 0xfbe6 CJK Unified Ideograph
658             0xeecb -> U+9448 -> 0xfbe7 CJK Unified Ideograph
659             0xeecc -> U+9592 -> 0xfbe8 CJK Unified Ideograph
660             0xeecd -> U+f9dc -> 0xfbe9 CJK compatibility Ideograph
661             0xeece -> U+fa29 -> 0xfbea CJK compatibility Ideograph
662             0xeecf -> U+969d -> 0xfbeb CJK Unified Ideograph
663             0xeed0 -> U+96af -> 0xfbec CJK Unified Ideograph
664             0xeed1 -> U+9733 -> 0xfbed CJK Unified Ideograph
665             0xeed2 -> U+973b -> 0xfbee CJK Unified Ideograph
666             0xeed3 -> U+9743 -> 0xfbef CJK Unified Ideograph
667             0xeed4 -> U+974d -> 0xfbf0 CJK Unified Ideograph
668             0xeed5 -> U+974f -> 0xfbf1 CJK Unified Ideograph
669             0xeed6 -> U+9751 -> 0xfbf2 CJK Unified Ideograph
670             0xeed7 -> U+9755 -> 0xfbf3 CJK Unified Ideograph
671             0xeed8 -> U+9857 -> 0xfbf4 CJK Unified Ideograph
672             0xeed9 -> U+9865 -> 0xfbf5 CJK Unified Ideograph
673             0xeeda -> U+fa2a -> 0xfbf6 CJK compatibility Ideograph
674             0xeedb -> U+fa2b -> 0xfbf7 CJK compatibility Ideograph
675             0xeedc -> U+9927 -> 0xfbf8 CJK Unified Ideograph
676             0xeedd -> U+fa2c -> 0xfbf9 CJK compatibility Ideograph
677             0xeede -> U+999e -> 0xfbfa CJK Unified Ideograph
678             0xeedf -> U+9a4e -> 0xfbfb CJK Unified Ideograph
679             0xeee0 -> U+9ad9 -> 0xfbfc CJK Unified Ideograph
680             0xeee1 -> U+9adc -> 0xfc40 CJK Unified Ideograph
681             0xeee2 -> U+9b75 -> 0xfc41 CJK Unified Ideograph
682             0xeee3 -> U+9b72 -> 0xfc42 CJK Unified Ideograph
683             0xeee4 -> U+9b8f -> 0xfc43 CJK Unified Ideograph
684             0xeee5 -> U+9bb1 -> 0xfc44 CJK Unified Ideograph
685             0xeee6 -> U+9bbb -> 0xfc45 CJK Unified Ideograph
686             0xeee7 -> U+9c00 -> 0xfc46 CJK Unified Ideograph
687             0xeee8 -> U+9d70 -> 0xfc47 CJK Unified Ideograph
688             0xeee9 -> U+9d6b -> 0xfc48 CJK Unified Ideograph
689             0xeeea -> U+fa2d -> 0xfc49 CJK compatibility Ideograph
690             0xeeeb -> U+9e19 -> 0xfc4a CJK Unified Ideograph
691             0xeeec -> U+9ed1 -> 0xfc4b CJK Unified Ideograph
692             0xeeef -> U+2170 -> 0xfa40 Small Roman Numeral One
693             0xeef0 -> U+2171 -> 0xfa41 Small Roman Numeral Two
694             0xeef1 -> U+2172 -> 0xfa42 Small Roman Numeral Three
695             0xeef2 -> U+2173 -> 0xfa43 Small Roman Numeral Four
696             0xeef3 -> U+2174 -> 0xfa44 Small Roman Numeral Five
697             0xeef4 -> U+2175 -> 0xfa45 Small Roman Numeral Six
698             0xeef5 -> U+2176 -> 0xfa46 Small Roman Numeral Seven
699             0xeef6 -> U+2177 -> 0xfa47 Small Roman Numeral Eight
700             0xeef7 -> U+2178 -> 0xfa48 Small Roman Numeral Nine
701             0xeef8 -> U+2179 -> 0xfa49 Small Roman Numeral Ten
702             0xeef9 -> U+ffe2 -> 0x81ca Fullwidth Not Sign
703             0xeefa -> U+ffe4 -> 0xfa55 Fullwidth Broken Bar
704             0xeefb -> U+ff07 -> 0xfa56 Fullwidth Apostrophe
705             0xeefc -> U+ff02 -> 0xfa57 Fullwidth Quotation Mark
706             0xfa4a -> U+2160 -> 0x8754 Roman Numeral One
707             0xfa4b -> U+2161 -> 0x8755 Roman Numeral Two
708             0xfa4c -> U+2162 -> 0x8756 Roman Numeral Three
709             0xfa4d -> U+2163 -> 0x8757 Roman Numeral Four
710             0xfa4e -> U+2164 -> 0x8758 Roman Numeral Five
711             0xfa4f -> U+2165 -> 0x8759 Roman Numeral Six
712             0xfa50 -> U+2166 -> 0x875a Roman Numeral Seven
713             0xfa51 -> U+2167 -> 0x875b Roman Numeral Eight
714             0xfa52 -> U+2168 -> 0x875c Roman Numeral Nine
715             0xfa53 -> U+2169 -> 0x875d Roman Numeral Ten
716             0xfa54 -> U+ffe2 -> 0x81ca Fullwidth Not Sign
717             0xfa58 -> U+3231 -> 0x878a Parenthesized Ideograph Stock
718             0xfa59 -> U+2116 -> 0x8782 Numero Sign
719             0xfa5a -> U+2121 -> 0x8784 Telephone Sign
720             0xfa5b -> U+2235 -> 0x81e6 Because
721             END
722             next if /^#/;
723             if (my($cp932a, $Unicode, $cp932b) = / 0x([0123456789abcdef]{4}) .+? U\+([0123456789abcdef]{4}) .+? 0x([0123456789abcdef]{4}) /x) {
724             $Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{ pack('H*',uc($cp932a)) } = pack('H*',uc($cp932b));
725             }
726             }
727              
728             my %x = (
729              
730             # utf8jp(UTF-8-SPUA-JP) is best choice as internal encoding, because it
731             # makes one character by one code point on fixed length without grapheme
732             # clustering.
733             # Other all are not so.
734              
735             'cp932x' => {
736             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
737             'set_ctype' => sub { q!! },
738             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^((?:\x9C\x5A)?[\x00-\xFF]{1,2})!!; $1 },
739             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932x'}{$Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{$_[0]}||$_[0]} },
740             'putc' => sub { local $^W; $tr{'cp932x'}{'utf8jp'}{$_[0]} },
741             },
742             'cp932' => {
743             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
744             'set_ctype' => sub { q!! },
745             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
746             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932'}{$Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{$_[0]}||$_[0]} },
747             'putc' => sub { local $^W; $tr{'cp932'}{'utf8jp'}{$_[0]} },
748             },
749             'cp932ibm' => {
750             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
751             'set_ctype' => sub { q!! },
752             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
753             # 'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932ibm'}{$_[0]} },
754             # VVVVVVVV--- 'cp932' with KB170559 is better than only 'cp932ibm' on read
755             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932' }{$Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{$_[0]}||$_[0]} },
756             'putc' => sub { local $^W; $tr{'cp932ibm'}{'utf8jp'}{$_[0]} },
757             },
758             'cp932nec' => {
759             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
760             'set_ctype' => sub { q!! },
761             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
762             # 'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932nec'}{$_[0]} },
763             # VVVVVVVV--- 'cp932' with KB170559 is better than only 'cp932nec' on read
764             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932' }{$Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{$_[0]}||$_[0]} },
765             'putc' => sub { local $^W; $tr{'cp932nec'}{'utf8jp'}{$_[0]} },
766             },
767             'sjis2004' => {
768             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
769             'set_ctype' => sub { q!! },
770             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
771             'getc' => sub { local $^W; $tr{'utf8jp'}{'sjis2004'}{$_[0]} },
772             'putc' => sub { local $^W; $tr{'sjis2004'}{'utf8jp'}{$_[0]} },
773             },
774             'cp00930' => {
775             'get_ctype' => sub { s!^\x0F!! ? 'SBCS' : s!^\x0E!! ? 'DBCS' : undef },
776             'set_ctype' => sub { {'SBCS'=>"\x0F", 'DBCS'=>"\x0E", }->{$_[0]} },
777             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
778             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp00930'}{$_[0]} },
779             'putc' => sub { local $^W; $tr{'cp00930'}{'utf8jp'}{$_[0]} },
780             },
781             'keis78' => {
782             'get_ctype' => sub { s!^\x0A\x41!! ? 'SBCS' : s!^\x0A\x42!! ? 'DBCS' : undef },
783             'set_ctype' => sub { {'SBCS'=>"\x0A\x41", 'DBCS'=>"\x0A\x42", }->{$_[0]} },
784             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
785             'getc' => sub { local $^W; $tr{'utf8jp'}{'keis78'}{$_[0]} },
786             'putc' => sub { local $^W; $tr{'keis78'}{'utf8jp'}{$_[0]} },
787             },
788             'keis83' => {
789             'get_ctype' => sub { s!^\x0A\x41!! ? 'SBCS' : s!^\x0A\x42!! ? 'DBCS' : undef },
790             'set_ctype' => sub { {'SBCS'=>"\x0A\x41", 'DBCS'=>"\x0A\x42", }->{$_[0]} },
791             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
792             'getc' => sub { local $^W; $tr{'utf8jp'}{'keis83'}{$_[0]} },
793             'putc' => sub { local $^W; $tr{'keis83'}{'utf8jp'}{$_[0]} },
794             },
795             'keis90' => {
796             'get_ctype' => sub { s!^\x0A\x41!! ? 'SBCS' : s!^\x0A\x42!! ? 'DBCS' : undef },
797             'set_ctype' => sub { {'SBCS'=>"\x0A\x41", 'DBCS'=>"\x0A\x42", }->{$_[0]} },
798             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
799             'getc' => sub { local $^W; $tr{'utf8jp'}{'keis90'}{$_[0]} },
800             'putc' => sub { local $^W; $tr{'keis90'}{'utf8jp'}{$_[0]} },
801             },
802             'jef' => {
803             'get_ctype' => sub { s!^\x29!! ? 'SBCS' : s!^[\x28\x38]!! ? 'DBCS' : undef },
804             'set_ctype' => sub { {'SBCS'=>"\x29", 'DBCS'=>"\x28", }->{$_[0]} },
805             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
806             'getc' => sub { local $^W; $tr{'utf8jp'}{'jef'}{$_[0]} },
807             'putc' => sub { local $^W; $tr{'jef'}{'utf8jp'}{$_[0]} },
808             },
809             'jef9p' => {
810             'get_ctype' => sub { s!^\x29!! ? 'SBCS' : s!^[\x28\x38]!! ? 'DBCS' : undef },
811             'set_ctype' => sub { {'SBCS'=>"\x29", 'DBCS'=>"\x38", }->{$_[0]} },
812             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
813             'getc' => sub { local $^W; $tr{'utf8jp'}{'jef'}{$_[0]} },
814             'putc' => sub { local $^W; $tr{'jef'}{'utf8jp'}{$_[0]} },
815             },
816             'jipsj' => {
817             'get_ctype' => sub { s!^\x1A\x71!! ? 'SBCS' : s!^\x1A\x70!! ? 'DBCS' : undef },
818             'set_ctype' => sub { {'SBCS'=>"\x1A\x71", 'DBCS'=>"\x1A\x70", }->{$_[0]} },
819             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
820             'getc' => sub { local $^W; $tr{'utf8jp'}{'jipsj'}{$_[0]} },
821             'putc' => sub { local $^W; $tr{'jipsj'}{'utf8jp'}{$_[0]} },
822             },
823             'jipse' => {
824             'get_ctype' => sub { s!^\x3F\x76!! ? 'SBCS' : s!^\x3F\x75!! ? 'DBCS' : undef },
825             'set_ctype' => sub { {'SBCS'=>"\x3F\x76", 'DBCS'=>"\x3F\x75", }->{$_[0]} },
826             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
827             'getc' => sub { local $^W; $tr{'utf8jp'}{'jipse'}{$_[0]} },
828             'putc' => sub { local $^W; $tr{'jipse'}{'utf8jp'}{$_[0]} },
829             },
830             'letsj' => {
831             'get_ctype' => sub { s!^\x93\xF1!! ? 'SBCS' : s!^\x93\x70!! ? 'DBCS' : undef },
832             'set_ctype' => sub { {'SBCS'=>"\x93\xF1", 'DBCS'=>"\x93\x70", }->{$_[0]} },
833             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
834             'getc' => sub { local $^W; $tr{'utf8jp'}{'letsj'}{$_[0]} },
835             'putc' => sub { local $^W; $tr{'letsj'}{'utf8jp'}{$_[0]} },
836             },
837             'utf8' => {
838             'get_ctype' => sub { m!^[\x00-\x7F\xFE\xFF]! ? 'SBCS' : m!^[^\x00-\x7F\xFE\xFF]! ? 'DBCS' : undef },
839             'set_ctype' => sub { q!! },
840             'getoct' => sub { s!^(
841             [\x00-\x7F\x80-\xBF\xC0-\xC1\xF5-\xFF] |
842             [\xE0-\xE2\xE4-\xEF][\x80-\xBF]{2} |
843             \xE3(?:
844             \x81\x8B\xE3\x82\x9A | # U+304B+309A
845             \x81\x8D\xE3\x82\x9A | # U+304D+309A
846             \x81\x8F\xE3\x82\x9A | # U+304F+309A
847             \x81\x91\xE3\x82\x9A | # U+3051+309A
848             \x81\x93\xE3\x82\x9A | # U+3053+309A
849             \x82\xAB\xE3\x82\x9A | # U+30AB+309A
850             \x82\xAD\xE3\x82\x9A | # U+30AD+309A
851             \x82\xAF\xE3\x82\x9A | # U+30AF+309A
852             \x82\xB1\xE3\x82\x9A | # U+30B1+309A
853             \x82\xB3\xE3\x82\x9A | # U+30B3+309A
854             \x82\xBB\xE3\x82\x9A | # U+30BB+309A
855             \x83\x84\xE3\x82\x9A | # U+30C4+309A
856             \x83\x88\xE3\x82\x9A | # U+30C8+309A
857             \x87\xB7\xE3\x82\x9A | # U+31F7+309A
858             [\x80-\xBF]{2}
859             ) |
860             [\xC2\xC4-\xC8\xCC-\xDF][\x80-\xBF] |
861             \xC3(?:
862             \xA6\xCC\x80 | # U+00E6+0300
863             [\x80-\xBF]
864             ) |
865             \xC9(?:
866             \x94\xCC\x80 | # U+0254+0300
867             \x94\xCC\x81 | # U+0254+0301
868             \x99\xCC\x80 | # U+0259+0300
869             \x99\xCC\x81 | # U+0259+0301
870             \x9A\xCC\x80 | # U+025A+0300
871             \x9A\xCC\x81 | # U+025A+0301
872             [\x80-\xBF]
873             ) |
874             \xCA(?:
875             \x8C\xCC\x80 | # U+028C+0300
876             \x8C\xCC\x81 | # U+028C+0301
877             [\x80-\xBF]
878             ) |
879             \xCB(?:
880             \xA5\xCB\xA9 | # U+02E5+02E9
881             \xA9\xCB\xA5 | # U+02E9+02E5
882             [\x80-\xBF]
883             ) |
884             [\xF0-\xF4][\x80-\xBF]{3} |
885             [\x00-\xFF]
886             )!!xs; $1 },
887             'getc' => sub { local $^W; $tr{'utf8jp'}{'utf8'}{$_[0]} },
888             'putc' => sub { local $^W; $tr{'utf8'}{'utf8jp'}{$_[0]} },
889             },
890             'utf8.1' => {
891             'get_ctype' => sub { m!^[\x00-\x7F\xFE\xFF]! ? 'SBCS' : m!^[^\x00-\x7F\xFE\xFF]! ? 'DBCS' : undef },
892             'set_ctype' => sub { q!! },
893             'getoct' => sub { s!^(
894             [\x00-\x7F\x80-\xBF\xC0-\xC1\xF5-\xFF] |
895             [\xE0-\xE2\xE4-\xEF][\x80-\xBF]{2} |
896             \xE3(?:
897             \x81\x8B\xE3\x82\x9A | # U+304B+309A
898             \x81\x8D\xE3\x82\x9A | # U+304D+309A
899             \x81\x8F\xE3\x82\x9A | # U+304F+309A
900             \x81\x91\xE3\x82\x9A | # U+3051+309A
901             \x81\x93\xE3\x82\x9A | # U+3053+309A
902             \x82\xAB\xE3\x82\x9A | # U+30AB+309A
903             \x82\xAD\xE3\x82\x9A | # U+30AD+309A
904             \x82\xAF\xE3\x82\x9A | # U+30AF+309A
905             \x82\xB1\xE3\x82\x9A | # U+30B1+309A
906             \x82\xB3\xE3\x82\x9A | # U+30B3+309A
907             \x82\xBB\xE3\x82\x9A | # U+30BB+309A
908             \x83\x84\xE3\x82\x9A | # U+30C4+309A
909             \x83\x88\xE3\x82\x9A | # U+30C8+309A
910             \x87\xB7\xE3\x82\x9A | # U+31F7+309A
911             [\x80-\xBF]{2}
912             ) |
913             [\xC2\xC4-\xC8\xCC-\xDF][\x80-\xBF] |
914             \xC3(?:
915             \xA6\xCC\x80 | # U+00E6+0300
916             [\x80-\xBF]
917             ) |
918             \xC9(?:
919             \x94\xCC\x80 | # U+0254+0300
920             \x94\xCC\x81 | # U+0254+0301
921             \x99\xCC\x80 | # U+0259+0300
922             \x99\xCC\x81 | # U+0259+0301
923             \x9A\xCC\x80 | # U+025A+0300
924             \x9A\xCC\x81 | # U+025A+0301
925             [\x80-\xBF]
926             ) |
927             \xCA(?:
928             \x8C\xCC\x80 | # U+028C+0300
929             \x8C\xCC\x81 | # U+028C+0301
930             [\x80-\xBF]
931             ) |
932             \xCB(?:
933             \xA5\xCB\xA9 | # U+02E5+02E9
934             \xA9\xCB\xA5 | # U+02E9+02E5
935             [\x80-\xBF]
936             ) |
937             [\xF0-\xF4][\x80-\xBF]{3} |
938             [\x00-\xFF]
939             )!!xs; $1 },
940             'getc' => sub { local $^W; $tr{'utf8jp'}{'utf8.1'}{$_[0]} },
941             'putc' => sub { local $^W; $tr{'utf8.1'}{'utf8jp'}{$_[0]} },
942             },
943             'utf8jp' => {
944             'get_ctype' => sub { m!^\xF3\xB0(?:[\x80-\x82][\x80-\xBF]|\x83[\x80-\xBE])! ? 'SBCS' : 'DBCS' },
945             'set_ctype' => sub { q!! },
946             'getoct' => sub { s!^(\xF3[\xB0-\xB5][\x80-\xBF][\x80-\xBF]|[\x00-\xFF])!!; $1; },
947             'getc' => sub { $_[0] },
948             'putc' => sub { $_[0] },
949             },
950             );
951              
952             #---------------------------------------------------------------------
953             # convert encoding to OUTPUT_encoding from INPUT_encoding
954             #---------------------------------------------------------------------
955             sub convert {
956 2774071     2774071 0 24409678 local $_ = ${$_[0]};
  2774071         4727581  
957 2774071         4213836 my $OUTPUT_encoding = $_[1];
958 2774071         3583968 my $INPUT_encoding = $_[2];
959 2774071   100     5258675 my $option = ($_[3] || {});
960 2774071         3634508 my $last_ctype = undef;
961 2774071         3799398 my $output = '';
962 2774071         3523518 my $count = 0;
963 2774071   100     10274106 $option->{'OVERRIDE_MAPPING'} ||= {};
964              
965 2774071 50       5662887 if (ref($_[0]) ne 'SCALAR') {
966 0         0 die "@{[__FILE__]} \$_[0] isn't scalar reference\n";
  0         0  
967             }
968 2774071 50       4995174 if (not exists $x{$OUTPUT_encoding}) {
969 0         0 die "@{[__FILE__]} unknown OUTPUT encoding '$OUTPUT_encoding'\n";
  0         0  
970             }
971 2774071 50       4841644 if (not exists $x{$INPUT_encoding}) {
972 0         0 die "@{[__FILE__]} unknown INPUT encoding '$INPUT_encoding'\n";
  0         0  
973             }
974              
975 2774071         3671627 my $INPUT_LAYOUT = undef;
976 2774071         4018980 my @ctype = ();
977 2774071 100       7755333 if ($INPUT_encoding =~ /^(?:cp932x|cp932|cp932ibm|cp932nec|sjis2004|cp00930|keis78|keis83|keis90|jef|jef9p|jipsj|jipse|letsj)$/) {
978 1653042 100       3230289 if (defined $option->{'INPUT_LAYOUT'}) {
979 1653009         2299645 $INPUT_LAYOUT = $option->{'INPUT_LAYOUT'};
980 1653009         2242382 $INPUT_LAYOUT =~ s/([SD])([0-9]+)/$1 x $2/ge;
  0         0  
981 1653009 50       3709369 if ($INPUT_LAYOUT =~ /^[SD]*$/) {
982 1653009         3771325 @ctype = map {{'S'=>'SBCS', 'D'=>'DBCS',}->{$_}} split(//,$INPUT_LAYOUT);
  1653185         7733267  
983             }
984             else {
985 0         0 die "@{[__FILE__]} INPUT_LAYOUT isn't 'S' or 'D' sequence '$INPUT_LAYOUT'";
  0         0  
986             }
987             }
988             }
989              
990 2774071         5709902 while ($_ ne '') {
991 2774338         3926367 my $ctype = '';
992 2774338 100       4418609 if (defined $INPUT_LAYOUT) {
993 1653185   50     3345489 $ctype = (shift(@ctype) || 'SBCS');
994             }
995             else {
996 1121153   50     2001415 $ctype = ($x{$INPUT_encoding}{'get_ctype'}->() || $last_ctype || 'SBCS');
997             }
998              
999 2774338 100 100     5534704 if (not defined($last_ctype) or ($ctype ne $last_ctype)) {
1000 2774234 100       5054526 if ($option->{'OUTPUT_SHIFTING'}) {
1001 76         202 $output .= $x{$OUTPUT_encoding}{'set_ctype'}->($ctype);
1002             }
1003 2774234         3828559 $last_ctype = $ctype;
1004             }
1005              
1006 2774338         4863971 my $input_octets = $x{$INPUT_encoding}{'getoct'}->($ctype);
1007 2774338 50       5486393 if (defined $input_octets) {
1008 2774338 100       4965985 if (defined $option->{'OVERRIDE_MAPPING'}{$input_octets}) {
1009 70         113 $output .= $option->{'OVERRIDE_MAPPING'}{$input_octets};
1010             }
1011             else {
1012 2774268         4772247 my $char = $x{$INPUT_encoding}{'getc'}->($input_octets);
1013 2774268 100       5885741 if (not defined $char) {
    100          
1014 3596 100       4986 if (defined $option->{'GETA'}) {
1015 21         48 $output .= $option->{'GETA'};
1016             }
1017             else {
1018 3575         5365 $output .= $x{$OUTPUT_encoding}{'putc'}->("\xF3\xB0\x85\xAB");
1019             }
1020             }
1021             elsif ($char eq "\xF3\xB0\x84\x80") {
1022 451 100       919 if (defined $option->{'SPACE'}) {
1023 21         55 $output .= $option->{'SPACE'};
1024             }
1025             else {
1026 430         1274 $output .= $x{$OUTPUT_encoding}{'putc'}->($char);
1027             }
1028             }
1029             else {
1030 2770221         4828750 my $output_octets = $x{$OUTPUT_encoding}{'putc'}->($char);
1031 2770221 50 33     8473742 if (not defined ($output_octets) or ($output_octets eq '')) {
1032 0 0       0 if (defined $option->{'GETA'}) {
1033 0         0 $output .= $option->{'GETA'};
1034             }
1035             else {
1036 0         0 $output .= $x{$OUTPUT_encoding}{'putc'}->("\xF3\xB0\x85\xAB");
1037             }
1038             }
1039             else {
1040 2770221         4638268 $output .= $output_octets;
1041             }
1042             }
1043             }
1044             }
1045              
1046 2774338         5443243 $count++;
1047             }
1048              
1049 2774071         3554333 ${$_[0]} = $output;
  2774071         4828589  
1050 2774071         5967415 return $count;
1051             }
1052              
1053             #---------------------------------------------------------------------
1054             # confirm version
1055             #---------------------------------------------------------------------
1056             sub VERSION {
1057 0     0 0   my($version) = @_;
1058 0 0         if ($version ne $Jacode4e::RoundTrip::VERSION) {
1059 0           die "@{[__FILE__]} $Jacode4e::RoundTrip::VERSION isn't $version";
  0            
1060             }
1061             }
1062              
1063             #---------------------------------------------------------------------
1064             # dump encoding tables
1065             #---------------------------------------------------------------------
1066             END {
1067 28 0 33 28   0 if (
      33        
1068             ($0 eq __FILE__) and
1069             defined($ARGV[0]) and
1070             ($ARGV[0] eq '--dumptable')
1071             ) {
1072              
1073             # dump DBCS tables
1074 0         0 for my $encoding (qw(
1075             cp932 cp932ibm cp932nec sjis2004 cp00930 keis78 keis83 keis90 jef jef9p jipsj jipse letsj
1076             )) {
1077 0 0       0 open(FILE,">$0-$Jacode4e::RoundTrip::VERSION.TABLE.\U$encoding\E.txt") || die;
1078 0         0 binmode(FILE);
1079 0         0 for (my $octet1=0x00; $octet1<=0xFF; $octet1+=0x01) {
1080 0         0 for (my $octet2=0x00; $octet2<=0xF0; $octet2+=0x10) {
1081 0         0 my @line = ();
1082 0         0 for (my $column=0x00; $column<=0x0F; $column+=0x01) {
1083 0         0 my $octets = pack('CC', $octet1, $octet2 + $column);
1084 0         0 Jacode4e::RoundTrip::convert(\$octets, 'utf8', $encoding, { 'INPUT_LAYOUT'=>'D', 'GETA'=>" " });
1085 0         0 push @line, $octets;
1086             }
1087 0 0       0 if (grep(!/ /,@line) >= 1) {
1088 0         0 printf FILE ('%s %02X%02X: ', uc $encoding, $octet1, $octet2);
1089 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 0], $line[ 1], $line[ 2], $line[ 3]);
1090 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 4], $line[ 5], $line[ 6], $line[ 7]);
1091 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 8], $line[ 9], $line[10], $line[11]);
1092 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[12], $line[13], $line[14], $line[15]);
1093 0         0 print FILE "\n";
1094             }
1095             }
1096             }
1097 0         0 close(FILE);
1098             }
1099              
1100             # dump CP932X table
1101 0 0       0 open(FILE,">$0-$Jacode4e::RoundTrip::VERSION.TABLE.CP932X.txt") || die;
1102 0         0 binmode(FILE);
1103 0         0 for (my $octet1=0x00; $octet1<=0xFF; $octet1+=0x01) {
1104 0         0 for (my $octet2=0x00; $octet2<=0xF0; $octet2+=0x10) {
1105 0         0 my @line = ();
1106 0         0 for (my $column=0x00; $column<=0x0F; $column+=0x01) {
1107 0         0 my $octets = pack('CC', $octet1, $octet2 + $column);
1108 0         0 Jacode4e::RoundTrip::convert(\$octets, 'utf8', 'cp932x', { 'INPUT_LAYOUT'=>'D', 'GETA'=>" " });
1109 0         0 push @line, $octets;
1110             }
1111 0         0 for (my $column=0x00; $column<=0x0F; $column+=0x01) {
1112 0         0 my $octets = pack('CCCC', 0x9C, 0x5A, $octet1, $octet2 + $column);
1113 0         0 Jacode4e::RoundTrip::convert(\$octets, 'utf8', 'cp932x', { 'INPUT_LAYOUT'=>'D', 'GETA'=>" " });
1114 0         0 push @line, $octets;
1115             }
1116 0 0       0 if (grep(!/ /,@line) >= 1) {
1117 0         0 printf FILE ('CP932X %02X%02X: ', $octet1, $octet2);
1118 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 0], $line[ 1], $line[ 2], $line[ 3]);
1119 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 4], $line[ 5], $line[ 6], $line[ 7]);
1120 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 8], $line[ 9], $line[10], $line[11]);
1121 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[12], $line[13], $line[14], $line[15]);
1122 0         0 print FILE ' ';
1123 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[16], $line[17], $line[18], $line[19]);
1124 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[20], $line[21], $line[22], $line[23]);
1125 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[24], $line[25], $line[26], $line[27]);
1126 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[28], $line[29], $line[30], $line[31]);
1127 0         0 print FILE "\n";
1128             }
1129             }
1130             }
1131 0         0 close(FILE);
1132              
1133 0         0 exit;
1134             }
1135             }
1136              
1137             #---------------------------------------------------------------------
1138             # document
1139             #---------------------------------------------------------------------
1140              
1141             =pod
1142              
1143             =encoding utf8
1144              
1145             =head1 NAME
1146              
1147             Jacode4e::RoundTrip - Jacode4e for round-trip conversion in JIS X 0213
1148              
1149             =head1 CAUTION
1150              
1151             MUST USE SAME VERSION OF THIS SOFTWARE BOTH CONVERTING "A to B" AND "B to A"
1152             TO HAVE ROUND-TRIP CONVERSION.
1153              
1154             =head1 SYNOPSIS
1155              
1156             use FindBin;
1157             use lib "$FindBin::Bin/lib";
1158             use Jacode4e::RoundTrip;
1159            
1160             $return =
1161             Jacode4e::RoundTrip::convert(\$line, $OUTPUT_encoding, $INPUT_encoding [, { %option }]);
1162            
1163             $return
1164             Number of characters in $line
1165            
1166             $line
1167             String variable to convert
1168             After conversion, this variable is overwritten
1169            
1170             $OUTPUT_encoding, and $INPUT_encoding
1171             To convert, you must specify both $OUTPUT_encoding and $INPUT_encoding.
1172             The encodings you can specify are as follows:
1173            
1174             mnemonic means
1175             -----------------------------------------------------------------------
1176             cp932x CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1177             cp00930 IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1178             keis78 HITACHI KEIS78
1179             keis83 HITACHI KEIS83
1180             keis90 HITACHI KEIS90
1181             jef FUJITSU JEF (12 point size for printing with option OUTPUT_SHIFTING)
1182             jef9p FUJITSU JEF ( 9 point size for printing with option OUTPUT_SHIFTING)
1183             jipsj NEC JIPS(J)
1184             jipse NEC JIPS(E)
1185             letsj UNISYS LetsJ
1186             utf8 UTF-8.0 (aka UTF-8)
1187             utf8.1 UTF-8.1
1188             utf8jp UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1189             -----------------------------------------------------------------------
1190            
1191             Round-trip conversion impossible, only for reference
1192            
1193             mnemonic means
1194             -----------------------------------------------------------------------
1195             cp932 Microsoft CP932, IANA Windows-31J
1196             cp932ibm IBM CP932
1197             cp932nec NEC CP932
1198             sjis2004 JISC Shift_JIS-2004
1199             -----------------------------------------------------------------------
1200            
1201             %option
1202             The options you can specify are as follows:
1203            
1204             key mnemonic value means
1205             -----------------------------------------------------------------------
1206             INPUT_LAYOUT input record layout by 'S' and 'D' sequence
1207             'S' means one char as SBCS, 'D' means one char as DBCS
1208             each letter may optionally be followed by a number
1209             indicating the repeat count, see samples
1210             OUTPUT_SHIFTING true means use output shift code, false means not use
1211             default is false
1212             SPACE output space code in DBCS/MBCS
1213             GETA output geta code in DBCS/MBCS
1214             OVERRIDE_MAPPING hash reference of FROM => TO override mapping
1215             { "\x12\x34"=>"\x56\x78", "\x9A\xBC"=>"\xDE\xFE", }
1216             (CAUTION! override also SPACE option)
1217             -----------------------------------------------------------------------
1218              
1219             =head1 SAMPLES
1220              
1221             use FindBin;
1222             use lib "$FindBin::Bin/lib";
1223             use Jacode4e::RoundTrip;
1224             Jacode4e::RoundTrip::VERSION('2.13.81.12');
1225            
1226             while (<>) {
1227             $return =
1228             Jacode4e::RoundTrip::convert(\$_, 'cp932x', 'cp00930', {
1229             'INPUT_LAYOUT' => 'SSSDDDSSDDSDSD',
1230             'OUTPUT_SHIFTING' => 0,
1231             'SPACE' => "\x81\xA2",
1232             'GETA' => "\x81\xA1",
1233             'OVERRIDE_MAPPING' => { "\x44\x5A" => "\x81\x7C", },
1234             });
1235             print $_;
1236             }
1237            
1238             while (<>) {
1239             $return =
1240             Jacode4e::RoundTrip::convert(\$_, 'cp932x', 'cp00930', {
1241             'INPUT_LAYOUT' => 'S3D3S2D2SDSD',
1242             'OUTPUT_SHIFTING' => 0,
1243             'SPACE' => "\x81\xA2",
1244             'GETA' => "\x81\xA1",
1245             'OVERRIDE_MAPPING' => { "\x44\x5A" => "\x81\x7C", },
1246             });
1247             print $_;
1248             }
1249            
1250             while (<>) {
1251             Jacode4e::RoundTrip::convert(\$_, 'cp932ibm', 'utf8.1', {});
1252             print $_;
1253             }
1254            
1255             while (<>) {
1256             $return =
1257             Jacode4e::RoundTrip::convert(\$_, 'utf8.1', 'utf8', {
1258             # FULLWIDTH TILDE => WAVE DASH
1259             'OVERRIDE_MAPPING' => { "\xEF\xBD\x9E" => "\xE3\x80\x9C", },
1260             });
1261             print $_;
1262             }
1263              
1264             =head1 INPUT SI/SO code
1265              
1266             Wikipedia tells us Kanji shift code of each encoding of vendors.
1267             Jacode4e::RoundTrip::convert() handle SI/SO(Shift In and Shift Out) code in
1268             $line automatically. If $line has no SI/SO code, we can use option
1269             INPUT_LAYOUT instead of SI/SO code.
1270            
1271             Actually saying, we have to use option INPUT_LAYOUT almost always, if
1272             $INPUT_encoding is any of enterprise encodings.
1273            
1274             If $INPUT_encoding is any of cp932x, cp932, cp932ibm, cp932nec, and sjis2004,
1275             the INPUT_LAYOUT option is unnecessary. This is because SBCS and DBCS can be
1276             judged from the character string itself. However, you can also use the
1277             INPUT_LAYOUT option to force conversion as SBCS.
1278            
1279             ---------------------------------------------------------------------------
1280             SO(Shift Out) SI(Shift In)
1281             $INPUT_encoding KI(KANJI In) KO(KANJI Out)
1282             mnemonic switch to DBCS switch to SBCS %option
1283             ---------------------------------------------------------------------------
1284             'cp932x' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1285             'cp932' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1286             'cp932ibm' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1287             'cp932nec' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1288             'sjis2004' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1289             'cp00930' "\x0E" "\x0F" xor 'INPUT_LAYOUT' => ...
1290             'keis78' "\x0A\x42" "\x0A\x41" xor 'INPUT_LAYOUT' => ...
1291             'keis83' "\x0A\x42" "\x0A\x41" xor 'INPUT_LAYOUT' => ...
1292             'keis90' "\x0A\x42" "\x0A\x41" xor 'INPUT_LAYOUT' => ...
1293             'jef' "\x28" or "\x38" "\x29" xor 'INPUT_LAYOUT' => ...
1294             'jef9p' "\x28" or "\x38" "\x29" xor 'INPUT_LAYOUT' => ...
1295             'jipsj' "\x1A\x70" "\x1A\x71" xor 'INPUT_LAYOUT' => ...
1296             'jipse' "\x3F\x75" "\x3F\x76" xor 'INPUT_LAYOUT' => ...
1297             'letsj' "\x93\x70" "\x93\xF1" xor 'INPUT_LAYOUT' => ...
1298             'utf8' (nothing) (nothing)
1299             'utf8.1' (nothing) (nothing)
1300             'utf8jp' (nothing) (nothing)
1301             ---------------------------------------------------------------------------
1302              
1303             =head1 OUTPUT SI/SO code
1304              
1305             Jacode4e::RoundTrip::convert() doesn't output SI/SO code on default. Thus,
1306             if you need SI/SO code then you have to use option 'OUTPUT_SHIFTING' => 1.
1307            
1308             ---------------------------------------------------------------------------
1309             SO(Shift Out) SI(Shift In)
1310             $OUTPUT_encoding KI(KANJI In) KO(KANJI Out)
1311             mnemonic switch to DBCS switch to SBCS %option
1312             ---------------------------------------------------------------------------
1313             'cp932x' (nothing) (nothing)
1314             'cp932' (nothing) (nothing)
1315             'cp932ibm' (nothing) (nothing)
1316             'cp932nec' (nothing) (nothing)
1317             'sjis2004' (nothing) (nothing)
1318             'cp00930' "\x0E" "\x0F" 'OUTPUT_SHIFTING' => 1
1319             'keis78' "\x0A\x42" "\x0A\x41" 'OUTPUT_SHIFTING' => 1
1320             'keis83' "\x0A\x42" "\x0A\x41" 'OUTPUT_SHIFTING' => 1
1321             'keis90' "\x0A\x42" "\x0A\x41" 'OUTPUT_SHIFTING' => 1
1322             'jef' "\x28" "\x29" 'OUTPUT_SHIFTING' => 1
1323             'jef9p' "\x38" "\x29" 'OUTPUT_SHIFTING' => 1
1324             'jipsj' "\x1A\x70" "\x1A\x71" 'OUTPUT_SHIFTING' => 1
1325             'jipse' "\x3F\x75" "\x3F\x76" 'OUTPUT_SHIFTING' => 1
1326             'letsj' "\x93\x70" "\x93\xF1" 'OUTPUT_SHIFTING' => 1
1327             'utf8' (nothing) (nothing)
1328             'utf8.1' (nothing) (nothing)
1329             'utf8jp' (nothing) (nothing)
1330             ---------------------------------------------------------------------------
1331              
1332             =head1 OUTPUT DBCS/MBCS SPACE code
1333              
1334             The default space code is as follows.
1335             You can change the space code using the option 'SPACE' if you want.
1336            
1337             ---------------------------------------------------------------------------
1338             $OUTPUT_encoding
1339             mnemonic default code %option
1340             ---------------------------------------------------------------------------
1341             'cp932x' "\x81\x40"
1342             'cp932' "\x81\x40"
1343             'cp932ibm' "\x81\x40"
1344             'cp932nec' "\x81\x40"
1345             'sjis2004' "\x81\x40" 'SPACE' => "\x20\x20" for CP/M-86 compatible
1346             'cp00930' "\x40\x40"
1347             'keis78' "\xA1\xA1"
1348             'keis83' "\xA1\xA1"
1349             'keis90' "\xA1\xA1"
1350             'jef' "\xA1\xA1" 'SPACE' => "\x40\x40" for 99FR-0012-2 and 99FR-0012-3 compatible
1351             'jef9p' "\xA1\xA1" 'SPACE' => "\x40\x40" for 99FR-0012-2 and 99FR-0012-3 compatible
1352             'jipsj' "\x21\x21"
1353             'jipse' "\x4F\x4F"
1354             'letsj' "\x20\x20" 'SPACE' => "\xA1\xA1" for EUC-JP like space
1355             'utf8' "\xE3\x80\x80"
1356             'utf8.1' "\xE3\x80\x80"
1357             'utf8jp' "\xF3\xB0\x84\x80"
1358             ---------------------------------------------------------------------------
1359              
1360             =head1 OUTPUT DBCS/MBCS GETA code
1361              
1362             If a character isn't included in $OUTPUT_encoding set, GETA code will be
1363             used instead of converted code.
1364            
1365             The default GETA code is as follows.
1366             You can change GETA code using option 'GETA' if you want.
1367            
1368             "GETA" doesn't mean "GETA", but means "GETA-MARK".
1369            
1370             GETA is Japanese wooden shoes that made for walk on paddy field. One GETA
1371             has two teeth, and they make GETA-MARK on the ground by bite the earth
1372             twice. Thus, GETA code is double byte code, or often multibyte code.
1373            
1374             ---------------------------------------------------------------------------
1375             $OUTPUT_encoding
1376             mnemonic default code %option sample
1377             ---------------------------------------------------------------------------
1378             'cp932x' "\x81\xAC" 'GETA' => "\x81\xA1"
1379             'cp932' "\x81\xAC" 'GETA' => "\x81\x9C"
1380             'cp932ibm' "\x81\xAC" 'GETA' => "\x81\x9C"
1381             'cp932nec' "\x81\xAC" 'GETA' => "\x81\x9C"
1382             'sjis2004' "\x81\xAC" 'GETA' => "\x81\xFC"
1383             'cp00930' "\x44\x7D"
1384             'keis78' "\xA2\xAE"
1385             'keis83' "\xA2\xAE"
1386             'keis90' "\xA2\xAE"
1387             'jef' "\xA2\xAE"
1388             'jef9p' "\xA2\xAE"
1389             'jipsj' "\x22\x2E"
1390             'jipse' "\x7F\x4B"
1391             'letsj' "\xA2\xAE"
1392             'utf8' "\xE3\x80\x93"
1393             'utf8.1' "\xE3\x80\x93"
1394             'utf8jp' "\xF3\xB0\x85\xAB"
1395             ---------------------------------------------------------------------------
1396              
1397             =head1 RAISON D'ETRE
1398              
1399             This software has been developed for use promotion of JIS X 0213.
1400            
1401             Jacode4e::RoundTrip module can round-trip convert JIS X 0213 characters
1402             in Japanese main-frames or enterprise servers each other, using its
1403             user-defined area.
1404            
1405             The encodings that can be round-trip converted are cp932x, cp00930,
1406             keis78, keis83, keis90, jef, jef9p, jipsj, jipse, letsj, utf8, and utf8jp.
1407            
1408             This table shows shortage to support JIS X 0213 in each encoding
1409             ----------------------------------------------------
1410             Jacode4e short- user-def.
1411             mnemonic supported age area
1412             ----------------------------------------------------
1413             cp932x 11,285 0 --
1414             cp00930 11,257 28 1,880
1415             keis78 8,011 3,274 27,170
1416             keis83 8,011 3,274 27,170
1417             keis90 8,012 3,273 27,170
1418             jef, jef9p 8,871 2,414 3,102
1419             jipsj, jipse 8,825 2,460 3,948
1420             letsj 9,799 1,486 2,632
1421             utf8 11,220 65 6,400
1422             utf8.1 11,220 65 6,400
1423             utf8jp 11,285 0 --
1424             ----------------------------------------------------
1425            
1426             cp00930 uses 28 code points from its user-defined area. Similarly, keis78
1427             and keis83 use 3,274, keis90 uses 3,273, jef and jef9p use 2,414, jipsj
1428             and jipse use 2,460, letsj uses 1,486, utf8 and utf8.1 use 65.
1429            
1430             Yes, you cannot use your gaiji on Jacode4e::RoundTrip module, you see.
1431            
1432             Jacode4e::RoundTrip module doesn't work as Jacode4e. And Jacode4e module
1433             doesn't work as Jacode4e::RoundTrip, too.
1434            
1435             This software is useful for processing your JIS X 0213 data by other
1436             system, and importing it again into your system.
1437              
1438             =head1 WHAT IS "CP932X"?
1439              
1440             =over 4
1441              
1442             =item * "cp932x" as mnemonic
1443              
1444             =item * CP932X is CP932
1445              
1446             =item * Pronounce [si: pi: nain thri: tu: kai] in English
1447              
1448             =item * Pronounce [shi: pi: kju: san' ni kai] in Japanese
1449              
1450             =item * [si: pi: nain thri: tu: iks] is reserved for Microsoft Corporation ;-P
1451              
1452             =item * CP932 upper compatible
1453              
1454             =item * Supports JIS X 0213 character set
1455              
1456             =item * Used ghost character "\x9C\x5A" as single shift code
1457              
1458             =item * Used "\x9C\x5A\x9C\x5A" for single "\x9C\x5A"
1459              
1460             =item * You can use private use characters you made
1461              
1462             =item * You can use your operating system, network, and database.
1463              
1464             =item * In most cases, application programs can be used as it is.
1465              
1466             =back
1467              
1468             =head1 WHAT IS "UTF-8-SPUA-JP"?
1469              
1470             =over 4
1471              
1472             =item * "utf8jp" as mnemonic
1473              
1474             =item * UTF-8-SPUA-JP is UTF-8
1475              
1476             =item * Internal character encoding of Jacode4e and Jacode4e::RoundTrip, universally
1477              
1478             =item * Implements JIS X 0213 character set on to Unicode Supplementary Private Use Area-A
1479              
1480             =item * Code point ordered by JIS level, plane, row, cell
1481              
1482             =item * Uniformly length encoding
1483              
1484             =item * No grapheme clustering, one character by uniquely code point
1485              
1486             =back
1487              
1488             =head1 CP932 vs. CP932IBM
1489              
1490             A merit of the CP932IBM is that all of the extended characters are outside of
1491             the JIS row number 1 to 94. CP932IBM is useful when you transfer data to
1492             enterprise system.
1493            
1494             The following is the difference between CP932 and CP932IBM.
1495            
1496             #+++++++----------------------------------------------------------------------------------------------------------- CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1497             #||||||| ++++------------------------------------------------------------------------------------------------------ Microsoft CP932, IANA Windows-31J
1498             #||||||| |||| ++++------------------------------------------------------------------------------------------------- IBM CP932
1499             #||||||| |||| |||| ++++-------------------------------------------------------------------------------------------- NEC CP932
1500             #||||||| |||| |||| |||| ++++--------------------------------------------------------------------------------------- JISC Shift_JIS-2004
1501             #||||||| |||| |||| |||| |||| ++++---------------------------------------------------------------------------------- IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1502             #||||||| |||| |||| |||| |||| |||| ++++----------------------------------------------------------------------------- HITACHI KEIS78
1503             #||||||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------------ HITACHI KEIS83
1504             #||||||| |||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------- HITACHI KEIS90
1505             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| ++++-------------------------------------------------------------- FUJITSU JEF
1506             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++--------------------------------------------------------- NEC JIPS(J)
1507             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++---------------------------------------------------- NEC JIPS(E)
1508             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++----------------------------------------------- UNISYS LetsJ
1509             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| +++++++++------------------------------------- Unicode
1510             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| ++++++++++++------------------------ UTF-8.0 (aka UTF-8)
1511             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| ++++++++++++----------- UTF-8.1
1512             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| |||||||||||| ++++++++-- UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1513             #2345678 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 123456789 123456789012 123456789012 12345678
1514             #VVVVVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVV
1515             8754 8754 FA4A 8754 8754 41F1 74B1 74B1 74B1 77DE 2D35 60F5 -- 2160 E285A0 E285A0 F3B095BC
1516             8755 8755 FA4B 8755 8755 41F2 74B2 74B2 74B2 77DF 2D36 60F6 -- 2161 E285A1 E285A1 F3B095BD
1517             8756 8756 FA4C 8756 8756 41F3 74B3 74B3 74B3 77E0 2D37 60F7 -- 2162 E285A2 E285A2 F3B095BE
1518             8757 8757 FA4D 8757 8757 41F4 74B4 74B4 74B4 77E1 2D38 60F8 -- 2163 E285A3 E285A3 F3B095BF
1519             8758 8758 FA4E 8758 8758 41F5 74B5 74B5 74B5 77E2 2D39 60F9 -- 2164 E285A4 E285A4 F3B09680
1520             8759 8759 FA4F 8759 8759 41F6 74B6 74B6 74B6 77E3 2D3A 607A -- 2165 E285A5 E285A5 F3B09681
1521             875A 875A FA50 875A 875A 41F7 74B7 74B7 74B7 77E4 2D3B 605E -- 2166 E285A6 E285A6 F3B09682
1522             875B 875B FA51 875B 875B 41F8 74B8 74B8 74B8 77E5 2D3C 604C -- 2167 E285A7 E285A7 F3B09683
1523             875C 875C FA52 875C 875C 41F9 74B9 74B9 74B9 77E6 2D3D 607E -- 2168 E285A8 E285A8 F3B09684
1524             875D 875D FA53 875D 875D 41FA 74BA 74BA 74BA 77E7 2D3E 606E -- 2169 E285A9 E285A9 F3B09685
1525             8782 8782 FA59 8782 8782 446E 72BE 72BE 72BE 76FA 2D62 6059 A271 2116 E28496 E28496 F3B096A9
1526             8784 8784 FA5A 8784 8784 446F 72B8 72B8 72B8 76F6 2D64 6063 -- 2121 E284A1 E284A1 F3B096AB
1527             878A 878A FA58 878A 878A 446D 73D0 73D0 73D0 78D5 2D6A 6069 -- 3231 E388B1 E388B1 F3B096B1
1528              
1529             =head1 CP932 vs. CP932NEC
1530              
1531             A merit of the CP932NEC is that all of the extended characters are inside the
1532             JIS row number 1 to 94. For example, CP932NEC is useful when you convert data
1533             to EUC-JP encoding.
1534            
1535             The following is the difference between CP932 and CP932NEC.
1536            
1537             #+++++++----------------------------------------------------------------------------------------------------------- CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1538             #||||||| ++++------------------------------------------------------------------------------------------------------ Microsoft CP932, IANA Windows-31J
1539             #||||||| |||| ++++------------------------------------------------------------------------------------------------- IBM CP932
1540             #||||||| |||| |||| ++++-------------------------------------------------------------------------------------------- NEC CP932
1541             #||||||| |||| |||| |||| ++++--------------------------------------------------------------------------------------- JISC Shift_JIS-2004
1542             #||||||| |||| |||| |||| |||| ++++---------------------------------------------------------------------------------- IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1543             #||||||| |||| |||| |||| |||| |||| ++++----------------------------------------------------------------------------- HITACHI KEIS78
1544             #||||||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------------ HITACHI KEIS83
1545             #||||||| |||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------- HITACHI KEIS90
1546             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| ++++-------------------------------------------------------------- FUJITSU JEF
1547             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++--------------------------------------------------------- NEC JIPS(J)
1548             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++---------------------------------------------------- NEC JIPS(E)
1549             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++----------------------------------------------- UNISYS LetsJ
1550             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| +++++++++------------------------------------- Unicode
1551             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| ++++++++++++------------------------ UTF-8.0 (aka UTF-8)
1552             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| ++++++++++++----------- UTF-8.1
1553             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| |||||||||||| ++++++++-- UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1554             #2345678 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 123456789 123456789012 123456789012 12345678
1555             #VVVVVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVV
1556             FA40 FA40 FA40 EEEF 86B3 41B1 74C1 74C1 74C1 77EB A2BD 428E -- 2170 E285B0 E285B0 F3B2AB9C
1557             FA41 FA41 FA41 EEF0 86B4 41B2 74C2 74C2 74C2 77EC A2BE 428F -- 2171 E285B1 E285B1 F3B2AB9D
1558             FA42 FA42 FA42 EEF1 86B5 41B3 74C3 74C3 74C3 77ED A2BF 4290 -- 2172 E285B2 E285B2 F3B2AB9E
1559             FA43 FA43 FA43 EEF2 86B6 41B4 74C4 74C4 74C4 77EE A2C0 4291 -- 2173 E285B3 E285B3 F3B2AB9F
1560             FA44 FA44 FA44 EEF3 86B7 41B5 74C5 74C5 74C5 77EF A2C1 4292 -- 2174 E285B4 E285B4 F3B2ABA0
1561             FA45 FA45 FA45 EEF4 86B8 41B6 74C6 74C6 74C6 77F0 A2C2 4293 -- 2175 E285B5 E285B5 F3B2ABA1
1562             FA46 FA46 FA46 EEF5 86B9 41B7 74C7 74C7 74C7 77F1 A2C3 4294 -- 2176 E285B6 E285B6 F3B2ABA2
1563             FA47 FA47 FA47 EEF6 86BA 41B8 74C8 74C8 74C8 77F2 A2C4 4295 -- 2177 E285B7 E285B7 F3B2ABA3
1564             FA48 FA48 FA48 EEF7 86BB 41B9 74C9 74C9 74C9 77F3 A2C5 4296 -- 2178 E285B8 E285B8 F3B2ABA4
1565             FA49 FA49 FA49 EEF8 86BC 41BA 74CA 74CA 74CA 77F4 A2C6 4297 -- 2179 E285B9 E285B9 F3B2ABA5
1566             FA55 FA55 FA55 EEFA -- E9F5 -- -- -- 76A1 A5FB 45FB -- FFE4 EFBFA4 EFBFA4 F3B2ABB1
1567             FA56 FA56 FA56 EEFB 81AD 427D -- -- -- 76A2 A3F9 43EF -- FF07 EFBC87 EFBC87 F3B2ABB2
1568             FA57 FA57 FA57 EEFC 81AE 427F -- -- -- 76A3 A3FA 43FA -- FF02 EFBC82 EFBC82 F3B2ABB3
1569             FA5C FA5C FA5C ED40 EDB5 51BF 67FE 67FE 67FE 5FDC C9D8 9AAE D463 7E8A E7BA8A E7BA8A F3B2ABB8
1570             FA5D FA5D FA5D ED41 EE8E 51DA 69E8 69E8 69E8 64B5 CEA9 A349 DC5F 891C E8A49C E8A49C F3B2ABB9
1571             FA5E FA5E FA5E ED42 EF58 51F7 6CC7 6CC7 6CC7 6AD9 D2B9 A789 E469 9348 E98D88 E98D88 F3B2ABBA
1572             FA5F FA5F FA5F ED43 EF4D 524B 6CA3 6CA3 6CA3 69FE D1ED A6CF E378 9288 E98A88 E98A88 F3B2ABBB
1573             FA60 FA60 FA60 ED44 F8D3 527B 69AE 69AE 69AE 62C4 CCCA 9F9D D921 84DC E8939C E8939C F3B2ABBC
1574             FA61 FA61 FA61 ED45 87B7 5294 59E4 59E4 59E4 42C7 B2F6 82EC B13B 4FC9 E4BF89 E4BF89 F3B2ABBD
1575             FA62 FA62 FA62 ED46 F580 529E 63FE 63FE 63FE 70E1 C2FE 93FE -- 70BB E782BB E782BB F3B2ABBE
1576             FA63 FA63 FA63 ED47 EB54 52EB 60F8 60F8 60F8 51A3 BDBF 8E90 C22D 6631 E698B1 E698B1 F3B2ABBF
1577             FA64 FA64 FA64 ED48 EB89 5386 61DC 61DC 61DC 70CD BFB7 9087 C37C 68C8 E6A388 E6A388 F3B2AC80
1578             FA65 FA65 FA65 ED49 FB42 5394 6CBB 6CBB 6CBB 6AC9 D2B6 A786 E450 92F9 E98BB9 E98BB9 F3B2AC81
1579             FA66 FA66 FA66 ED4A EB56 5397 60D3 60D3 60D3 51FC BDD5 8EAA C23F 66FB E69BBB E69BBB F3B2AC82
1580             FA67 FA67 FA67 ED4B EAB8 53C7 5ED8 5ED8 5ED8 4CF6 BAC7 8A98 BC74 5F45 E5BD85 E5BD85 F3B2AC83
1581             FA68 FA68 FA68 ED4C 87A2 5644 59AC 59AC 59AC 41AC B2AB 8252 B029 4E28 E4B8A8 E4B8A8 F3B2AC84
1582             FA69 FA69 FA69 ED4D 87A6 565D 59C1 59C1 59C1 41E8 B2C2 8293 B048 4EE1 E4BBA1 E4BBA1 F3B2AC85
1583             FA6A FA6A FA6A ED4E -- 5662 59C8 59C8 59C8 43CF B2D3 82A8 -- 4EFC E4BBBC E4BBBC F3B2AC86
1584             FA6B FA6B FA6B ED4F F05E 5665 59C7 59C7 59C7 41EF B2CD 82A2 B052 4F00 E4BC80 E4BC80 F3B2AC87
1585             FA6C FA6C FA6C ED50 87A9 5666 9FA1 9FA1 9FA1 41F0 B2CE 82A3 B054 4F03 E4BC83 E4BC83 F3B2AC88
1586             FA6D FA6D FA6D ED51 -- 566A 59CE 59CE 59CE 41FB B2DB 82BB B063 4F39 E4BCB9 E4BCB9 F3B2AC89
1587             FA6E FA6E FA6E ED52 87AE 566E 59CB 59CB 59CB 42A8 B2D6 82AC B06E 4F56 E4BD96 E4BD96 F3B2AC8A
1588             FA6F FA6F FA6F ED53 F06C 5670 59DB 59DB 59DB 42B5 B2EA 82CC B127 4F92 E4BE92 E4BE92 F3B2AC8B
1589             FA70 FA70 FA70 ED54 87B3 5671 59E0 59E0 59E0 42B3 B2E7 82B9 B123 4F8A E4BE8A E4BE8A F3B2AC8C
1590             FA71 FA71 FA71 ED55 F06D 5674 59DA 59DA 59DA 42B9 BADA 8ABA B12C 4F9A E4BE9A E4BE9A F3B2AC8D
1591             FA72 FA72 FA72 ED56 87B4 567B 59D9 59D9 59D9 42B7 B2E1 82B3 B129 4F94 E4BE94 E4BE94 F3B2AC8E
1592             FA73 FA73 FA73 ED57 -- 5686 59E6 59E6 59E6 42CA B2F5 82EB B13E 4FCD E4BF8D E4BF8D F3B2AC8F
1593             FA74 FA74 FA74 ED58 87BF 568A 5AA1 5AA1 5AA1 42E7 B3B2 8382 B15F 5040 E58180 E58180 F3B2AC90
1594             FA75 FA75 FA75 ED59 F07C 5691 59F1 59F1 59F1 42DF B3A1 8341 B158 5022 E580A2 E580A2 F3B2AC91
1595             FA76 FA76 FA76 ED5A -- 5694 59FA 59FA 59FA 43D0 B3B3 8383 B148 4FFF E4BFBF E4BFBF F3B2AC92
1596             FA77 FA77 FA77 ED5B F07B 5698 59F3 59F3 59F3 42DE B3A6 8346 B157 501E E5809E E5809E F3B2AC93
1597             FA78 FA78 FA78 ED5C F080 56A2 5AA7 5AA7 5AA7 42E9 B3C0 8391 B163 5046 E58186 E58186 F3B2AC94
1598             FA79 FA79 FA79 ED5D F087 56A3 5AAC 5AAC 5AAC 42F5 B3C3 8394 B174 5070 E581B0 E581B0 F3B2AC95
1599             FA7A FA7A FA7A ED5E F07E 56A4 5AA6 5AA6 5AA6 42E8 B3C4 8395 B161 5042 E58182 E58182 F3B2AC96
1600             FA7B FA7B FA7B ED5F 87C2 56A8 5AB0 5AB0 5AB0 42FC B3C6 8397 B223 5094 E58294 E58294 F3B2AC97
1601             FA7C FA7C FA7C ED60 -- 56B2 5ABE 5ABE 5ABE 43B9 B3D2 83A7 -- 50F4 E583B4 E583B4 F3B2AC98
1602             FA7D FA7D FA7D ED61 -- 56B5 5AC1 5AC1 5AC1 43B2 B3D5 83AA B23B 50D8 E58398 E58398 F3B2AC99
1603             FA7E FA7E FA7E ED62 87CD 56C9 5ACB 5ACB 5ACB 43D3 B3E8 83CA B266 514A E5858A E5858A F3B2AC9A
1604             FA80 FA80 FA80 ED63 -- 56CE 5AD3 5AD3 5AD3 43D9 B3F0 83DC B26D 5164 E585A4 E585A4 F3B2AC9B
1605             FA81 FA81 FA81 ED64 87D2 56DC 5AE1 5AE1 5AE1 43F2 B3F7 83ED B275 519D E5869D E5869D F3B2AC9C
1606             FA82 FA82 FA82 ED65 -- 56E8 5AE4 5AE4 5AE4 43F7 B4A2 8442 B27C 51BE E586BE E586BE F3B2AC9D
1607             FA83 FA83 FA83 ED66 -- 56EF 6DC3 6DC3 6DC3 44AC D4A8 A948 -- 51EC E587AC E587AC F3B2AC9E
1608             FA84 FA84 FA84 ED67 87DB 56F7 9FA3 9FA3 9FA3 44B4 B4B4 8484 B335 5215 E58895 E58895 F3B2AC9F
1609             FA85 FA85 FA85 ED68 -- 574F 5AF0 5AF0 5AF0 44F7 B4C1 8492 B358 529C E58A9C E58A9C F3B2ACA0
1610             FA86 FA86 FA86 ED69 F162 5750 5AF1 5AF1 5AF1 44D2 B4C3 8494 B35B 52A6 E58AA6 E58AA6 F3B2ACA1
1611             FA87 FA87 FA87 ED6A -- 5756 5AF7 5AF7 5AF7 44FA B4D0 84A5 B365 52C0 E58B80 E58B80 F3B2ACA2
1612             FA88 FA88 FA88 ED6B 87E5 5758 5BA1 5BA1 5BA1 44ED B4D8 84AE B36E 52DB E58B9B E58B9B F3B2ACA3
1613             FA89 FA89 FA89 ED6C 87E9 5761 5BA9 5BA9 5BA9 45A3 B4E8 84CA B37B 5300 E58C80 E58C80 F3B2ACA4
1614             FA8A FA8A FA8A ED6D 87EA 5763 5BAB 5BAB 5BAB 45A8 B4EC 84CE -- 5307 E58C87 E58C87 F3B2ACA5
1615             FA8B FA8B FA8B ED6E F16D 576B 5BAF 5BAF 5BAF 45B3 B4EF 84DB -- 5324 E58CA4 E58CA4 F3B2ACA6
1616             FA8C FA8C FA8C ED6F -- 577C 5BBC 5BBC 5BBC 45D2 B5A7 8547 B440 5372 E58DB2 E58DB2 F3B2ACA7
1617             FA8D FA8D FA8D ED70 87F0 5780 5BC4 5BC4 5BC4 45DB B5AD 8554 B447 5393 E58E93 E58E93 F3B2ACA8
1618             FA8E FA8E FA8E ED71 87F2 5787 5BC9 5BC9 5BC9 45E2 B5B1 8581 B450 53B2 E58EB2 E58EB2 F3B2ACA9
1619             FA8F FA8F FA8F ED72 -- 578B 5BCE 5BCE 5BCE 45F3 B5BC 858D B45E 53DD E58F9D E58F9D F3B2ACAA
1620             FA90 FA90 FA90 ED73 -- 578E 5BD3 5BD3 5BD3 45F2 B5BE 858F -- FA0E EFA88E EFA88E F3B2ACAB
1621             FA91 FA91 FA91 ED74 87F6 57A9 5BDB 5BDB 5BDB 46C4 B5D3 85A8 B52A 549C E5929C E5929C F3B2ACAC
1622             FA92 FA92 FA92 ED75 F18C 57AE 5BDA 5BDA 5BDA 46C1 B5CF 85A4 -- 548A E5928A E5928A F3B2ACAD
1623             FA93 FA93 FA93 ED76 8840 57BD 5BE1 5BE1 5BE1 46C9 B5DC 85BC B52F 54A9 E592A9 E592A9 F3B2ACAE
1624             FA94 FA94 FA94 ED77 8842 57C0 5BE3 5BE3 5BE3 45FA B5E0 85B2 B544 54FF E593BF E593BF F3B2ACAF
1625             FA95 FA95 FA95 ED78 8849 57DE 5BED 5BED 5BED 45F6 B5EE 85DA B568 5586 E59686 E59686 F3B2ACB0
1626             FA96 FA96 FA96 ED79 -- 5860 5CB2 5CB2 5CB2 48C9 B6D6 86AC -- 5759 E59D99 E59D99 F3B2ACB1
1627             FA97 FA97 FA97 ED7A -- 5863 5CB6 5CB6 5CB6 48CA B6DE 86BE B742 5765 E59DA5 E59DA5 F3B2ACB2
1628             FA98 FA98 FA98 ED7B F1EA 586C 5CB9 5CB9 5CB9 48CB B6E3 86B5 B764 57AC E59EAC E59EAC F3B2ACB3
1629             FA99 FA99 FA99 ED7C 886E 5870 5CBD 5CBD 5CBD 47F7 B6E5 86B7 B768 57C8 E59F88 E59F88 F3B2ACB4
1630             FA9A FA9A FA9A ED7D 886D 5873 9FA6 9FA6 9FA6 47F6 B6E6 86B8 B767 57C7 E59F87 E59F87 F3B2ACB5
1631             FA9B FA9B FA9B ED7E 886A 5877 5CBB 5CBB 5CBB 48CC B6E7 86B9 -- FA0F EFA88F EFA88F F3B2ACB6
1632             FA9C FA9C FA9C ED80 8876 5882 C4CD 5CC7 5CC7 C4CD 444D C4D4 -- FA10 EFA890 EFA890 F3B2ACB7
1633             FA9D FA9D FA9D ED81 887C 588A 5CD1 5CD1 5CD1 48BB B7A8 8748 -- 589E E5A29E E5A29E F3B2ACB8
1634             FA9E FA9E FA9E ED82 -- 588C 5CD3 5CD3 5CD3 48CD B7AE 8755 B84E 58B2 E5A2B2 E5A2B2 F3B2ACB9
1635             FA9F FA9F FA9F ED83 F259 58A1 5BCD 5BCD 5BCD 48D0 B7B8 8788 B861 590B E5A48B E5A48B F3B2ACBA
1636             FAA0 FAA0 FAA0 ED84 -- 58AD 5CE4 5CE4 5CE4 48E3 B7CB 879E B875 5953 E5A593 E5A593 F3B2ACBB
1637             FAA1 FAA1 FAA1 ED85 F264 58B0 5CE6 5CE6 5CE6 48E4 B7CF 87A4 B877 595B E5A59B E5A59B F3B2ACBC
1638             FAA2 FAA2 FAA2 ED86 8889 58B1 5CE8 5CE8 5CE8 48E5 B7CE 87A3 B878 595D E5A59D E5A59D F3B2ACBD
1639             FAA3 FAA3 FAA3 ED87 -- 58B2 5CE9 5CE9 5CE9 48EB B7D3 87A8 B87C 5963 E5A5A3 E5A5A3 F3B2ACBE
1640             FAA4 FAA4 FAA4 ED88 888D 58BE 5CF4 5CF4 5CF4 49A3 B7DB 87BB B92F 59A4 E5A6A4 E5A6A4 F3B2ACBF
1641             FAA5 FAA5 FAA5 ED89 -- 58C0 5CF7 5CF7 5CF7 49F0 B7E4 87B6 B937 59BA E5A6BA E5A6BA F3B2AD80
1642             FAA6 FAA6 FAA6 ED8A 9875 58EC 5DB3 5DB3 5DB3 49F2 B8B4 8884 BA3E 5B56 E5AD96 E5AD96 F3B2AD81
1643             FAA7 FAA7 FAA7 ED8B F0A2 58FC 5DC2 5DC2 5DC2 4AC9 B8CA 889D BA5B 5BC0 E5AF80 E5AF80 F3B2AD82
1644             FAA8 FAA8 FAA8 ED8C ECC7 58FE 5DC5 5DC5 5DC5 4ABD B8CC 889F CD2A 752F E794AF E794AF F3B2AD83
1645             FAA9 FAA9 FAA9 ED8D 9878 5942 5DC6 5DC6 5DC6 4AC0 B8CD 88A2 BA61 5BD8 E5AF98 E5AF98 F3B2AD84
1646             FAAA FAAA FAAA ED8E 9879 5944 5DC7 5DC7 5DC7 4AC6 B8D4 88A9 -- 5BEC E5AFAC E5AFAC F3B2AD85
1647             FAAB FAAB FAAB ED8F 987B 5951 5DD2 5DD2 5DD2 4AD4 B8E3 88B5 BA6B 5C1E E5B09E E5B09E F3B2AD86
1648             FAAC FAAC FAAC ED90 F0C1 5967 5DDE 5DDE 5DDE 4AF1 B8FB 88FB BB33 5CA6 E5B2A6 E5B2A6 F3B2AD87
1649             FAAD FAAD FAAD ED91 9889 5968 5DDD 5DDD 5DDD 4AF3 B8F9 88EF BB38 5CBA E5B2BA E5B2BA F3B2AD88
1650             FAAE FAAE FAAE ED92 -- 5970 5DE6 5DE6 5DE6 4BE4 B9A9 8949 -- 5CF5 E5B3B5 E5B3B5 F3B2AD89
1651             FAAF FAAF FAAF ED93 9891 5978 5DE8 5DE8 5DE8 4AFB B9B1 8981 BB4A 5D27 E5B4A7 E5B4A7 F3B2AD8A
1652             FAB0 FAB0 FAB0 ED94 9895 597F 5DF0 5DF0 5DF0 4BA3 C6B7 9787 -- 5D53 E5B593 E5B593 F3B2AD8B
1653             FAB1 FAB1 FAB1 ED95 9892 5980 5DEC 5DEC 5DEC 4BD0 B9BA 898A -- FA11 EFA891 EFA891 F3B2AD8C
1654             FAB2 FAB2 FAB2 ED96 F0D3 5984 5DEF 5DEF 5DEF 4BA2 B9BD 898E BB50 5D42 E5B582 E5B582 F3B2AD8D
1655             FAB3 FAB3 FAB3 ED97 9897 5987 9FA9 9FA9 9FA9 4BD3 B9C0 8991 BB5E 5D6D E5B5AD E5B5AD F3B2AD8E
1656             FAB4 FAB4 FAB4 ED98 989C 5993 5EA3 5EA3 5EA3 4BDF B9D3 89A8 BB74 5DB8 E5B6B8 E5B6B8 F3B2AD8F
1657             FAB5 FAB5 FAB5 ED99 F0E5 5995 5EA5 5EA5 5EA5 4BE0 B9D5 89AA BB75 5DB9 E5B6B9 E5B6B9 F3B2AD90
1658             FAB6 FAB6 FAB6 ED9A -- 5997 5EA7 5EA7 5EA7 4BE5 B9DA 89BA BB79 5DD0 E5B790 E5B790 F3B2AD91
1659             FAB7 FAB7 FAB7 ED9B -- 59C7 5ED2 5ED2 5ED2 4CEB BABF 8A90 BC64 5F21 E5BCA1 E5BCA1 F3B2AD92
1660             FAB8 FAB8 FAB8 ED9C EAB4 59CB 5ED3 5ED3 5ED3 4CEE BAC1 8A92 BC6D 5F34 E5BCB4 E5BCB4 F3B2AD93
1661             FAB9 FAB9 FAB9 ED9D EABC 59D8 5FCA 5FCA 5FCA 4DA2 BAD1 8AA6 BC7E 5F67 E5BDA7 E5BDA7 F3B2AD94
1662             FABA FABA FABA ED9E EAC3 59E8 5EE6 5EE6 5EE6 4DC0 BAEC 8ACE -- 5FB7 E5BEB7 E5BEB7 F3B2AD95
1663             FABB FABB FABB ED9F EAC5 59F1 5EEE 5EEE 5EEE 4DC7 BAFE 8AFE BD42 5FDE E5BF9E E5BF9E F3B2AD96
1664             FABC FABC FABC EDA0 -- 5A44 5EF8 5EF8 5EF8 4DCC BBA9 8C49 BD67 605D E6819D E6819D F3B2AD97
1665             FABD FABD FABD EDA1 -- 5A51 5EF9 5EF9 5EF9 4EA8 BBB1 8C81 -- 6085 E68285 E68285 F3B2AD98
1666             FABE FABE FABE EDA2 F2CB 5A57 5EF6 5EF6 5EF6 4DD0 B5E5 85B7 BD70 608A E6828A E6828A F3B2AD99
1667             FABF FABF FABF EDA3 -- 5A5F 5FA5 5FA5 5FA5 4EC1 BBC4 8C95 BE30 60DE E6839E E6839E F3B2AD9A
1668             FAC0 FAC0 FAC0 EDA4 EAD3 5A65 5FA3 5FA3 5FA3 4EBD BBBD 8C8E BE2C 60D5 E68395 E68395 F3B2AD9B
1669             FAC1 FAC1 FAC1 EDA5 -- 5A67 5FAA 5FAA 5FAA 4EED BBC9 8C9A -- 6120 E684A0 E684A0 F3B2AD9C
1670             FAC2 FAC2 FAC2 EDA6 F2D6 5A68 5FAD 5FAD 5FAD 4EC2 BBCE 8CA3 BE33 60F2 E683B2 E683B2 F3B2AD9D
1671             FAC3 FAC3 FAC3 EDA7 -- 5A76 5FAF 5FAF 5FAF 4EEE BBD4 8CA9 BE3D 6111 E68491 E68491 F3B2AD9E
1672             FAC4 FAC4 FAC4 EDA8 EAD9 5A79 5FB1 5FB1 5FB1 4ED0 BBD6 8CAC BE4D 6137 E684B7 E684B7 F3B2AD9F
1673             FAC5 FAC5 FAC5 EDA9 EAD8 5A7E 5FB3 5FB3 5FB3 4ECE BBD8 8CAE BE49 6130 E684B0 E684B0 F3B2ADA0
1674             FAC6 FAC6 FAC6 EDAA F2E7 5A94 5FBE 5FBE 5FBE 4EDB B6A8 8648 BE64 6198 E68698 E68698 F3B2ADA1
1675             FAC7 FAC7 FAC7 EDAB -- 5AB5 5BD7 5BD7 5BD7 4EF7 BBF9 8CEF BF28 6213 E68893 E68893 F3B2ADA2
1676             FAC8 FAC8 FAC8 EDAC F341 5ADA 5FD6 5FD6 5FD6 4FB5 BCB1 8D81 BF49 62A6 E68AA6 E68AA6 F3B2ADA3
1677             FAC9 FAC9 FAC9 EDAD EAF2 5AFB 5FE2 5FE2 5FE2 4FED BCCC 8D9F C044 63F5 E68FB5 E68FB5 F3B2ADA4
1678             FACA FACA FACA EDAE EAF8 5B50 5FEB 5FEB 5FEB 4FFA BCD9 8DAF C064 6460 E691A0 E691A0 F3B2ADA5
1679             FACB FACB FACB EDAF F36F 5B53 5FEE 5FEE 5FEE 50A2 BCDB 8DBB C074 649D E6929D E6929D F3B2ADA6
1680             FACC FACC FACC EDB0 EAFA 5B54 5FF2 5FF2 5FF2 4FA7 BCDC 8DBC C126 64CE E6938E E6938E F3B2ADA7
1681             FACD FACD FACD EDB1 -- 5B7E 5FF8 5FF8 5FF8 50C9 BCF0 8DDC -- 654E E6958E E6958E F3B2ADA8
1682             FACE FACE FACE EDB2 EB4B 5B97 60B3 60B3 60B3 51BD BDBD 8E8E C175 6600 E69880 E69880 F3B2ADA9
1683             FACF FACF FACF EDB3 EB4D 5B98 60B1 60B1 60B1 51C4 BDB5 8E85 C17C 6615 E69895 E69895 F3B2ADAA
1684             FAD0 FAD0 FAD0 EDB4 -- 4F9F B9B7 60B6 60B6 B9B7 3937 F9F7 -- 663B E698BB E698BB F3B2ADAB
1685             FAD1 FAD1 FAD1 EDB5 EB4C 5B9D 60AF 60AF 60AF 51C0 BDB7 8E87 C178 6609 E69889 E69889 F3B2ADAC
1686             FAD2 FAD2 FAD2 EDB6 -- 5BA0 60BE 60BE 60BE 51A1 BDC2 8E93 C22B 662E E698AE E698AE F3B2ADAD
1687             FAD3 FAD3 FAD3 EDB7 EB4E 5BA1 60C4 60C4 60C4 51C7 BDC4 8E95 C221 661E E6989E E6989E F3B2ADAE
1688             FAD4 FAD4 FAD4 EDB8 EB51 5BA4 60B9 60B9 60B9 51CA BDC7 8E98 C225 6624 E698A4 E698A4 F3B2ADAF
1689             FAD5 FAD5 FAD5 EDB9 EB5D 5BA7 60D1 60D1 60D1 51D9 BDD6 8EAC -- 6665 E699A5 E699A5 F3B2ADB0
1690             FAD6 FAD6 FAD6 EDBA F39E 5BA8 60D6 60D6 60D6 52A1 BDE0 8EB2 C238 6657 E69997 E69997 F3B2ADB1
1691             FAD7 FAD7 FAD7 EDBB EB5A 5BAB 60D7 60D7 60D7 51D4 BDDE 8EBE C23A 6659 E69999 E69999 F3B2ADB2
1692             FAD8 FAD8 FAD8 EDBC -- 5BAE 60DD 60DD 60DD 51DE BDE4 8EB6 -- FA12 EFA892 EFA892 F3B2ADB3
1693             FAD9 FAD9 FAD9 EDBD EB5E 5BAF 60E1 60E1 60E1 51B3 BDE6 8EB8 C244 6673 E699B3 E699B3 F3B2ADB4
1694             FADA FADA FADA EDBE F3AB 5BB4 60E6 60E6 60E6 51E5 BDF7 8EED C252 6699 E69A99 E69A99 F3B2ADB5
1695             FADB FADB FADB EDBF EB63 5BB6 60EA 60EA 60EA 51AB C5D8 96AE C257 66A0 E69AA0 E69AA0 F3B2ADB6
1696             FADC FADC FADC EDC0 EB64 5BB8 60EE 60EE 60EE 51EB BEA5 8F45 C25B 66B2 E69AB2 E69AB2 F3B2ADB7
1697             FADD FADD FADD EDC1 F3B1 5BBB 60EF 60EF 60EF 51F1 BEAC 8F53 C25E 66BF E69ABF E69ABF F3B2ADB8
1698             FADE FADE FADE EDC2 EB6B 5BC7 60C7 60C7 60C7 52A2 BDD1 8EA6 C26D 66FA E69BBA E69BBA F3B2ADB9
1699             FADF FADF FADF EDC3 -- 5BC8 60FC 60FC 60FC 52BC BEBC 8F8D C270 670E E69C8E E69C8E F3B2ADBA
1700             FAE0 FAE0 FAE0 EDC4 EB6D 5BC9 61A7 61A7 61A7 52AD BEBE 8F8F -- F929 EFA4A9 EFA4A9 F3B2ADBB
1701             FAE1 FAE1 FAE1 EDC5 EB6F 5BD8 61B2 61B2 61B2 70CE BEC8 8F99 C321 6766 E69DA6 E69DA6 F3B2ADBC
1702             FAE2 FAE2 FAE2 EDC6 EB77 5BE3 61BB 61BB 61BB 53B2 BED9 8FAF C335 67BB E69EBB E69EBB F3B2ADBD
1703             FAE3 FAE3 FAE3 EDC7 EB7D 5BEC 61BE 61BE 61BE 52EE BEE5 8FB7 C349 6852 E6A192 E6A192 F3B2ADBE
1704             FAE4 FAE4 FAE4 EDC8 EB79 5BF0 9FAC 9FAC 9FAC 53B4 BEE8 8FCA C339 67C0 E69F80 E69F80 F3B2ADBF
1705             FAE5 FAE5 FAE5 EDC9 EB7C 5BF3 61CC 61CC 61CC 53C0 BEE2 8FB4 -- 6801 E6A081 E6A081 F3B2AE80
1706             FAE6 FAE6 FAE6 EDCA F3DD 5BF9 61C6 61C6 61C6 53C7 BEF0 8FDC C358 6844 E6A184 E6A184 F3B2AE81
1707             FAE7 FAE7 FAE7 EDCB F3FB 5C5F 61DF 61DF 61DF 70CF BFBA 908A C37E 68CF E6A38F E6A38F F3B2AE82
1708             FAE8 FAE8 FAE8 EDCC F3F7 5C66 61E0 61E0 61E0 70D0 BFBC 908D -- FA13 EFA893 EFA893 F3B2AE83
1709             FAE9 FAE9 FAE9 EDCD EB98 5C6E 61E9 61E9 61E9 53ED BFC0 9091 C44C 6968 E6A5A8 E6A5A8 F3B2AE84
1710             FAEA FAEA FAEA EDCE EB9A 5C78 61F8 61F8 61F8 70D1 BFD7 90AD -- FA14 EFA894 EFA894 F3B2AE85
1711             FAEB FAEB FAEB EDCF F455 5C79 65F4 65F4 65F4 52F4 C6AA 9751 C459 6998 E6A698 E6A698 F3B2AE86
1712             FAEC FAEC FAEC EDD0 EBA0 5C90 61EF 61EF 61EF 70D2 BFE4 90B6 C46A 69E2 E6A7A2 E6A7A2 F3B2AE87
1713             FAED FAED FAED EDD1 F460 5C9A 62A3 62A3 62A3 70D3 BFE5 90B7 C47D 6A30 E6A8B0 E6A8B0 F3B2AE88
1714             FAEE FAEE FAEE EDD2 EBAE 5C9B 62A9 62A9 62A9 54AD BFE6 90B8 -- 6A6B E6A9AB E6A9AB F3B2AE89
1715             FAEF FAEF FAEF EDD3 F472 5CA6 62AE 62AE 62AE 52E8 BFEC 90CE C527 6A46 E6A986 E6A986 F3B2AE8A
1716             FAF0 FAF0 FAF0 EDD4 EBAF 5CA9 62B2 62B2 62B2 54AF BFF0 90DC C535 6A73 E6A9B3 E6A9B3 F3B2AE8B
1717             FAF1 FAF1 FAF1 EDD5 F479 5CAF 62B3 62B3 62B3 54B0 BFF8 90EE C536 6A7E E6A9BE E6A9BE F3B2AE8C
1718             FAF2 FAF2 FAF2 EDD6 -- 5CB9 62B9 62B9 62B9 54BC C0A8 9148 -- 6AE2 E6ABA2 E6ABA2 F3B2AE8D
1719             FAF3 FAF3 FAF3 EDD7 EBB6 5CBC 62B8 62B8 62B8 54BD C0A5 9145 C555 6AE4 E6ABA4 E6ABA4 F3B2AE8E
1720             FAF4 FAF4 FAF4 EDD8 EBC9 5CEA 62D0 62D0 62D0 54F8 C0CF 91A4 C638 6BD6 E6AF96 E6AF96 F3B2AE8F
1721             FAF5 FAF5 FAF5 EDD9 F4B3 5CF6 62D5 62D5 62D5 55B5 C0D9 91AF C657 6C3F E6B0BF E6B0BF F3B2AE90
1722             FAF6 FAF6 FAF6 EDDA EBD0 5CF9 62D6 62D6 62D6 55BD C0DE 91BE C660 6C5C E6B19C E6B19C F3B2AE91
1723             FAF7 FAF7 FAF7 EDDB EBD5 5CFD 62D8 62D8 62D8 55C3 C0E5 91B7 C66A 6C86 E6B286 E6B286 F3B2AE92
1724             FAF8 FAF8 FAF8 EDDC -- 5CFE 62D9 62D9 62D9 55BF C0EB 91CD C663 6C6F E6B1AF E6B1AF F3B2AE93
1725             FAF9 FAF9 FAF9 EDDD F4C2 5D4E 62E2 62E2 62E2 55D3 C0F4 91EA C721 6CDA E6B39A E6B39A F3B2AE94
1726             FAFA FAFA FAFA EDDE EBDF 5D58 62E4 62E4 62E4 55DE C1A7 9247 C72B 6D04 E6B484 E6B484 F3B2AE95
1727             FAFB FAFB FAFB EDDF EBE9 5D60 62EB 62EB 62EB 56A3 C1B6 9286 C747 6D87 E6B687 E6B687 F3B2AE96
1728             FAFC FAFC FAFC EDE0 -- 5D62 62F2 62F2 62F2 70DE C1C7 9298 C743 6D6F E6B5AF E6B5AF F3B2AE97
1729             FB40 FB40 FB40 EDE1 -- 5D6B 62EE 62EE 62EE 56A7 C1BF 9290 C74B 6D96 E6B696 E6B696 F3B2AE98
1730             FB41 FB41 FB41 EDE2 EBED 5D72 62FC 62FC 62FC 56AD C1CA 929D C74F 6DAC E6B6AC E6B6AC F3B2AE99
1731             FB42 FB42 FB42 EDE3 F4E6 5D74 63A4 63A4 63A4 56B2 C1D9 92AF C759 6DCF E6B78F E6B78F F3B2AE9A
1732             FB43 FB43 FB43 EDE4 -- 5D7A 62FD 62FD 62FD 56B8 C1CD 92A2 -- 6DF8 E6B7B8 E6B7B8 F3B2AE9B
1733             FB44 FB44 FB44 EDE5 -- 5D7F 63A6 63A6 63A6 70DF C1DF 92BF -- 6DF2 E6B7B2 E6B7B2 F3B2AE9C
1734             FB45 FB45 FB45 EDE6 EBF4 5D80 63BD 63BD 63BD 55B1 C1D1 92A6 C766 6DFC E6B7BC E6B7BC F3B2AE9D
1735             FB46 FB46 FB46 EDE7 -- 5D8A 63B7 63B7 63B7 56C2 C1FB 92FB C76E 6E39 E6B8B9 E6B8B9 F3B2AE9E
1736             FB47 FB47 FB47 EDE8 EBF8 5D8E 63B4 63B4 63B4 56CF C1F3 92DF C77C 6E5C E6B99C E6B99C F3B2AE9F
1737             FB48 FB48 FB48 EDE9 F4EE 5D93 63AE 63AE 63AE 56BE C1F4 92EA C76B 6E27 E6B8A7 E6B8A7 F3B2AEA0
1738             FB49 FB49 FB49 EDEA F4F1 5D95 63B8 63B8 63B8 56C3 C1F0 92DC C770 6E3C E6B8BC E6B8BC F3B2AEA1
1739             FB4A FB4A FB4A EDEB F543 5DA6 9FB6 9FB6 9FB6 56DF C2A8 9348 C831 6EBF E6BABF E6BABF F3B2AEA2
1740             FB4B FB4B FB4B EDEC EC4E 5DC1 63D8 63D8 63D8 56FE C2CE 93A3 C865 6F88 E6BE88 E6BE88 F3B2AEA3
1741             FB4C FB4C FB4C EDED F560 5DCA 63DF 63DF 63DF 57AE C2DF 93BF C878 6FB5 E6BEB5 E6BEB5 F3B2AEA4
1742             FB4D FB4D FB4D EDEE EC5A 5DD5 63E4 63E4 63E4 57B8 C2E4 93B6 C926 6FF5 E6BFB5 E6BFB5 F3B2AEA5
1743             FB4E FB4E FB4E EDEF EC5B 5DD7 63EB 63EB 63EB 57B9 C2EF 93DB C92B 7005 E78085 E78085 F3B2AEA6
1744             FB4F FB4F FB4F EDF0 F569 5DD8 63E8 63E8 63E8 57BA C2EE 93DA C92D 7007 E78087 E78087 F3B2AEA7
1745             FB50 FB50 FB50 EDF1 EC5D 5DE3 63F1 63F1 63F1 57BC C2F1 93DD -- 7028 E780A8 E780A8 F3B2AEA8
1746             FB51 FB51 FB51 EDF2 EC64 5DEA 63F8 63F8 63F8 57D1 C2FB 93FB C94A 7085 E78285 E78285 F3B2AEA9
1747             FB52 FB52 FB52 EDF3 EC66 5DED 63FD 63FD 63FD 57DE C2FC 93FC C953 70AB E782AB E782AB F3B2AEAA
1748             FB53 FB53 FB53 EDF4 EC6B 5DF5 9FB9 9FB9 9FB9 58A6 C3A8 9448 C969 710F E7848F E7848F F3B2AEAB
1749             FB54 FB54 FB54 EDF5 F58B 5DF6 64A5 64A5 64A5 58A5 C3A6 9446 C963 7104 E78484 E78484 F3B2AEAC
1750             FB55 FB55 FB55 EDF6 EC76 5DFB 64AD 64AD 64AD 57F1 C3B8 9488 C97C 715C E7859C E7859C F3B2AEAD
1751             FB56 FB56 FB56 EDF7 EC71 5DFC 64AE 64AE 64AE 57EB C3B9 9489 C974 7146 E78586 E78586 F3B2AEAE
1752             FB57 FB57 FB57 EDF8 EC72 5DFD 64AF 64AF 64AF 57EC C3BC 948D C975 7147 E78587 E78587 F3B2AEAF
1753             FB58 FB58 FB58 EDF9 EC79 5E49 64B9 64B9 64B9 70E3 C3CE 94A3 -- FA15 EFA895 EFA895 F3B2AEB0
1754             FB59 FB59 FB59 EDFA EC7D 5E4B 64B4 64B4 64B4 57F6 C3D0 94A5 CA33 71C1 E78781 E78781 F3B2AEB1
1755             FB5A FB5A FB5A EDFB EC81 5E5A 64C2 64C2 64C2 58A9 C3D5 94AA CA3D 71FE E787BE E787BE F3B2AEB2
1756             FB5B FB5B FB5B EDFC F5BB 5E73 64CC 64CC 64CC 58FA C3EB 94CD CA6F 72B1 E78AB1 E78AB1 F3B2AEB3
1757             FB5C FB5C FB5C EE40 EC89 5E75 9FBA 9FBA 9FBA 58D6 C3EE 94DA CA71 72BE E78ABE E78ABE F3B2AEB4
1758             FB5D FB5D FB5D EE41 -- 5E86 64D0 64D0 64D0 58ED C3FB 94FB CB2E 7324 E78CA4 E78CA4 F3B2AEB5
1759             FB5E FB5E FB5E EE42 EC8F 5E8A 64CE 64CE 64CE 58EF C3F8 94EE -- FA16 EFA896 EFA896 F3B2AEB6
1760             FB5F FB5F FB5F EE43 F5D5 5E94 64D2 64D2 64D2 58F6 C4A5 9545 CB4A 7377 E78DB7 E78DB7 F3B2AEB7
1761             FB60 FB60 FB60 EE44 -- 5E99 64DF 64DF 64DF 59BA C4BA 958A CB66 73BD E78EBD E78EBD F3B2AEB8
1762             FB61 FB61 FB61 EE45 EC99 5E9E 64DB 64DB 64DB 59BC C4B8 9588 CB6A 73C9 E78F89 E78F89 F3B2AEB9
1763             FB62 FB62 FB62 EE46 EC9B 5E9F 64E4 64E4 64E4 59C0 C4C1 9592 CB70 73D6 E78F96 E78F96 F3B2AEBA
1764             FB63 FB63 FB63 EE47 EC9D 5EA1 64E5 64E5 64E5 59C3 C4C2 9593 CB74 73E3 E78FA3 E78FA3 F3B2AEBB
1765             FB64 FB64 FB64 EE48 -- 5EA2 64E8 64E8 64E8 5AAC C4C6 9597 CB6E 73D2 E78F92 E78F92 F3B2AEBC
1766             FB65 FB65 FB65 EE49 EC9F 5EA7 64EB 64EB 64EB 59D0 C4C7 9598 CC25 7407 E79087 E79087 F3B2AEBD
1767             FB66 FB66 FB66 EE4A -- 5EA8 64EC 64EC 64EC 59C7 C4CB 959E CB79 73F5 E78FB5 E78FB5 F3B2AEBE
1768             FB67 FB67 FB67 EE4B ECA4 5EAA 64F5 64F5 64F5 59D7 C4D2 95A7 CC2B 7426 E790A6 E790A6 F3B2AEBF
1769             FB68 FB68 FB68 EE4C ECA6 5EAB 64F6 64F6 64F6 59DA C4D3 95A8 CC2E 742A E790AA E790AA F3B2AF80
1770             FB69 FB69 FB69 EE4D -- 5EAD 64FC 64FC 64FC 59D9 C4DB 95BB CC2D 7429 E790A9 E790A9 F3B2AF81
1771             FB6A FB6A FB6A EE4E ECA9 5EAE 64F8 64F8 64F8 59DD C4D7 95AD CC32 742E E790AE E790AE F3B2AF82
1772             FB6B FB6B FB6B EE4F ECB1 5EBC 65A8 65A8 65A8 5AAD C4ED 95CF CC42 7462 E791A2 E791A2 F3B2AF83
1773             FB6C FB6C FB6C EE50 ECB6 5EBD 65AE 65AE 65AE 59F4 C4F3 95DF CC50 7489 E79289 E79289 F3B2AF84
1774             FB6D FB6D FB6D EE51 ECB9 5EC0 65B2 65B2 65B2 59FB C4FB 95FB CC59 749F E7929F E7929F F3B2AF85
1775             FB6E FB6E FB6E EE52 ECC5 5ED1 65B9 65B9 65B9 5AB8 C5AC 9653 -- 7501 E79481 E79481 F3B2AF86
1776             FB6F FB6F FB6F EE53 ECC8 5EE7 65C3 65C3 65C3 5AD0 C5B4 9684 CD3B 756F E795AF E795AF F3B2AF87
1777             FB70 FB70 FB70 EE54 -- 5F69 65CA 65CA 65CA 5AFE C5D3 96A8 -- 7682 E79A82 E79A82 F3B2AF88
1778             FB71 FB71 FB71 EE55 F68F 5F70 65CE 65CE 65CE 5BA4 C5D9 96AF CE3B 769C E79A9C E79A9C F3B2AF89
1779             FB72 FB72 FB72 EE56 ECE1 5F71 65CF 65CF 65CF 5BA5 C5DA 96BA -- 769E E79A9E E79A9E F3B2AF8A
1780             FB73 FB73 FB73 EE57 ECDF 5F72 65D1 65D1 65D1 5AFD C5DB 96BB CE3A 769B E79A9B E79A9B F3B2AF8B
1781             FB74 FB74 FB74 EE58 ECE2 5F73 65D2 65D2 65D2 5BA9 C5DF 96BF CE43 76A6 E79AA6 E79AA6 F3B2AF8C
1782             FB75 FB75 FB75 EE59 -- 5F7A 65D8 65D8 65D8 5BB7 C5E5 96B7 -- FA17 EFA897 EFA897 F3B2AF8D
1783             FB76 FB76 FB76 EE5A ECF0 5F8E 65E6 65E6 65E6 5BCC C5F2 96DE CE72 7746 E79D86 E79D86 F3B2AF8E
1784             FB77 FB77 FB77 EE5B F163 5FAA 65F6 65F6 65F6 44DC B4C7 8498 B35D 52AF E58AAF E58AAF F3B2AF8F
1785             FB78 FB78 FB78 EE5C F6C1 5FAE 65F7 65F7 65F7 5BFC C6B1 9781 CF55 7821 E7A0A1 E7A0A1 F3B2AF90
1786             FB79 FB79 FB79 EE5D ED41 5FB2 65FA 65FA 65FA 5CA7 C6B5 9785 CF62 784E E7A18E E7A18E F3B2AF91
1787             FB7A FB7A FB7A EE5E F6C4 5FB3 66A1 66A1 66A1 5CAE C6BD 978E CF69 7864 E7A1A4 E7A1A4 F3B2AF92
1788             FB7B FB7B FB7B EE5F -- 5FB6 66A5 66A5 66A5 5CB2 C6C4 9795 CF6D 787A E7A1BA E7A1BA F3B2AF93
1789             FB7C FB7C FB7C EE60 F6DC 5FD1 66AE 66AE 66AE 5CCE C6DA 97BA -- 7930 E7A4B0 E7A4B0 F3B2AF94
1790             FB7D FB7D FB7D EE61 -- 5FD2 66B0 66B0 66B0 70E5 C6DD 97BD -- FA18 EFA898 EFA898 F3B2AF95
1791             FB7E FB7E FB7E EE62 ED5B 5FD5 66BB 66BB 66BB 5CDA C6EB 97CD -- FA19 EFA899 EFA899 F3B2AF96
1792             FB80 FB80 FB80 EE63 ED5C 5FD9 66C2 66C2 66C2 5CDC C6F7 97ED -- FA1A EFA89A EFA89A F3B2AF97
1793             FB81 FB81 FB81 EE64 F6E5 5FDC 66D0 66D0 66D0 5CE6 C7A3 9843 D065 7994 E7A694 E7A694 F3B2AF98
1794             FB82 FB82 FB82 EE65 ED60 5FDD 66D3 66D3 66D3 5CE4 C7A6 9846 -- FA1B EFA89B EFA89B F3B2AF99
1795             FB83 FB83 FB83 EE66 F6E8 5FDF 66D4 66D4 66D4 5CE8 C7AA 9851 D069 799B E7A69B E7A69B F3B2AF9A
1796             FB84 FB84 FB84 EE67 F758 604F 66FE 66FE 66FE 5DDD C7F2 98DE D168 7AD1 E7AB91 E7AB91 F3B2AF9B
1797             FB85 FB85 FB85 EE68 F759 6058 67A2 67A2 67A2 5DE1 C7F5 98EB -- 7AE7 E7ABA7 E7ABA7 F3B2AF9C
1798             FB86 FB86 FB86 EE69 -- 6059 67A6 67A6 67A6 5DE5 C7F7 98ED -- FA1C EFA89C EFA89C F3B2AF9D
1799             FB87 FB87 FB87 EE6A ED77 605A 67A4 67A4 67A4 5DE4 C7F8 98EE D16C 7AEB E7ABAB E7ABAB F3B2AF9E
1800             FB88 FB88 FB88 EE6B ED83 6082 67B7 67B7 67B7 5EA3 C8BB 998C D23B 7B9E E7AE9E E7AE9E F3B2AF9F
1801             FB89 FB89 FB89 EE6C -- 60AD 67CC 67CC 67CC 5ED3 C8E8 99CA -- FA1D EFA89D EFA89D F3B2AFA0
1802             FB8A FB8A FB8A EE6D EDA0 60C4 67DD 67DD 67DD 5EFD C9A7 9A47 D361 7D48 E7B588 E7B588 F3B2AFA1
1803             FB8B FB8B FB8B EE6E EDA2 60C6 67E1 67E1 67E1 5EE0 C9AC 9A53 D368 7D5C E7B59C E7B59C F3B2AFA2
1804             FB8C FB8C FB8C EE6F F7C5 60D4 67EC 67EC 67EC 5FE4 C9B9 9A89 D427 7DB7 E7B6B7 E7B6B7 F3B2AFA3
1805             FB8D FB8D FB8D EE70 EDA6 60DA 67EB 67EB 67EB 5FB6 C9B6 9A86 -- 7DA0 E7B6A0 E7B6A0 F3B2AFA4
1806             FB8E FB8E FB8E EE71 EDAA 60E1 67F1 67F1 67F1 5FBE C9BD 9A8E -- 7DD6 E7B796 E7B796 F3B2AFA5
1807             FB8F FB8F FB8F EE72 EDB3 60FD 67FB 67FB 67FB 5FD6 C9D5 9AAA D454 7E52 E7B992 E7B992 F3B2AFA6
1808             FB90 FB90 FB90 EE73 EDB7 6157 68A5 68A5 68A5 5FE8 BFFB 90FB D472 7F47 E7BD87 E7BD87 F3B2AFA7
1809             FB91 FB91 FB91 EE74 -- 616E 68AE 68AE 68AE 5FF7 C9F2 9ADE D52E 7FA1 E7BEA1 E7BEA1 F3B2AFA8
1810             FB92 FB92 FB92 EE75 -- 6177 68B2 68B2 68B2 60A1 C9F6 9AEC -- FA1E EFA89E EFA89E F3B2AFA9
1811             FB93 FB93 FB93 EE76 EDEA 61F8 68DA 68DA 68DA 61D9 CBB4 9E84 D75E 8301 E88C81 E88C81 F3B2AFAA
1812             FB94 FB94 FB94 EE77 EDEB 6248 68DD 68DD 68DD 70E7 CBD3 9EA8 -- 8362 E88DA2 E88DA2 F3B2AFAB
1813             FB95 FB95 FB95 EE78 F8B1 625B 68F2 68F2 68F2 61F0 CBD4 9EA9 D822 837F E88DBF E88DBF F3B2AFAC
1814             FB96 FB96 FB96 EE79 EDFB 6267 68FC 68FC 68FC 61FE CCA1 9F41 D837 83C7 E88F87 E88F87 F3B2AFAD
1815             FB97 FB97 FB97 EE7A -- 6274 68F8 68F8 68F8 62AA CBF7 9EED D841 83F6 E88FB6 E88FB6 F3B2AFAE
1816             FB98 FB98 FB98 EE7B EE47 627E 69A3 69A3 69A3 70E8 CCB2 9F82 D851 8448 E89188 E89188 F3B2AFAF
1817             FB99 FB99 FB99 EE7C EE4E 628A 69AF 69AF 69AF 70E9 CCC3 9F94 D874 84B4 E892B4 E892B4 F3B2AFB0
1818             FB9A FB9A FB9A EE7D F8EF 629E 69BE 69BE 69BE 62D1 CCEE 9FDA D946 8553 E89593 E89593 F3B2AFB1
1819             FB9B FB9B FB9B EE7E EE57 62A1 69BF 69BF 69BF 62D4 CCEA 9FCC D948 8559 E89599 E89599 F3B2AFB2
1820             FB9C FB9C FB9C EE80 -- 62A8 69BA 69BA 69BA 62D9 CCED 9FCF D951 856B E895AB E895AB F3B2AFB3
1821             FB9D FB9D FB9D EE81 EE59 62B9 69C1 69C1 69C1 62E4 CCFD 9FFD -- FA1F EFA89F EFA89F F3B2AFB4
1822             FB9E FB9E FB9E EE82 EE5F 62BB 69C9 69C9 69C9 62E5 CDA9 A249 -- 85B0 E896B0 E896B0 F3B2AFB5
1823             FB9F FB9F FB9F EE83 F957 62CE 69D0 69D0 69D0 70EA CDC2 A293 -- FA20 EFA8A0 EFA8A0 F3B2AFB6
1824             FBA0 FBA0 FBA0 EE84 F964 62E2 69D7 69D7 69D7 63DF CDD3 A2A8 -- FA21 EFA8A1 EFA8A1 F3B2AFB7
1825             FBA1 FBA1 FBA1 EE85 -- 635E 69DA 69DA 69DA 63E0 CDE2 A2B4 -- 8807 E8A087 E8A087 F3B2AFB8
1826             FBA2 FBA2 FBA2 EE86 EE8D 6390 69E6 69E6 69E6 63F9 CEA4 A344 DC53 88F5 E8A3B5 E8A3B5 F3B2AFB9
1827             FBA3 FBA3 FBA3 EE87 EE9D 63C5 69FE 69FE 69FE 64E4 CECA A39D DD48 8A12 E8A892 E8A892 F3B2AFBA
1828             FBA4 FBA4 FBA4 EE88 EEA0 63CB 6AA5 6AA5 6AA5 64EC CEDA A3BA DD54 8A37 E8A8B7 E8A8B7 F3B2AFBB
1829             FBA5 FBA5 FBA5 EE89 EEA6 63D4 6AAA 6AAA 6AAA 64DA CEDF A3BF DD6A 8A79 E8A9B9 E8A9B9 F3B2AFBC
1830             FBA6 FBA6 FBA6 EE8A EEA7 63DF 6AAB 6AAB 6AAB 65A7 CEE2 A3B4 DD7A 8AA7 E8AAA7 E8AAA7 F3B2AFBD
1831             FBA7 FBA7 FBA7 EE8B F9DE 63E1 6AAD 6AAD 6AAD 6BEA CEE3 A3B5 DE24 8ABE E8AABE E8AABE F3B2AFBE
1832             FBA8 FBA8 FBA8 EE8C EEA9 63ED 6AB3 6AB3 6AB3 65B3 CEEC A3CE DE30 8ADF E8AB9F E8AB9F F3B2AFBF
1833             FBA9 FBA9 FBA9 EE8D EEAC 63EE 6AB2 6AB2 6AB2 65B7 CEEA A3CC -- FA22 EFA8A2 EFA8A2 F3B2B080
1834             FBAA FBAA FBAA EE8E EEAB 63EF 6AB4 6AB4 6AB4 65B6 CEED A3CF DE35 8AF6 E8ABB6 E8ABB6 F3B2B081
1835             FBAB FBAB FBAB EE8F -- 6445 6ABE 6ABE 6ABE 65C7 CEF8 A3EE DE4B 8B53 E8AD93 E8AD93 F3B2B082
1836             FBAC FBAC FBAC EE90 F9ED 6450 6AC3 6AC3 6AC3 65D1 CEFE A3FE -- 8B7F E8ADBF E8ADBF F3B2B083
1837             FBAD FBAD FBAD EE91 FA4F 647C 6AD0 6AD0 6AD0 66AB CFBC A48D DF39 8CF0 E8B3B0 E8B3B0 F3B2B084
1838             FBAE FBAE FBAE EE92 EEB8 647D 6ACF 6ACF 6ACF 65F9 CFBB A48C -- 8CF4 E8B3B4 E8B3B4 F3B2B085
1839             FBAF FBAF FBAF EE93 EEBC 6485 6AD5 6AD5 6AD5 65F8 CFC2 A493 DF43 8D12 E8B492 E8B492 F3B2B086
1840             FBB0 FBB0 FBB0 EE94 -- 648D 6AD8 6AD8 6AD8 66B9 CFC5 A496 -- 8D76 E8B5B6 E8B5B6 F3B2B087
1841             FBB1 FBB1 FBB1 EE95 -- 648E 6AD9 6AD9 6AD9 66C3 CFC7 A498 -- FA23 EFA8A3 EFA8A3 F3B2B088
1842             FBB2 FBB2 FBB2 EE96 -- 64C9 6AE1 6AE1 6AE1 66ED CFDE A4BE E059 8ECF E8BB8F E8BB8F F3B2B089
1843             FBB3 FBB3 FBB3 EE97 FA8E 64F1 6AEB 6AEB 6AEB 70F9 CFFD A4FD -- FA24 EFA8A4 EFA8A4 F3B2B08A
1844             FBB4 FBB4 FBB4 EE98 -- 6549 6AFA 6AFA 6AFA 70FB D0C2 A593 -- FA25 EFA8A5 EFA8A5 F3B2B08B
1845             FBB5 FBB5 FBB5 EE99 -- 6553 6BA3 6BA3 6BA3 70FA D0CD A5A2 E162 9067 E981A7 E981A7 F3B2B08C
1846             FBB6 FBB6 FBB6 EE9A EEE5 6564 6BC7 6BC7 6BC7 68A6 D0EC A5CE -- 90DE E9839E E9839E F3B2B08D
1847             FBB7 FBB7 FBB7 EE9B EEE8 6566 6BCA 6BCA 6BCA 68A8 D0F2 A5DE -- FA26 EFA8A6 EFA8A6 F3B2B08E
1848             FBB8 FBB8 FBB8 EE9C EEEA 6567 6BCD 6BCD 6BCD 68DF D0F3 A5DF -- 9115 E98495 E98495 F3B2B08F
1849             FBB9 FBB9 FBB9 EE9D EEEE 656B 6BD1 6BD1 6BD1 68B0 D0F9 A5EF E247 9127 E984A7 E984A7 F3B2B090
1850             FBBA FBBA FBBA EE9E FACC 6583 6BD9 6BD9 6BD9 69BE D1B8 A688 E328 91DA E9879A E9879A F3B2B091
1851             FBBB FBBB FBBB EE9F EEFA 6585 6BD8 6BD8 6BD8 69BC D1B7 A687 E326 91D7 E98797 E98797 F3B2B092
1852             FBBC FBBC FBBC EEA0 -- 6586 6BDA 6BDA 6BDA 69BF D1B9 A689 E329 91DE E9879E E9879E F3B2B093
1853             FBBD FBBD FBBD EEA1 EF41 658A 6BDC 6BDC 6BDC 69C5 D1BB A68C E32F 91ED E987AD E987AD F3B2B094
1854             FBBE FBBE FBBE EEA2 FAD0 658C 6BE1 6BE1 6BE1 69C6 D1C1 A692 E330 91EE E987AE E987AE F3B2B095
1855             FBBF FBBF FBBF EEA3 EEFC 658D 6BE0 6BE0 6BE0 69C0 D1BE A68F E32A 91E4 E987A4 E987A4 F3B2B096
1856             FBC0 FBC0 FBC0 EEA4 EF40 658F 6BDF 6BDF 6BDF 69C1 D1BD A68E E32B 91E5 E987A5 E987A5 F3B2B097
1857             FBC1 FBC1 FBC1 EEA5 -- 6590 6BE5 6BE5 6BE5 69CD D1C6 A697 E33C 9206 E98886 E98886 F3B2B098
1858             FBC2 FBC2 FBC2 EEA6 EF44 6593 6BE9 6BE9 6BE9 69D1 D1C4 A695 E341 9210 E98890 E98890 F3B2B099
1859             FBC3 FBC3 FBC3 EEA7 FAD2 6595 6BE7 6BE7 6BE7 69D0 D1CB A69E E33F 920A E9888A E9888A F3B2B09A
1860             FBC4 FBC4 FBC4 EEA8 EF47 659B 6BF2 6BF2 6BF2 69E1 D1DC A6BC E355 923A E988BA E988BA F3B2B09B
1861             FBC5 FBC5 FBC5 EEA9 EF49 659E 6BEE 6BEE 6BEE 69E4 D1D6 A6AC E358 9240 E98980 E98980 F3B2B09C
1862             FBC6 FBC6 FBC6 EEAA EF48 659F 6BF3 6BF3 6BF3 69E2 D1D9 A6AF E356 923C E988BC E988BC F3B2B09D
1863             FBC7 FBC7 FBC7 EEAB FADA 65A1 6BEF 6BEF 6BEF 69E8 D1DD A6BD E35F 924E E9898E E9898E F3B2B09E
1864             FBC8 FBC8 FBC8 EEAC FADD 65A3 6BF1 6BF1 6BF1 69EE D1DB A6BB E363 9259 E98999 E98999 F3B2B09F
1865             FBC9 FBC9 FBC9 EEAD FADB 65A5 6BEC 6BEC 6BEC 69EA D1D1 A6A6 E361 9251 E98991 E98991 F3B2B0A0
1866             FBCA FBCA FBCA EEAE EF46 65A6 6BED 6BED 6BED 69E0 D1D3 A6A8 E354 9239 E988B9 E988B9 F3B2B0A1
1867             FBCB FBCB FBCB EEAF FAE1 65A8 6BF6 6BF6 6BF6 6BD2 D1E4 A6B6 E369 9267 E989A7 E989A7 F3B2B0A2
1868             FBCC FBCC FBCC EEB0 FAED 65AB 6CA6 6CA6 6CA6 6AA7 D1EE A6DA E426 92A7 E98AA7 E98AA7 F3B2B0A3
1869             FBCD FBCD FBCD EEB1 -- 65AC 6CA8 6CA8 6CA8 69F7 D1EF A6DB E371 9277 E989B7 E989B7 F3B2B0A4
1870             FBCE FBCE FBCE EEB2 EF4C 65AD 6CA5 6CA5 6CA5 69F8 D1E6 A6B8 E372 9278 E989B8 E989B8 F3B2B0A5
1871             FBCF FBCF FBCF EEB3 FAFA 65B4 6CB1 6CB1 6CB1 6AC4 D1F9 A6EF E44B 92E7 E98BA7 E98BA7 F3B2B0A6
1872             FBD0 FBD0 FBD0 EEB4 FAF7 65B5 6CAC 6CAC 6CAC 6ABC D1F0 A6DC E441 92D7 E98B97 E98B97 F3B2B0A7
1873             FBD1 FBD1 FBD1 EEB5 FAF8 65B6 6CB8 6CB8 6CB8 6ABE D1F7 A6ED E443 92D9 E98B99 E98B99 F3B2B0A8
1874             FBD2 FBD2 FBD2 EEB6 FAF6 65B7 6CB3 6CB3 6CB3 6AB8 D2A4 A744 E43E 92D0 E98B90 E98B90 F3B2B0A9
1875             FBD3 FBD3 FBD3 EEB7 -- 65B8 6CB7 6CB7 6CB7 6BD3 D2A6 A746 -- FA27 EFA8A7 EFA8A7 F3B2B0AA
1876             FBD4 FBD4 FBD4 EEB8 -- 65B9 6CB5 6CB5 6CB5 6ABB D2A3 A743 E440 92D5 E98B95 E98B95 F3B2B0AB
1877             FBD5 FBD5 FBD5 EEB9 EF52 65BC 6CB0 6CB0 6CB0 6AC2 D1FE A6FE E447 92E0 E98BA0 E98BA0 F3B2B0AC
1878             FBD6 FBD6 FBD6 EEBA EF51 65BD 9FCA 9FCA 9FCA 6ABA D1F4 A6EA E43F 92D3 E98B93 E98B93 F3B2B0AD
1879             FBD7 FBD7 FBD7 EEBB EF57 65C1 6CC3 6CC3 6CC3 6AD5 D2B4 A784 E460 9325 E98CA5 E98CA5 F3B2B0AE
1880             FBD8 FBD8 FBD8 EEBC EF56 65C3 6CBE 6CBE 6CBE 6AD3 D2A9 A749 E45E 9321 E98CA1 E98CA1 F3B2B0AF
1881             FBD9 FBD9 FBD9 EEBD FB43 65C5 6CCD 6CCD 6CCD 69B3 D2AF A756 E451 92FB E98BBB E98BBB F3B2B0B0
1882             FBDA FBDA FBDA EEBE -- 65C6 6CC2 6CC2 6CC2 6BD4 D2B7 A787 -- FA28 EFA8A8 EFA8A8 F3B2B0B1
1883             FBDB FBDB FBDB EEBF FB48 65C8 6CBF 6CBF 6CBF 6AD1 D2AB A752 E45C 931E E98C9E E98C9E F3B2B0B2
1884             FBDC FBDC FBDC EEC0 EF53 65C9 6CC1 6CC1 6CC1 6ACA D2B5 A785 E452 92FF E98BBF E98BBF F3B2B0B3
1885             FBDD FBDD FBDD EEC1 FB47 65CC 6CC4 6CC4 6CC4 6AD0 D2B3 A783 E45B 931D E98C9D E98C9D F3B2B0B4
1886             FBDE FBDE FBDE EEC2 FB44 65CE 6CC5 6CC5 6CC5 6ACC D2B2 A782 E454 9302 E98C82 E98C82 F3B2B0B5
1887             FBDF FBDF FBDF EEC3 EF5E 65D0 6CCA 6CCA 6CCA 6AE4 D2BB A78C E47A 9370 E98DB0 E98DB0 F3B2B0B6
1888             FBE0 FBE0 FBE0 EEC4 FB4F 65D5 6CCC 6CCC 6CCC 6ADE D2C3 A794 E46F 9357 E98D97 E98D97 F3B2B0B7
1889             FBE1 FBE1 FBE1 EEC5 -- 65D8 6CD8 6CD8 6CD8 6AF2 D2D3 A7A8 E533 93A4 E98EA4 E98EA4 F3B2B0B8
1890             FBE2 FBE2 FBE2 EEC6 EF62 65DD 6CE0 6CE0 6CE0 6AF9 D2DF A7BF E53F 93C6 E98F86 E98F86 F3B2B0B9
1891             FBE3 FBE3 FBE3 EEC7 EF63 65E4 6CDF 6CDF 6CDF 6BA3 D2DA A7BA E549 93DE E98F9E E98F9E F3B2B0BA
1892             FBE4 FBE4 FBE4 EEC8 -- 65E8 6CE6 6CE6 6CE6 6BAE D2E7 A7B9 E550 93F8 E98FB8 E98FB8 F3B2B0BB
1893             FBE5 FBE5 FBE5 EEC9 -- 65F0 6CEF 6CEF 6CEF 6BBD D2F2 A7DE E562 9431 E990B1 E990B1 F3B2B0BC
1894             FBE6 FBE6 FBE6 EECA FB6C 65F4 6CF0 6CF0 6CF0 6BC5 D2F3 A7DF E56A 9445 E99185 E99185 F3B2B0BD
1895             FBE7 FBE7 FBE7 EECB -- 65F6 6CF1 6CF1 6CF1 6BC6 D2F4 A7EA E56B 9448 E99188 E99188 F3B2B0BE
1896             FBE8 FBE8 FBE8 EECC -- 664A 6CF8 6CF8 6CF8 6BE1 D2FC A7FC -- 9592 E99692 E99692 F3B2B0BF
1897             FBE9 FBE9 FBE9 EECD EF7C 6674 6DA2 6DA2 6DA2 68CC D3B9 A889 -- F9DC EFA79C EFA79C F3B2B180
1898             FBEA FBEA FBEA EECE -- 6678 6DA4 6DA4 6DA4 68E0 D3C0 A891 -- FA29 EFA8A9 EFA8A9 F3B2B181
1899             FBEB FBEB FBEB EECF EF7D 6679 6DA5 6DA5 6DA5 68D4 D3C1 A892 E668 969D E99A9D E99A9D F3B2B182
1900             FBEC FBEC FBEC EED0 FB8C 667F 6DA6 6DA6 6DA6 68DB D3C4 A895 E66F 96AF E99AAF E99AAF F3B2B183
1901             FBED FBED FBED EED1 EF86 6697 9FCD 9FCD 9FCD 6CAC D3D4 A8A9 E72C 9733 E99CB3 E99CB3 F3B2B184
1902             FBEE FBEE FBEE EED2 EF87 6699 9FCE 9FCE 9FCE 6CAD D3D5 A8AA -- 973B E99CBB E99CBB F3B2B185
1903             FBEF FBEF FBEF EED3 -- 669E 6DAE 6DAE 6DAE 6CB0 D3D7 A8AD E72E 9743 E99D83 E99D83 F3B2B186
1904             FBF0 FBF0 FBF0 EED4 EF88 66A2 6DB0 6DB0 6DB0 6CB1 D3D9 A8AF -- 974D E99D8D E99D8D F3B2B187
1905             FBF1 FBF1 FBF1 EED5 EF8A 66A3 9FCF 9FCF 9FCF 6CAE D3DB A8BB E731 974F E99D8F E99D8F F3B2B188
1906             FBF2 FBF2 FBF2 EED6 -- 66A4 6DB1 6DB1 6DB1 6CB3 D3DC A8BC -- 9751 E99D91 E99D91 F3B2B189
1907             FBF3 FBF3 FBF3 EED7 FB9C 66A5 6DB2 6DB2 6DB2 6CB5 D3DE A8BE E732 9755 E99D95 E99D95 F3B2B18A
1908             FBF4 FBF4 FBF4 EED8 EF9F 66CB 6DC1 6DC1 6DC1 6CF3 D4A1 A941 E831 9857 E9A197 E9A197 F3B2B18B
1909             FBF5 FBF5 FBF5 EED9 EFA3 66CC 6DC2 6DC2 6DC2 6CF7 D4A4 A944 E836 9865 E9A1A5 E9A1A5 F3B2B18C
1910             FBF6 FBF6 FBF6 EEDA -- 66DD 6DC5 6DC5 6DC5 6DB3 D4B3 A983 -- FA2A EFA8AA EFA8AA F3B2B18D
1911             FBF7 FBF7 FBF7 EEDB -- 66DF 6DC6 6DC6 6DC6 6DB4 D4B4 A984 -- FA2B EFA8AB EFA8AB F3B2B18E
1912             FBF8 FBF8 FBF8 EEDC -- 66E5 6DC8 6DC8 6DC8 6DBD D4B7 A987 E85D 9927 E9A4A7 E9A4A7 F3B2B18F
1913             FBF9 FBF9 FBF9 EEDD -- 66E6 6DC9 6DC9 6DC9 6DBE D4B8 A988 -- FA2C EFA8AC EFA8AC F3B2B190
1914             FBFA FBFA FBFA EEDE EFA9 66F9 6DCC 6DCC 6DCC 5CF3 D4C3 A994 -- 999E E9A69E E9A69E F3B2B191
1915             FBFB FBFB FBFB EEDF EFB1 6759 6DD9 6DD9 6DD9 6DF6 D4D7 A9AD E951 9A4E E9A98E E9A98E F3B2B192
1916             FBFC FBFC FBFC EEE0 -- 676B 6DD4 6DD4 6DD4 6EA4 D4DC A9BC -- 9AD9 E9AB99 E9AB99 F3B2B193
1917             FC40 FC40 FC40 EEE1 FC51 676C 6DDC 6DDC 6DDC 6EA7 D4DE A9BE E96D 9ADC E9AB9C E9AB9C F3B2B194
1918             FC41 FC41 FC41 EEE2 EFC2 678F 9FD2 9FD2 9FD2 6ED0 D4F0 A9DC EA4D 9B75 E9ADB5 E9ADB5 F3B2B195
1919             FC42 FC42 FC42 EEE3 EFC1 6791 6DE0 6DE0 6DE0 6EEE D4EF A9DB -- 9B72 E9ADB2 E9ADB2 F3B2B196
1920             FC43 FC43 FC43 EEE4 EFC5 6793 6DE2 6DE2 6DE2 6ED8 D4F3 A9DF EA5B 9B8F E9AE8F E9AE8F F3B2B197
1921             FC44 FC44 FC44 EEE5 FC69 679B 6DE5 6DE5 6DE5 6EDB D4FB A9FB EA66 9BB1 E9AEB1 E9AEB1 F3B2B198
1922             FC45 FC45 FC45 EEE6 -- 679F 6DE7 6DE7 6DE7 6EEF D5A8 AA48 EA6A 9BBB E9AEBB E9AEBB F3B2B199
1923             FC46 FC46 FC46 EEE7 EFCD 67B1 9FD3 9FD3 9FD3 6EE3 D5AF AA56 EB25 9C00 E9B080 E9B080 F3B2B19A
1924             FC47 FC47 FC47 EEE8 EFDC 67E2 9FD8 9FD8 9FD8 6FA3 D3C9 A89A EB7B 9D70 E9B5B0 E9B5B0 F3B2B19B
1925             FC48 FC48 FC48 EEE9 FCB2 67E4 6DF2 6DF2 6DF2 6FA1 D5D4 AAA9 EB7A 9D6B E9B5AB E9B5AB F3B2B19C
1926             FC49 FC49 FC49 EEEA -- 67F4 6DF4 6DF4 6DF4 6FB2 D5DA AABA -- FA2D EFA8AD EFA8AD F3B2B19D
1927             FC4A FC4A FC4A EEEB FCCD 67FE 6EAC 6EAC 6EAC 6FAE D5DC AABC EC56 9E19 E9B899 E9B899 F3B2B19E
1928             FC4B FC4B FC4B EEEC EFF0 6856 6EA1 6EA1 6EA1 6FD6 D5EB AACD -- 9ED1 E9BB91 E9BB91 F3B2B19F
1929              
1930             =head1 UTF-8.0 vs. UTF-8.1
1931              
1932             The large character sets has always some problems. One of problem of UTF-8 is
1933             difference between Microsoft's definition and general definition. Already,
1934             in this software, "utf8" means Microsoft's definition. So I named the general
1935             UTF-8 "utf8.1" to distinguish them.
1936              
1937             Terminology and definitions
1938             -------------------------------------------------------------------------------
1939             UTF-8 [ju:ti:ef eit] could mean sometimes UTF-8.0, sometimes UTF-8.x
1940             UTF-8.0 [ju:ti:ef hatten-zero] is Microsoft's definition of the UTF-8
1941             UTF-8.1 [ju:ti:ef hatten-ichi] is general definition of the UTF-8
1942             UTF-8.x [ju:ti:ef hatten-ekks] means both UTF-8.0 and UTF-8.1
1943             -------------------------------------------------------------------------------
1944            
1945             The following is the difference between UTF-8.0 and UTF-8.1.
1946            
1947             #+++++++----------------------------------------------------------------------------------------------------------- CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1948             #||||||| ++++------------------------------------------------------------------------------------------------------ Microsoft CP932, IANA Windows-31J
1949             #||||||| |||| ++++------------------------------------------------------------------------------------------------- IBM CP932
1950             #||||||| |||| |||| ++++-------------------------------------------------------------------------------------------- NEC CP932
1951             #||||||| |||| |||| |||| ++++--------------------------------------------------------------------------------------- JISC Shift_JIS-2004
1952             #||||||| |||| |||| |||| |||| ++++---------------------------------------------------------------------------------- IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1953             #||||||| |||| |||| |||| |||| |||| ++++----------------------------------------------------------------------------- HITACHI KEIS78
1954             #||||||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------------ HITACHI KEIS83
1955             #||||||| |||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------- HITACHI KEIS90
1956             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| ++++-------------------------------------------------------------- FUJITSU JEF
1957             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++--------------------------------------------------------- NEC JIPS(J)
1958             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++---------------------------------------------------- NEC JIPS(E)
1959             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++----------------------------------------------- UNISYS LetsJ
1960             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| +++++++++------------------------------------- Unicode
1961             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| ++++++++++++------------------------ UTF-8.0 (aka UTF-8)
1962             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| ++++++++++++----------- UTF-8.1
1963             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| |||||||||||| ++++++++-- UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1964             #2345678 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 123456789 123456789012 123456789012 12345678
1965             #VVVVVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVV
1966             815C 815C 815C 815C -- DDB7 A1BD A1BD A1BD A1BD 213D 4F7E A1BD 2015 E28095 E28094 F3B0849C
1967             8161 8161 8161 8161 81D2 DFE5 A1C2 A1C2 A1C2 A1C2 2142 4FC2 -- 2225 E288A5 E28096 F3B084A1
1968             817C 817C 817C 817C 81AF E9F3 A1DD A1DD A1DD A1DD 215D 4F5A -- FF0D EFBC8D E28892 F3B084BC
1969             9C5A815C -- -- -- 815C 444A -- -- -- -- -- -- -- 2014 E28094 E28095 F3B2B4AC
1970             9C5A8161 -- -- -- 8161 447C -- -- -- -- -- -- A1C2 2016 E28096 E288A5 F3B2B4B1
1971             9C5A817C -- -- -- 817C 4260 -- -- -- -- -- -- A1DD 2212 E28892 EFBC8D F3B2B58C
1972              
1973             =head1 FIXED ERRATAS OF MAPPINGS
1974              
1975             The mapping of Jacode4e version 2.13.81.11 or earlier has the following erattas:
1976              
1977             =head2 KEIS78, KEIS83, and KEIS90
1978              
1979             Mapping of 'keis78', 'keis83', and 'keis90' had erattas as following:
1980              
1981             ----------------------------------------------
1982             Unicode 2.13.81.12 2.13.81.11
1983             or later or older
1984             ----------------------------------------------
1985             芺 U+82BA KEIS:(no mapping) KEIS:68CF
1986             覀 U+8980 KEIS:(no mapping) KEIS:59A9
1987             麽 U+9EBD KEIS:6DFB KEIS:5EC3
1988             ----------------------------------------------
1989              
1990             =head2 JEF and JEF9P
1991              
1992             Mapping of 'jef' and 'jef9p' had erattas as following:
1993              
1994             ----------------------------------------------
1995             Unicode 2.13.81.12 2.13.81.11
1996             or later or older
1997             ----------------------------------------------
1998             漼 U+6F3C JEF:(no mapping) JEF:56F3
1999             臽 U+81FD JEF:(no mapping) JEF:52E1
2000             海 U+FA45 JEF:55FB JEF:53FA
2001             渚 U+FA46 JEF:BDED JEF:55FB
2002             漢 U+FA47 JEF:56E6 JEF:BDED
2003             煮 U+FA48 JEF:58A7 JEF:56E6
2004             爫 U+FA49 JEF:(no mapping) JEF:58A7
2005             社 U+FA4C JEF:5CD3 JEF:5CB3
2006             祉 U+FA4D JEF:5CD5 JEF:5CD3
2007             祈 U+FA4E JEF:5CD4 JEF:5CD5
2008             祐 U+FA4F JEF:5CD6 JEF:5CD4
2009             祖 U+FA50 JEF:5CD7 JEF:5CD6
2010             祝 U+FA51 JEF:5CD9 JEF:5CD7
2011             禍 U+FA52 JEF:5CE2 JEF:5CD9
2012             禎 U+FA53 JEF:5CE3 JEF:5CE2
2013             穀 U+FA54 JEF:5CF4 JEF:5CE3
2014             突 U+FA55 JEF:5DCD JEF:5CF4
2015             縉 U+FA58 JEF:(no mapping) JEF:5FC8
2016             署 U+FA5A JEF:5FF0 JEF:5EE3
2017             者 U+FA5B JEF:60B5 JEF:5FF0
2018             臭 U+FA5C JEF:60E3 JEF:60B5
2019             艹 U+FA5D JEF:(no mapping) JEF:60E3
2020             ~ U+FF5E JEF:(no mapping) JEF:A1C1
2021             ----------------------------------------------
2022              
2023             =head2 JIPS(J)
2024              
2025             Mapping of 'jipsj' had erattas as following:
2026              
2027             ----------------------------------------------
2028             Unicode 2.13.81.12 2.13.81.11
2029             or later or older
2030             ----------------------------------------------
2031             Ý U+00DD JIPSJ:(no mapping) JIPSJ:A5B1
2032             耰 U+8030 JIPSJ:(no mapping) JIPSJ:CAAB
2033             ----------------------------------------------
2034              
2035             =head2 JIPS(E)
2036              
2037             Mapping of 'jipse' had erattas as following:
2038              
2039             ----------------------------------------------
2040             Unicode 2.13.81.12 2.13.81.11
2041             or later or older
2042             ----------------------------------------------
2043             Ý U+00DD JIPSE:(no mapping) JIPSE:4581
2044             耰 U+8030 JIPSE:(no mapping) JIPSE:9D52
2045             ----------------------------------------------
2046              
2047             =head1 DEPENDENCIES
2048              
2049             This software requires perl version 5.00503 or later to run.
2050             (All of Perl4 users in the world, pardon me!)
2051              
2052             =head1 SOFTWARE LIFE CYCLE
2053              
2054             Jacode.pm
2055             jcode.pl Encode.pm jacode.pl Jacode4e Jacode4e::RoundTrip
2056             --------------------------------------------------------------------------------
2057             1993 Perl4.036 | |
2058             : : : :
2059             1999 Perl5.00503 | | | |
2060             2000 Perl5.6 | | | |
2061             2002 Perl5.8 | Born | | |
2062             2007 Perl5.10 V | | | |
2063             2010 Perl5.12 EOL | Born | |
2064             2011 Perl5.14 | | | |
2065             2012 Perl5.16 | | | |
2066             2013 Perl5.18 | | | |
2067             2014 Perl5.20 | | | |
2068             2015 Perl5.22 | | | |
2069             2016 Perl5.24 | | | |
2070             2017 Perl5.26 | | | |
2071             2018 Perl5.28 | | Born Born
2072             2019 Perl5.30 | | | |
2073             2020 Perl5.32 : : : :
2074             2030 Perl5.52 : : : :
2075             2040 Perl5.72 : : : :
2076             2050 Perl5.92 : : : :
2077             2060 Perl5.112 : : : :
2078             2070 Perl5.132 : : : :
2079             2080 Perl5.152 : : : :
2080             2090 Perl5.172 : : : :
2081             2100 Perl5.192 : : : :
2082             2110 Perl5.212 : : : :
2083             2120 Perl5.232 : : : :
2084             : : V V V V
2085             --------------------------------------------------------------------------------
2086              
2087             =head1 SOFTWARE COVERAGE
2088              
2089             When you lost your way, you can see this matrix and find your way.
2090              
2091             Skill/Use Amateur Semipro Pro Enterprise Enterprise(round-trip)
2092             -------------------------------------------------------------------------------
2093             Expert jacode.pl Encode.pm Encode.pm Jacode4e Jacode4e::RoundTrip
2094             -------------------------------------------------------------------------------
2095             Middle jacode.pl jacode.pl Encode.pm Jacode4e Jacode4e::RoundTrip
2096             -------------------------------------------------------------------------------
2097             Beginner jacode.pl jacode.pl jacode.pl Jacode4e Jacode4e::RoundTrip
2098             -------------------------------------------------------------------------------
2099              
2100             =head1 Why CP932X Born?
2101              
2102             In order to know why CP932X exists the way it is(or isn't), one must first know why CP932X born.
2103              
2104             Q1) Is CCS of JIS X 0208 enough?
2105             A1) No. Often we require GAIJI.
2106            
2107             Q2) Is CCS of JIS X 0213 enough?
2108             A2) It's not perfect, but enough for many people.
2109            
2110             Q3) Is CES by UTF-8 good?
2111             A3) No. In Japanese information processing, it's unstable and not popular still now.
2112            
2113             Q4) Is CES by Shift_JIS-2004 good?
2114             A4) No. Because Shift_JIS-2004 cannot support very popular CP932 and your GAIJI. We need a realistic solution to solving real problem.
2115            
2116             Q5) Is escape sequence good idea to support CCS of JIS X 0213?
2117             A5) No. Because the programming is so hard.
2118            
2119             Q6) Which character is best as single shift code to support CCS of JIS X 0213?
2120             -- The single shift code must be a DBCS code, because DBCS field cannot store SBCS code in some cases
2121             -- Moreover, all GAIJI code points must be yours
2122             -- The impact of this solution must be minimum
2123             A6) I select 1-55-27 as single shift code. It is ghost character and not used by nobody.
2124              
2125             =head1 AUTHOR
2126              
2127             INABA Hitoshi Eina@cpan.orgE in a CPAN
2128              
2129             This project was originated by INABA Hitoshi.
2130              
2131             =head1 LICENSE AND COPYRIGHT
2132              
2133             This software is free software; you can redistribute it and/or
2134             modify it under the same terms as Perl itself. See L.
2135              
2136             This software is distributed in the hope that it will be useful,
2137             but WITHOUT ANY WARRANTY; without even the implied warranty of
2138             MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2139              
2140             =head1 SEE ALSO
2141              
2142             Windows-31J information
2143             http://www2d.biglobe.ne.jp/%7Emsyk/charcode/cp932/index.html
2144              
2145             Windows-31 J Character Set
2146             http://www2d.biglobe.ne.jp/%7Emsyk/charcode/cp932/Windows-31J-charset.html
2147              
2148             Windows-31 J Duplicate Coded Characters and Unicode
2149             http://www2d.biglobe.ne.jp/%7Emsyk/charcode/cp932/uni2sjis-Windows-31J.html
2150              
2151             Data transformation function provided by WebSphere MQ
2152             Chapter 11. Problems with converting certain characters (Japanese language related)
2153             https://www.ibm.com/developerworks/jp/websphere/library/wmq/mq_transform/11.html
2154             https://www.ibm.com/developerworks/jp/websphere/library/wmq/mq_transform/11-pdf.pdf
2155              
2156             CPGID 00290
2157             https://www-01.ibm.com/software/globalization/cdra/
2158             https://www-01.ibm.com/software/globalization/cp/cp00290.html
2159             ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00290.pdf
2160             ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00290.txt
2161              
2162             IBM Japanese Graphic Character Set, Kanji DBCS Host and DBCS - PC
2163             https://www-01.ibm.com/software/globalization/cdra/
2164             ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00300.pdf
2165              
2166             IBM Kanji code list
2167             N:GC18-2040-3
2168              
2169             HiRDB Datareplicator Version 8 manuals, Hitachi, Ltd.
2170             http://itdoc.hitachi.co.jp/manuals/3020/3020636050/W3600001.HTM
2171             http://itdoc.hitachi.co.jp/manuals/3020/3020636050/W3600166.HTM
2172             http://itdoc.hitachi.co.jp/manuals/3020/30203J3820/ISUS0268.HTM
2173             http://itdoc.hitachi.co.jp/manuals/3000/30003D5820/CLNT0235.HTM
2174              
2175             KEIS code book, Culti Co.,Ltd.
2176             http://www.culti.co.jp/2016/02/01/%e3%82%ab%e3%83%ab%e3%83%81%e7%99%ba%e8%a1%8c%e6%9b%b8%e7%b1%8d/
2177              
2178             Appendix B.2 Character code differences
2179             http://itdoc.hitachi.co.jp/manuals/3020/3020759580/G5950334.HTM
2180              
2181             Appendix E Handling of character codes in PDE - Form Designer (applies only to distributed type PDE)
2182             http://itdoc.hitachi.co.jp/manuals/3020/30203p0360/PDEF0203.HTM
2183              
2184             HITAC Character code table (KEIS83)
2185             Document number 8080-2-30
2186             Document number 8080-2-074-10
2187             Document number 8080-2-100-10
2188             Document number 8080-2-109
2189              
2190             Linkexpress, FUJITSU LIMITED
2191             http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/index.html
2192             http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/unyo05/unyo0413.html
2193             http://software.fujitsu.com/jp/manual/manualfiles/m130010/b1fw5992/01z200/b5992-c-00-00.html
2194              
2195             JEF code book, Culti Co.,Ltd.
2196             http://www.culti.co.jp/2016/02/01/jef%e3%82%b3%e3%83%bc%e3%83%89%e3%83%96%e3%83%83%e3%82%af/
2197              
2198             Linkexpress operation manual J2X1-5930-03Z2(00) FUJITSU LIMITED
2199             http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/index.html
2200             http://software.fujitsu.com/jp/manual/manualfiles/M070086/J2X15930/01Z200/unyo05/unyo0416.html
2201             http://software.fujitsu.com/jp/manual/manualfiles/M070086/J2X15930/01Z200/unyo05/unyo0420.html
2202             http://software.fujitsu.com/jp/manual/manualfiles/M070086/J2X15930/01Z200/unyo05/unyo0421.html
2203             http://software.fujitsu.com/jp/manual/manualfiles/m120010/b1fw5691/05z200/index.html
2204             http://software.fujitsu.com/jp/manual/manualfiles/m120010/b1fw5691/05z200/b5691-g-00-00.html
2205             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-01-00.html
2206             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-07-00.html
2207             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-08-00.html
2208             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-09-00.html
2209              
2210             hidekatsu-izuno/jef4j
2211             https://github.com/hidekatsu-izuno/jef4j
2212              
2213             JHTc(JHT command edition)
2214             http://www.vector.co.jp/soft/winnt/util/se094205.html
2215              
2216             FACOM JEF Character code index dictionary
2217             Manual code 99FR-0012-3
2218             Manual code 99FR-8010-1
2219              
2220             JIPS code book, Culti Co.,Ltd.
2221             http://www.culti.co.jp/2016/02/01/jips%e3%82%b3%e3%83%bc%e3%83%89%e3%83%96%e3%83%83%e3%82%af/
2222              
2223             NEC Corporation Standard character set dictionary
2224             ZBB10-3
2225              
2226             NEC Corporation Standard character set dictionary
2227             ZBB11-2
2228              
2229             ClearPath Enterprise Servers MultiLingual System Administration, Operations, and Programming Guide ClearPath MCP 15.0 April 2013 8600 0288-308
2230             https://public.support.unisys.com/aseries/docs/ClearPath-MCP-16.0/PDF/86000288-308.pdf
2231              
2232             Heterogeneous database cooperation among heterogeneous OS environments
2233             http://www.unisys.co.jp/tec_info/tr56/5605.htm
2234              
2235             UNISYS_SJIS KANJI CONVERT(DOS ver)
2236             https://www.vector.co.jp/soft/dos/util/se238607.html
2237              
2238             ANSI X3.4-1968 (US-ASCII) with 0x60/0x27 as left/right single quotation mark to Unicode
2239             http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/US-ASCII-QUOTES.TXT
2240              
2241             JIS X 0201 (1976) to Unicode 1.1 Table
2242             http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0201.TXT
2243              
2244             JIS X 0208 (1990) to Unicode
2245             http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT
2246              
2247             JIS X 0212 (1990) to Unicode
2248             http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0212.TXT
2249              
2250             cp932 to Unicode table
2251             ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT
2252             https://support.microsoft.com/ja-jp/help/170559/prb-conversion-problem-between-shift-jis-and-unicode
2253              
2254             Shift_JIS-2004 to Unicode table
2255             http://x0213.org/codetable/sjis-0213-2004-std.txt
2256              
2257             UTF-8, a transformation format of ISO 10646
2258             https://www.rfc-editor.org/rfc/rfc3629.txt
2259              
2260             iDIVO Ver.1.4.0
2261             https://www.hulft.com/shukka/files/iDIVO/SP-DV1-CC-02-01.pdf
2262              
2263             Kanji shift code
2264             https://ja.wikipedia.org/wiki/%E6%BC%A2%E5%AD%97%E3%82%B7%E3%83%95%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89
2265              
2266             U+32FF SQUARE ERA NAME REIWA
2267             https://unicode.org/versions/Unicode12.1.0/
2268             http://en.glyphwiki.org/wiki/u32ff
2269             https://www.ibm.com/support/pages/zos%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E6%96%B0%E5%85%83%E5%8F%B7%E5%AF%BE%E5%BF%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
2270             http://www.hitachi-support.com/alert/ss/HWS17-007/list.pdf#page=29
2271              
2272             CJKV Information Processing
2273             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-1.sjs
2274             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-2.sjs
2275             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-3.sjs
2276             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-4.sjs
2277             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/83-vs-90-1.sjs
2278             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/83-vs-90-2.sjs
2279             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/TJ2.sjs
2280             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/TJ3.sjs
2281             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/TJ4.sjs
2282              
2283             Very old fj.kanji discussion
2284             http://www.ie.u-ryukyu.ac.jp/~kono/fj/fj.kanji/index.html
2285              
2286             jcode.pl: Perl library for Japanese character code conversion, Kazumasa Utashiro
2287             ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
2288             http://web.archive.org/web/20090608090304/http://srekcah.org/jcode/
2289             ftp://ftp.oreilly.co.jp/pcjp98/utashiro/
2290             http://mail.pm.org/pipermail/tokyo-pm/2002-March/001319.html
2291             https://twitter.com/uta46/status/11578906320
2292              
2293             jacode - Perl program for Japanese character code conversion
2294             https://metacpan.org/search?q=jacode.pl
2295              
2296             Jacode4e - jacode.pl-like program for enterprise
2297             https://metacpan.org/pod/Jacode4e
2298              
2299             Jacode4e::RoundTrip - Jacode4e for round-trip conversion in JIS X 0213
2300             https://metacpan.org/pod/Jacode4e::RoundTrip
2301              
2302             mb - run Perl script in MBCS encoding (not only CJK ;-)
2303             https://metacpan.org/pod/mb
2304              
2305             UTF8::R2 - makes UTF-8 scripting easy for enterprise use or LTS
2306             https://metacpan.org/pod/UTF8::R2
2307              
2308             Modern::Open - Autovivification, Autodie, and 3-args open support
2309             https://metacpan.org/pod/Modern::Open
2310              
2311             Perl7::Handy - Handy Perl7 scripting environment on Perl5
2312             https://metacpan.org/pod/Perl7::Handy
2313              
2314             BackPAN
2315             http://backpan.perl.org/authors/id/I/IN/INA/
2316              
2317             =head1 ACKNOWLEDGEMENTS
2318              
2319             I could make this software by good luck. I thank all stakeholders.
2320              
2321             I received character code table of KEIS, JEF, and JIPS by electronic data
2322             from Culti Co.,Ltd. Moreover, Culti Co.,Ltd. has allowed me to use it to
2323             make open source software.
2324              
2325             I thank Culti Co.,Ltd. once again.
2326              
2327             =head1 HELLO WORLD
2328              
2329             To support JIS X 0213:2004,
2330            
2331             Using ghost character 1-55-27(it's me!),
2332            
2333             Found by JIS X 0208:1997,
2334            
2335             Was born in JIS C 6226-1978.
2336            
2337             Hello world,
2338            
2339             What do we hack, today?
2340            
2341             -- 1-55-27, 2018-01-27
2342              
2343             =cut
2344              
2345             1;
2346              
2347             __DATA__