Integrate mainline (Win2k/MinGW all ok except threads/t/end.t)
Nick Ing-Simmons [Thu, 21 Mar 2002 07:21:57 +0000 (07:21 +0000)]
p4raw-id: //depot/perlio@15382

118 files changed:
Changes
Configure
INSTALL
MANIFEST
NetWare/nw5.c
Porting/check83.pl
cygwin/cygwin.c
djgpp/djgpp.c
embed.fnc
embed.h
embedvar.h
ext/B/t/xref.t
ext/Encode/AUTHORS [new file with mode: 0644]
ext/Encode/CN/CN.pm
ext/Encode/Changes [new file with mode: 0644]
ext/Encode/Encode.pm
ext/Encode/Encode.xs
ext/Encode/Encode/euc-jp-0212.enc [deleted file]
ext/Encode/Encode/euc-jp.ucm
ext/Encode/JP/JP.pm
ext/Encode/JP/Makefile.PL
ext/Encode/KR/KR.pm
ext/Encode/MANIFEST
ext/Encode/README
ext/Encode/TW/TW.pm
ext/Encode/lib/Encode/CN/HZ.pm
ext/Encode/lib/Encode/Description.pod [new file with mode: 0644]
ext/Encode/lib/Encode/Encoding.pm
ext/Encode/lib/Encode/Internal.pm
ext/Encode/lib/Encode/JP/Constants.pm
ext/Encode/lib/Encode/JP/H2Z.pm
ext/Encode/lib/Encode/JP/ISO_2022_JP.pm
ext/Encode/lib/Encode/JP/JIS.pm
ext/Encode/lib/Encode/Tcl.pm
ext/Encode/lib/Encode/Tcl/Escape.pm
ext/Encode/lib/Encode/Tcl/Extended.pm [deleted file]
ext/Encode/lib/Encode/Tcl/Table.pm
ext/Encode/lib/Encode/Unicode.pm
ext/Encode/lib/Encode/XS.pm
ext/Encode/lib/Encode/iso10646_1.pm
ext/Encode/lib/Encode/ucs2_le.pm
ext/Encode/lib/Encode/utf8.pm
ext/Encode/t/CJKalias.t [new file with mode: 0644]
ext/Encode/t/CN.t
ext/Encode/t/Encode.t
ext/Encode/t/JP.t
ext/Encode/t/TW.t
ext/Encode/t/Tcl.t
ext/Encode/t/japanese.pl [deleted file]
ext/Encode/t/jisx0208.euc [moved from ext/Encode/t/table.euc with 100% similarity]
ext/Encode/t/jisx0208.ref [moved from ext/Encode/t/table.ref with 100% similarity]
ext/Encode/t/jisx0212.euc [new file with mode: 0644]
ext/Encode/t/jisx0212.ref [new file with mode: 0644]
ext/Fcntl/Makefile.PL
ext/File/Glob/Makefile.PL
ext/GDBM_File/Makefile.PL
ext/I18N/Langinfo/Makefile.PL
ext/I18N/Langinfo/fallback/const-c.inc [new file with mode: 0644]
ext/I18N/Langinfo/fallback/const-xs.inc [moved from ext/I18N/Langinfo/fallback.xs with 100% similarity]
ext/POSIX/Makefile.PL
ext/Socket/Makefile.PL
ext/Sys/Syslog/Makefile.PL
ext/Sys/Syslog/Syslog.pm
ext/Unicode/Normalize/Changes
ext/Unicode/Normalize/Normalize.pm
ext/Unicode/Normalize/Normalize.xs
ext/Unicode/Normalize/README
ext/Unicode/Normalize/mkheader
ext/Unicode/Normalize/t/func.t
ext/attrs/attrs.xs
gv.c
hints/hpux.sh
hints/linux.sh
hints/solaris_2.sh
intrpvar.h
lib/ExtUtils/t/Constant.t [moved from lib/ExtUtils/t/ExtUtils.t with 99% similarity]
lib/Getopt/Long.pm
lib/Getopt/Long/CHANGES
lib/Pod/Html.pm
lib/Tie/File/t/30_defer.t
lib/dumpvar.pl
lib/open.pm
lib/perl5db.pl
locale.c
os2/os2.c
patchlevel.h
perl.c
perlapi.h
pod/perldebguts.pod
pod/perldebug.pod
pod/perldelta.pod
pod/perlebcdic.pod
pod/perlfaq5.pod
pod/perlfaq6.pod
pod/perlfunc.pod
pod/perlguts.pod
pod/perllocale.pod
pod/perlport.pod
pod/perltoc.pod
pod/perltodo.pod
pod/perlunicode.pod
pod/perluniintro.pod
proto.h
reentr.h
reentr.pl
regcomp.c
regcomp.h
regexec.c
sv.c
t/io/fs.t
t/lib/1_compile.t
t/op/exec.t
t/op/magic.t
t/op/pat.t
vms/vms.c
win32/Makefile
win32/Makefile.win64
win32/win32.c

diff --git a/Changes b/Changes
index cb1c4c4..ff6663c 100644 (file)
--- a/Changes
+++ b/Changes
@@ -28,6 +28,527 @@ example from http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/
 Version v5.7.X         Development release working toward v5.8
 --------------
 ____________________________________________________________________________
+[ 15372] By: jhi                                   on 2002/03/20  16:54:35
+        Log: Reapply #15336.
+     Branch: perl
+          ! ext/Encode/lib/Encode/Tcl.pm
+____________________________________________________________________________
+[ 15371] By: jhi                                   on 2002/03/20  15:28:44
+        Log: Upgrade to Encode 0.93, from Dan Kogai.
+     Branch: perl
+          + ext/Encode/AUTHORS ext/Encode/Changes ext/Encode/t/CJKalias.t
+          ! MANIFEST ext/Encode/CN/CN.pm ext/Encode/Encode.pm
+          ! ext/Encode/JP/JP.pm ext/Encode/KR/KR.pm ext/Encode/MANIFEST
+          ! ext/Encode/README ext/Encode/TW/TW.pm
+          ! ext/Encode/lib/Encode/CN/HZ.pm
+          ! ext/Encode/lib/Encode/Encoding.pm
+          ! ext/Encode/lib/Encode/Internal.pm
+          ! ext/Encode/lib/Encode/JP/Constants.pm
+          ! ext/Encode/lib/Encode/JP/H2Z.pm
+          ! ext/Encode/lib/Encode/JP/ISO_2022_JP.pm
+          ! ext/Encode/lib/Encode/JP/JIS.pm ext/Encode/lib/Encode/Tcl.pm
+          ! ext/Encode/lib/Encode/Tcl/Escape.pm
+          ! ext/Encode/lib/Encode/Tcl/Table.pm
+          ! ext/Encode/lib/Encode/Unicode.pm ext/Encode/lib/Encode/XS.pm
+          ! ext/Encode/lib/Encode/iso10646_1.pm
+          ! ext/Encode/lib/Encode/ucs2_le.pm ext/Encode/lib/Encode/utf8.pm
+          ! ext/Encode/t/JP.t
+____________________________________________________________________________
+[ 15370] By: jhi                                   on 2002/03/20  15:13:42
+        Log: Subject: patch for syslog
+             From: <Nick.Williams@morganstanley.com>
+             Date: Wed, 20 Mar 2002 15:54:14 +0000 (GMT)
+             Message-ID: <Pine.GSO.4.33.0203201548300.14623-200000@cwit119>
+     Branch: perl
+          ! ext/Sys/Syslog/Syslog.pm
+____________________________________________________________________________
+[ 15369] By: jhi                                   on 2002/03/20  15:10:17
+        Log: Some failure updates.
+     Branch: perl
+          ! pod/perldelta.pod
+____________________________________________________________________________
+[ 15368] By: jhi                                   on 2002/03/20  15:02:04
+        Log: Getopt::Long 2.29 from Johan Vromans.
+     Branch: perl
+          ! lib/Getopt/Long.pm lib/Getopt/Long/CHANGES
+____________________________________________________________________________
+[ 15367] By: jhi                                   on 2002/03/20  14:58:56
+        Log: Rename ExtUtils.t to Constant.t, as suggested by
+             Nicholas Clark.
+     Branch: perl
+          + lib/ExtUtils/t/Constant.t
+          - lib/ExtUtils/t/ExtUtils.t
+          ! MANIFEST
+____________________________________________________________________________
+[ 15366] By: jhi                                   on 2002/03/20  14:56:27
+        Log: Subject: [PATCH] TODO - Make Schwern Poorer
+             From: Nicholas Clark <nick@unfortu.net>
+             Date: Tue, 19 Mar 2002 22:50:28 +0000
+             Message-ID: <20020319225027.GF311@Bagpuss.unfortu.net>
+     Branch: perl
+          ! t/lib/1_compile.t
+____________________________________________________________________________
+[ 15365] By: jhi                                   on 2002/03/20  14:47:15
+        Log: Subject: Re: The story of O [PATCH]
+             From: Richard.Foley@t-online.de (Richard Foley)
+             Date: Sun, 17 Mar 2002 08:37:26 +0100
+             Message-ID: <16mUNX-293TDkC@fwd08.sul.t-online.com>
+     Branch: perl
+          ! lib/perl5db.pl
+____________________________________________________________________________
+[ 15364] By: jhi                                   on 2002/03/20  14:43:11
+        Log: Mention the external modules Encode::HanExtra and
+             PadWalker.
+     Branch: perl
+          ! pod/perldelta.pod
+____________________________________________________________________________
+[ 15363] By: jhi                                   on 2002/03/20  14:38:23
+        Log: Subject: [PATCH] List lexicals from debugger
+             From: Peter Scott <Peter@PSDT.com>
+             Date: Tue, 19 Mar 2002 12:28:52 -0800
+             Message-id: <4.3.2.7.2.20020319101746.00aa7aa0@shell2.webquarry.com>
+     Branch: perl
+          ! lib/dumpvar.pl lib/perl5db.pl pod/perldebug.pod
+____________________________________________________________________________
+[ 15362] By: jhi                                   on 2002/03/20  14:37:05
+        Log: Tweaks from Autrijus Tang: should use euc-tw for Taiwan,
+             and :encoding(xxx) was errorneously parsed.
+     Branch: perl
+          ! lib/open.pm
+____________________________________________________________________________
+[ 15361] By: jhi                                   on 2002/03/20  14:34:38
+        Log: Subject: [PATCH bleadperl] exec.t tweak
+             From: Nikola Knezevic <indy@tesla.rcub.bg.ac.yu>
+             Date: Wed, 20 Mar 2002 01:21:40 +0100
+             Message-ID: <18918217607.20020320012140@tesla.rcub.bg.ac.yu>
+             
+             4NT returns 2 as error-code for nonexistant file.
+     Branch: perl
+          ! t/op/exec.t
+____________________________________________________________________________
+[ 15360] By: jhi                                   on 2002/03/20  14:33:09
+        Log: minor Tie::File test patch to make win32 happier, from mjd.
+     Branch: perl
+          ! lib/Tie/File/t/30_defer.t
+____________________________________________________________________________
+[ 15359] By: jhi                                   on 2002/03/20  14:31:53
+        Log: Subject: [PATCH bleadperl] magic.t tweak
+             From: Nikola Knezevic <indy@tesla.rcub.bg.ac.yu>
+             Date: Wed, 20 Mar 2002 00:39:16 +0100
+             Message-ID: <14415673404.20020320003916@tesla.rcub.bg.ac.yu>
+     Branch: perl
+          ! t/op/magic.t
+____________________________________________________________________________
+[ 15358] By: jhi                                   on 2002/03/20  14:23:46
+        Log: Typo fix from Andreas Koenig, plus a tweak.
+     Branch: perl
+          ! pod/perlunicode.pod
+____________________________________________________________________________
+[ 15357] By: jhi                                   on 2002/03/20  14:21:33
+        Log: Sigh.  The _GNU_SOURCE is needed for the struct crypt_data
+             in Mandrake 8.2.  Now we need to figure out a way not to
+             unbreak Apache.
+     Branch: perl
+          ! hints/linux.sh
+____________________________________________________________________________
+[ 15356] By: jhi                                   on 2002/03/20  13:59:58
+        Log: Fix for "UTF-8 bug with s///" from Hugo.
+     Branch: perl
+          ! embed.fnc embed.h proto.h regcomp.c regcomp.h regexec.c sv.c
+          ! t/op/pat.t
+____________________________________________________________________________
+[ 15355] By: jhi                                   on 2002/03/20  02:23:23
+        Log: metaconfig unit change for #15354.
+     Branch: metaconfig
+          ! U/threads/usethreads.U
+____________________________________________________________________________
+[ 15354] By: jhi                                   on 2002/03/20  02:23:01
+        Log: Installation updates on threads and perlio.
+     Branch: perl
+          ! Configure INSTALL
+____________________________________________________________________________
+[ 15353] By: jhi                                   on 2002/03/20  01:17:27
+        Log: Tpo.
+     Branch: perl
+          ! pod/perlfaq6.pod
+____________________________________________________________________________
+[ 15352] By: jhi                                   on 2002/03/20  01:15:54
+        Log: Regen modlib and toc.
+     Branch: perl
+          ! pod/perlmodlib.pod pod/perltoc.pod
+____________________________________________________________________________
+[ 15351] By: jhi                                   on 2002/03/20  01:12:28
+        Log: Whitespace tweaks.
+     Branch: perl
+          ! pod/perldebguts.pod pod/perlfaq5.pod pod/perlfunc.pod
+          ! pod/perltodo.pod pod/perlunicode.pod
+____________________________________________________________________________
+[ 15350] By: jhi                                   on 2002/03/20  00:55:54
+        Log: If it looks like UTF-8 (either nl_langinfo or locale variables),
+             think UTF-8, embrace your inner UTF-8, as suggested by Larry.
+             (And as suggested by Markus Kuhn.)
+             
+             While we are at it, document also the case of
+             mixed hash keys as a known potential troublemaker.
+             (Since it's locale-related, sometimes.)
+     Branch: perl
+          ! embedvar.h intrpvar.h lib/open.pm locale.c perl.c perlapi.h
+          ! pod/perldelta.pod pod/perllocale.pod pod/perlunicode.pod
+          ! pod/perluniintro.pod
+____________________________________________________________________________
+[ 15349] By: jhi                                   on 2002/03/20  00:47:17
+        Log: Surely a typo.
+     Branch: perl
+          ! gv.c
+____________________________________________________________________________
+[ 15348] By: jhi                                   on 2002/03/19  22:05:29
+        Log: Take two.
+     Branch: perl
+          + ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+          + ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15347] By: jhi                                   on 2002/03/19  22:04:45
+        Log: Let's try this from scratch.
+     Branch: perl
+          - ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+          - ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15346] By: jhi                                   on 2002/03/19  21:59:14
+        Log: I could do this all day...
+     Branch: perl
+          ! ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+          ! ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15345] By: jhi                                   on 2002/03/19  21:54:20
+        Log: Grrr.
+     Branch: perl
+          ! ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+          ! ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15344] By: jhi                                   on 2002/03/19  21:49:47
+        Log: Subject: Re: Nearly OK for cygwin@15318
+             From: John Peacock <jpeacock@rowman.com>
+             Date: Tue, 19 Mar 2002 15:58:08 -0500
+             Message-ID: <3C97A660.3060302@rowman.com>
+     Branch: perl
+          ! pod/perlport.pod
+____________________________________________________________________________
+[ 15343] By: jhi                                   on 2002/03/19  21:47:02
+        Log: Subject: Re: Nearly OK for cygwin@15318
+             From: <slaven.rezic@berlin.de>
+             Date: Tue, 19 Mar 2002 21:47:49 +0100
+             Message-Id: <20020319204958.PTWF27460.mailoutvl21@[192.168.139.30]>
+             
+             Subject: Re: Nearly OK for cygwin@15318
+             From: <slaven.rezic@berlin.de>
+             Date: Tue, 19 Mar 2002 21:37:18 +0100
+             Message-Id: <20020319203927.PTPI27460.mailoutvl21@[192.168.139.30]>
+     Branch: perl
+          ! pod/perlport.pod t/io/fs.t
+____________________________________________________________________________
+[ 15342] By: jhi                                   on 2002/03/19  21:41:12
+        Log: D'oh.
+     Branch: perl
+          + ext/I18N/Langinfo/fallback/const-c.inc
+          + ext/I18N/Langinfo/fallback/const-xs.inc
+____________________________________________________________________________
+[ 15341] By: jhi                                   on 2002/03/19  21:40:49
+        Log: Subject: [PATCH] proper fallback for I18N::Langinfo
+             From: Nicholas Clark <nick@unfortu.net>
+             Date: Tue, 19 Mar 2002 22:37:08 +0000
+             Message-ID: <20020319223707.GE311@Bagpuss.unfortu.net>
+             
+             Subject: Re: [PATCH] proper fallback for I18N::Langinfo
+             From: Nicholas Clark <nick@ccl4.org>
+             Date: Tue, 19 Mar 2002 22:39:55 +0000
+             Message-ID: <20020319223954.G94831@plum.flirble.org>
+     Branch: perl
+          - ext/I18N/Langinfo/fallback.xs
+          ! MANIFEST
+____________________________________________________________________________
+[ 15340] By: jhi                                   on 2002/03/19  21:31:16
+        Log: Text, not binary.
+     Branch: perl
+          ! ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+          ! ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15339] By: jhi                                   on 2002/03/19  21:26:10
+        Log: Subject: Re: perl@15244
+             From: "H.Merijn Brand" <h.m.brand@hccnet.nl>
+             Date: Mon, 18 Mar 2002 17:37:31 +0100
+             Message-Id: <20020318173508.8D96.H.M.BRAND@hccnet.nl>
+             
+             (Goedendag: Dutch whitespace police)
+     Branch: perl
+          ! hints/hpux.sh
+____________________________________________________________________________
+[ 15338] By: jhi                                   on 2002/03/19  21:10:29
+        Log: Subject: [PATCH] Re: [ID 20020305.026] Not OK: perl v5.7.3 +DEVEL15046 on sun4-solaris 2.7
+             From: Nicholas Clark <nick@unfortu.net>
+             Date: Tue, 19 Mar 2002 21:52:47 +0000
+             Message-ID: <20020319215246.GC311@Bagpuss.unfortu.net>
+     Branch: perl
+          ! ext/Fcntl/Makefile.PL ext/File/Glob/Makefile.PL
+          ! ext/GDBM_File/Makefile.PL ext/I18N/Langinfo/Makefile.PL
+          ! ext/POSIX/Makefile.PL ext/Socket/Makefile.PL
+          ! ext/Sys/Syslog/Makefile.PL
+____________________________________________________________________________
+[ 15337] By: jhi                                   on 2002/03/19  20:09:22
+        Log: More pathname portability checks.
+     Branch: perl
+          ! Porting/check83.pl
+____________________________________________________________________________
+[ 15336] By: jhi                                   on 2002/03/19  18:41:50
+        Log: Begone, Encode::Tcl::Extended.
+     Branch: perl
+          ! ext/Encode/lib/Encode/Tcl.pm
+____________________________________________________________________________
+[ 15335] By: jhi                                   on 2002/03/19  18:40:10
+        Log: This is like trying to put the shaving cream
+             back to the can...
+     Branch: perl
+          ! hints/linux.sh
+____________________________________________________________________________
+[ 15334] By: jhi                                   on 2002/03/19  18:31:59
+        Log: With the -D_SVID_SOURCE Debian 2.2 dies on conflicting
+             types of usleep().  Fun, fun. fun.
+     Branch: perl
+          ! hints/linux.sh
+____________________________________________________________________________
+[ 15333] By: jhi                                   on 2002/03/19  18:25:21
+        Log: Sarathy's new suggestion for Linux threading flags.
+     Branch: perl
+          ! hints/linux.sh
+____________________________________________________________________________
+[ 15332] By: jhi                                   on 2002/03/19  18:23:30
+        Log: Rename euc-jp-012 as euc-jp, as suggested by Dan Kogai.
+     Branch: perl
+          - ext/Encode/Encode/euc-jp-0212.ucm
+          ! MANIFEST ext/Encode/Encode/euc-jp.ucm
+          ! ext/Encode/JP/Makefile.PL ext/Encode/MANIFEST
+____________________________________________________________________________
+[ 15331] By: jhi                                   on 2002/03/19  18:18:21
+        Log: Subject: [PATCH bleadperl] Add targer _test to win32 makefiles
+             From: Nikola Knezevic <indy@tesla.rcub.bg.ac.yu>
+             Date: Tue, 19 Mar 2002 00:42:22 +0100
+             Message-ID: <1199171923.20020319004222@tesla.rcub.bg.ac.yu>
+     Branch: perl
+          ! win32/Makefile win32/Makefile.win64 win32/makefile.mk
+____________________________________________________________________________
+[ 15330] By: jhi                                   on 2002/03/19  18:00:48
+        Log: "+" is not a valid filename character in VMS.
+     Branch: perl
+          + ext/Encode/Encode/euc-jp-0212.ucm
+          - ext/Encode/Encode/euc-jp+0212.ucm
+          ! ext/Encode/JP/Makefile.PL ext/Encode/MANIFEST
+____________________________________________________________________________
+[ 15329] By: jhi                                   on 2002/03/19  15:49:12
+        Log: Update Changes.
+     Branch: perl
+          ! Changes patchlevel.h
+____________________________________________________________________________
+[ 15328] By: jhi                                   on 2002/03/19  15:25:58
+        Log: Take away _GNU_SOURCE since that does not seem
+             to play well with other software (like Apache),
+             just hint away the WHOAs.
+     Branch: perl
+          ! hints/linux.sh
+____________________________________________________________________________
+[ 15327] By: jhi                                   on 2002/03/19  15:17:12
+        Log: metaconfig unit change for #15326.
+     Branch: metaconfig
+          ! U/threads/d_crypt_r.U
+____________________________________________________________________________
+[ 15326] By: jhi                                   on 2002/03/19  15:16:43
+        Log: Support crypt_r(const char*,const char*, CRYPTD*).
+     Branch: perl
+          ! Configure reentr.h reentr.pl
+____________________________________________________________________________
+[ 15325] By: jhi                                   on 2002/03/19  14:54:21
+        Log: VMS acrobatics from Peter Prymmer.
+     Branch: perl
+          ! lib/ExtUtils/t/ExtUtils.t
+____________________________________________________________________________
+[ 15324] By: jhi                                   on 2002/03/19  14:51:56
+        Log: Subject: [PATCH lib/Pod/Html.pm] remove warning
+             From: Stas Bekman <stas@stason.org>
+             Date: Tue, 19 Mar 2002 13:14:53 +0800 (SGT)
+             Message-ID: <Pine.LNX.4.44.0203191311530.14113-100000@hope.stason.org>
+     Branch: perl
+          ! lib/Pod/Html.pm
+____________________________________________________________________________
+[ 15323] By: jhi                                   on 2002/03/19  14:51:09
+        Log: Subject: [PATCH] Re: ext/B/t/xref.t @15300 on VMS
+             From: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+             Date: Tue, 19 Mar 2002 10:49:27 +0100
+             Message-ID: <20020319104927.C705@rafael>   
+     Branch: perl
+          ! ext/B/t/xref.t
+____________________________________________________________________________
+[ 15322] By: jhi                                   on 2002/03/19  14:50:02
+        Log: Integrate perlio;
+             
+             Move docs for Encode::valid_utf8 (which does not exist)
+             to be docs for utf8::valid() (which does).
+     Branch: perl
+         !> ext/Encode/Encode.pm lib/utf8.pm
+____________________________________________________________________________
+[ 15321] By: jhi                                   on 2002/03/19  14:48:57
+        Log: Remove Encode::Tcl::Extended, suggested by
+             SADAHIRO Tomoyuki.
+     Branch: perl
+          - ext/Encode/Encode/euc-jp-0212.enc
+          - ext/Encode/lib/Encode/Tcl/Extended.pm
+          ! MANIFEST ext/Encode/MANIFEST
+          ! ext/Encode/lib/Encode/Tcl/Escape.pm
+          ! ext/Encode/lib/Encode/Tcl/Table.pm ext/Encode/t/Tcl.t
+____________________________________________________________________________
+[ 15320] By: jhi                                   on 2002/03/19  14:44:18
+        Log: Encode 0.90 (the one with jisx0212-1990) from Dan Kogai.
+     Branch: perl
+          + ext/Encode/Encode/euc-jp+0212.ucm ext/Encode/t/jisx0208.euc
+          + ext/Encode/t/jisx0208.ref ext/Encode/t/jisx0212.euc
+          + ext/Encode/t/jisx0212.ref
+          - ext/Encode/t/japanese.pl ext/Encode/t/table.euc
+          - ext/Encode/t/table.ref
+          ! MANIFEST ext/Encode/CN/CN.pm ext/Encode/Encode.pm
+          ! ext/Encode/Encode.xs ext/Encode/JP/JP.pm
+          ! ext/Encode/JP/Makefile.PL ext/Encode/KR/KR.pm
+          ! ext/Encode/MANIFEST ext/Encode/TW/TW.pm
+          ! ext/Encode/lib/Encode/CN/HZ.pm
+          ! ext/Encode/lib/Encode/Encoding.pm
+          ! ext/Encode/lib/Encode/Internal.pm
+          ! ext/Encode/lib/Encode/JP/Constants.pm
+          ! ext/Encode/lib/Encode/JP/H2Z.pm
+          ! ext/Encode/lib/Encode/JP/ISO_2022_JP.pm
+          ! ext/Encode/lib/Encode/JP/JIS.pm ext/Encode/lib/Encode/Tcl.pm
+          ! ext/Encode/lib/Encode/Tcl/Escape.pm
+          ! ext/Encode/lib/Encode/Tcl/Extended.pm
+          ! ext/Encode/lib/Encode/Tcl/Table.pm
+          ! ext/Encode/lib/Encode/Unicode.pm ext/Encode/lib/Encode/XS.pm
+          ! ext/Encode/lib/Encode/iso10646_1.pm
+          ! ext/Encode/lib/Encode/ucs2_le.pm ext/Encode/lib/Encode/utf8.pm
+          ! ext/Encode/t/CN.t ext/Encode/t/Encode.t ext/Encode/t/JP.t
+          ! ext/Encode/t/TW.t ext/Encode/t/Tcl.t
+____________________________________________________________________________
+[ 15319] By: jhi                                   on 2002/03/19  14:36:41
+        Log: constness+signedness nit.
+     Branch: perl
+          ! ext/Unicode/Normalize/Normalize.xs
+____________________________________________________________________________
+[ 15318] By: jhi                                   on 2002/03/19  14:04:55
+        Log: Update to Unicode::Normalize 0.15 (+ the EBCDIC guards)
+     Branch: perl
+          ! ext/Unicode/Normalize/Changes
+          ! ext/Unicode/Normalize/Normalize.pm
+          ! ext/Unicode/Normalize/Normalize.xs
+          ! ext/Unicode/Normalize/README ext/Unicode/Normalize/mkheader
+          ! ext/Unicode/Normalize/t/func.t
+____________________________________________________________________________
+[ 15317] By: jhi                                   on 2002/03/19  13:56:27
+        Log: Split the ebcdic details to perlebcdic.
+     Branch: perl
+          ! pod/perlebcdic.pod pod/perluniintro.pod
+____________________________________________________________________________
+[ 15316] By: jhi                                   on 2002/03/19  13:31:55
+        Log: Be explicit.
+     Branch: perl
+          ! pod/perluniintro.pod
+____________________________________________________________________________
+[ 15315] By: nick                                  on 2002/03/19  09:24:18
+        Log: Integrate mainline
+     Branch: perlio
+         +> ext/List/Util/t/openhan.t
+         !> (integrate 53 files)
+____________________________________________________________________________
+[ 15314] By: nick                                  on 2002/03/19  07:39:07
+        Log: Move docs for Encode::valid_utf8 (which does not exist)
+             to be docs for utf8::valid() (which does).
+     Branch: perlio
+          ! ext/Encode/Encode.pm lib/utf8.pm
+____________________________________________________________________________
+[ 15313] By: jhi                                   on 2002/03/19  04:58:22
+        Log: Update the Unicode vs EBCDIC situation.
+     Branch: perl
+          ! pod/perlebcdic.pod pod/perluniintro.pod
+____________________________________________________________________________
+[ 15312] By: jhi                                   on 2002/03/19  04:01:39
+        Log: Subject: [DOC PATCH] end.t (was RE: perl@15300 )
+             From: Robert Spier <rspier@pobox.com>
+             Date: Mon, 18 Mar 2002 19:22:55 -0800
+             Message-ID: <15510.44815.383439.823671@rls.cx>
+     Branch: perl
+          ! ext/threads/t/end.t
+____________________________________________________________________________
+[ 15311] By: jhi                                   on 2002/03/19  04:00:38
+        Log: UTF-8 walk errors that become visible in EBCDIC.
+     Branch: perl
+          ! regexec.c
+____________________________________________________________________________
+[ 15310] By: jhi                                   on 2002/03/19  03:48:27
+        Log: s/regcinclasslen/reginclass/ and remove the old
+             reginclass since nothing is using it.
+     Branch: perl
+          ! embed.fnc embed.h proto.h regexec.c
+____________________________________________________________________________
+[ 15309] By: jhi                                   on 2002/03/18  22:18:37
+        Log: Close the file so it can be (a) removed (b) reopened.
+     Branch: perl
+          ! ext/B/t/xref.t
+____________________________________________________________________________
+[ 15308] By: jhi                                   on 2002/03/18  22:17:25
+        Log: Subject: [PATCH utf8.c B.xs] B::perlstring and unicode
+             From: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+             Date: Mon, 18 Mar 2002 23:14:31 +0100
+             Message-ID: <20020318231431.A699@rafael>
+     Branch: perl
+          ! ext/B/B.xs utf8.c
+____________________________________________________________________________
+[ 15307] By: jhi                                   on 2002/03/18  20:54:07
+        Log: Failed patch hunk reapplied.
+     Branch: perl
+          ! lib/Tie/File/t/32_defer_misc.t
+____________________________________________________________________________
+[ 15306] By: jhi                                   on 2002/03/18  20:18:25
+        Log: For DEBUGGING threaded builds.
+     Branch: perl
+          ! sv.c
+____________________________________________________________________________
+[ 15305] By: jhi                                   on 2002/03/18  19:11:43
+        Log: AUTHORS update.
+     Branch: perl
+          ! AUTHORS
+____________________________________________________________________________
+[ 15304] By: jhi                                   on 2002/03/18  19:08:32
+        Log: Someone (*cough* *cough*) stole VMS' getpwent prototype.
+             (Fix from Craig Berry)
+     Branch: perl
+          ! pp_sys.c
+____________________________________________________________________________
+[ 15303] By: jhi                                   on 2002/03/18  18:54:27
+        Log: Subject: [PATCH] configure.com home-grown kill() check
+             From: "Craig A. Berry" <craigberry@mac.com>
+             Date: Mon, 18 Mar 2002 13:52:59 -0600
+             Message-Id: <5.1.0.14.2.20020318134016.01c5ee00@exchi01>
+     Branch: perl
+          ! configure.com
+____________________________________________________________________________
+[ 15302] By: jhi                                   on 2002/03/18  15:58:00
+        Log: Upgrade to Tie::File 0.50.
+     Branch: perl
+          ! lib/Tie/File.pm lib/Tie/File/t/00_version.t
+          ! lib/Tie/File/t/32_defer_misc.t
+____________________________________________________________________________
+[ 15301] By: jhi                                   on 2002/03/18  15:54:52
+        Log: AUTHORS updates.
+     Branch: perl
+          ! AUTHORS
+____________________________________________________________________________
+[ 15300] By: jhi                                   on 2002/03/18  14:58:27
+        Log: Update Changes.
+     Branch: perl
+          ! Changes patchlevel.h
+____________________________________________________________________________
 [ 15299] By: jhi                                   on 2002/03/18  14:53:11
         Log: OS/390 update.
      Branch: perl
index 9678a6e..4cdd0c2 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Mon Mar 18 16:52:30 EET 2002 [metaconfig 3.0 PL70]
+# Generated on Wed Mar 20 05:22:55 EET 2002 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -3440,16 +3440,12 @@ case "$usethreads" in
 $define)
        $cat <<EOM
 
-As of 5.5.640, Perl has two different internal threading implementations,
-the 5.005 version (5005threads) and an interpreter-based version
-(ithreads) that has one interpreter per thread.  Both are very 
-experimental.  This arrangement exists to help developers work out
-which one is better.
+As of release 5.6, Perl has two different threading implementations,
+an interpreter-based version (ithreads) with one interpreter per
+thread, and the 5.005 version (5005threads).  Both implementations
+are considered experimental, but since 5.8 ithreads somewhat less so.
+The 5005threads is effectively unmaintained.
 
-If you're a casual user, you probably don't want interpreter-threads
-at this time.  But if you do, the 'threads' module allows their use,
-and the 'Thread' module offers an interface to both 5005threads and
-ithreads (whichever has been configured).
 EOM
        : Default to ithreads unless overridden on command line or with
        : old config.sh
@@ -9949,6 +9945,10 @@ case "$d_crypt_r" in
        ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
        esac
        case "$crypt_r_proto" in
+       ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
+       ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
+       esac
+       case "$crypt_r_proto" in
        '')     d_crypt_r=undef
                crypt_r_proto=0
                echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
diff --git a/INSTALL b/INSTALL
index 45064a6..dbb757a 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -719,19 +719,23 @@ line so that the hint files can make appropriate adjustments.
 
 The default is to compile without thread support.
 
-As of v5.5.64, perl has two different internal threads implementations.
-The 5.005 version (5005threads) and an interpreter-based implementation
-(ithreads) with one interpreter per thread.  By default, Configure selects
-ithreads if -Dusethreads is specified.  However, you can select the old
-5005threads behavior instead by either
+Perl has two different internal threads implementations.  The current
+model (available internally since 5.6, and as a user-level module
+since 5.8) is called interpreter-based implementation (ithreads),
+with one interpreter per thread, and explicit sharing of data.
 
-       sh Configure -Dusethreads -Duse5005threads
+The 5.005 version (5005threads) is considered obsolete, buggy, and
+unmaintained.
+
+By default, Configure selects ithreads if -Dusethreads is specified.
 
-or by
-       sh Configure -Dusethreads -Uuseithreads
+However, you can select the old 5005threads behavior
 
-Eventually (by perl v5.6.0) this internal confusion ought to disappear,
-and these options may disappear as well.
+       sh Configure -Dusethreads -Duse5005threads
+
+If you decide to use ithreads, the 'threads' module allows their use,
+and the 'Thread' module offers an interface to both 5005threads and
+ithreads (whichever has been configured).
 
 =head2 Large file support.
 
@@ -801,32 +805,30 @@ and the long double support.
 =head2 Selecting File IO mechanisms
 
 Previous versions of perl used the standard IO mechanisms as defined in
-stdio.h.  Versions 5.003_02 and later of perl allow alternate IO
+stdio.h.  Versions 5.003_02 and later of perl allowed alternate IO
 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
 the default and is the only supported mechanism.
 
-This PerlIO abstraction can be enabled either on the Configure command
-line with
+Starting from Perl 5.8 the default mechanism is to use the PerlIO
+abstraction, because it allows better control of I/O mechanisms,
+instead of having to work with (often, work around) vendors' I/O
+implementations.
 
-       sh Configure -Duseperlio
+This PerlIO abstraction can be disabled either on the Configure
+command line with
 
-or interactively at the appropriate Configure prompt.
+       sh Configure -Uuseperlio
 
-If you choose to use the PerlIO abstraction layer, there are two
-(experimental) possibilities for the underlying IO calls.  These have been
-tested to some extent on some platforms, but are not guaranteed to work
-everywhere.
-
-=over 4
-
-=item 1.
+or interactively at the appropriate Configure prompt.
 
-AT&T's "sfio".  This has superior performance to stdio.h in many
-cases, and is extensible by the use of "discipline" modules.  Sfio
-currently only builds on a subset of the UNIX platforms perl supports.
-Because the data structures are completely different from stdio, perl
-extension modules or external libraries may not work.  This
-configuration exists to allow these issues to be worked on.
+With the PerlIO abstraction layer, there is another possibility for
+the underlying IO calls, AT&T's "sfio".  This has superior performance
+to stdio.h in many cases, and is extensible by the use of "discipline"
+modules ("Native" PerlIO has them too).  Sfio currently only builds on
+a subset of the UNIX platforms perl supports.  Because the data
+structures are completely different from stdio, perl extension modules
+or external libraries may not work.  This configuration exists to
+allow these issues to be worked on.
 
 This option requires the 'sfio' package to have been built and installed.
 The latest sfio is available from http://www.research.att.com/sw/tools/sfio/
@@ -846,24 +848,6 @@ Configure should detect this problem and warn you about problems with
 _exit vs. exit.  If you have this problem, the fix is to go back to
 your sfio sources and correct iffe's guess about atexit.
 
-=item 2.
-
-Normal stdio IO, but with all IO going through calls to the PerlIO
-abstraction layer.  This configuration can be used to check that perl and
-extension modules have been correctly converted to use the PerlIO
-abstraction.
-
-This configuration should work on all platforms (but might not).
-
-You select this option via:
-
-       sh Configure -Duseperlio -Uusesfio
-
-If you have already selected -Duseperlio, and if Configure does not
-detect sfio, then this will be the default suggested by Configure.
-
-=back
-
 =head2 SOCKS
 
 Perl can be configured to be 'socksified', that is, to use the SOCKS
index 07ee1a3..04a4628 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -196,13 +196,15 @@ ext/DynaLoader/hints/openbsd.pl   Hint for DynaLoader for named architecture
 ext/DynaLoader/Makefile.PL     Dynamic Loader makefile writer
 ext/DynaLoader/README          Dynamic Loader notes and intro
 ext/DynaLoader/XSLoader_pm.PL  Simple XS Loader perl module
+ext/Encode/AUTHORS             Encode extension
+ext/Encode/Changes             Encode extension
 ext/Encode/CN/CN.pm            Encode extension
 ext/Encode/CN/Makefile.PL      Encode extension
 ext/Encode/compile             Encode extension
 ext/Encode/encengine.c         Encode extension
 ext/Encode/encode.h            Encode extension
 ext/Encode/Encode.pm                   Encode extension
-ext/Encode/Encode.xs           Encode extension
+ext/Encode/Encode.xs                   Encode extension
 ext/Encode/Encode/11643-1.enc          Encode table
 ext/Encode/Encode/11643-2.enc          Encode table
 ext/Encode/Encode/2022-cn.enc          Encode table
@@ -289,7 +291,6 @@ ext/Encode/Encode/cp950.enc         Encode table
 ext/Encode/Encode/dingbats.enc         Encode table
 ext/Encode/Encode/dingbats.ucm         Encode table
 ext/Encode/Encode/euc-cn.enc           Encode table
-ext/Encode/Encode/euc-jp-0212.enc      Encode table
 ext/Encode/Encode/euc-jp.enc           Encode table
 ext/Encode/Encode/euc-jp.ucm           Encode table
 ext/Encode/Encode/euc-kr.enc           Encode table
@@ -339,6 +340,7 @@ ext/Encode/JP/Makefile.PL   Encode extension
 ext/Encode/KR/KR.pm            Encode extension
 ext/Encode/KR/Makefile.PL              Encode extension
 ext/Encode/lib/Encode/CN/HZ.pm         Encode extension
+ext/Encode/lib/Encode/Description.pod  Encode extension
 ext/Encode/lib/Encode/Encoding.pm      Encode extension
 ext/Encode/lib/Encode/Internal.pm      Encode extension
 ext/Encode/lib/Encode/iso10646_1.pm    Encode extension
@@ -348,7 +350,6 @@ ext/Encode/lib/Encode/JP/ISO_2022_JP.pm     Encode extension
 ext/Encode/lib/Encode/JP/JIS.pm        Encode extension
 ext/Encode/lib/Encode/Tcl.pm           Encode extension
 ext/Encode/lib/Encode/Tcl/Escape.pm    Encode extension
-ext/Encode/lib/Encode/Tcl/Extended.pm  Encode extension
 ext/Encode/lib/Encode/Tcl/Table.pm     Encode extension
 ext/Encode/lib/Encode/ucs2_le.pm       Encode extension
 ext/Encode/lib/Encode/Unicode.pm       Encode extension
@@ -358,12 +359,14 @@ ext/Encode/lib/EncodeFormat.pod           Encode extension
 ext/Encode/Makefile.PL         Encode extension makefile writer
 ext/Encode/MANIFEST            Encode extension
 ext/Encode/README              Encode extension
+ext/Encode/t/CJKalias.t                Encode extension
 ext/Encode/t/CN.t              Encode extension test
 ext/Encode/t/Encode.t          Encode extension test
-ext/Encode/t/japanese.pl       Encode extension
+ext/Encode/t/jisx0208.euc      Encode extension test
+ext/Encode/t/jisx0208.ref      Encode extension test
+ext/Encode/t/jisx0212.euc      Encode extension test
+ext/Encode/t/jisx0212.ref      Encode extension test
 ext/Encode/t/JP.t              Encode extension test
-ext/Encode/t/table.euc         Encode extension test
-ext/Encode/t/table.ref         Encode extension test
 ext/Encode/t/Tcl.t             Encode extension test
 ext/Encode/t/TW.t              Encode extension test
 ext/Encode/TW/Makefile.PL      Encode extension
@@ -398,7 +401,8 @@ ext/GDBM_File/GDBM_File.xs  GDBM extension external subroutines
 ext/GDBM_File/hints/sco.pl     Hint for GDBM_File for named architecture
 ext/GDBM_File/Makefile.PL      GDBM extension makefile writer
 ext/GDBM_File/typemap          GDBM extension interface types
-ext/I18N/Langinfo/fallback.xs  I18N::Langinfo
+ext/I18N/Langinfo/fallback/const-c.inc I18N::Langinfo
+ext/I18N/Langinfo/fallback/const-xs.inc        I18N::Langinfo
 ext/I18N/Langinfo/Langinfo.pm  I18N::Langinfo
 ext/I18N/Langinfo/Langinfo.t   I18N::Langinfo
 ext/I18N/Langinfo/Langinfo.xs  I18N::Langinfo
@@ -992,8 +996,8 @@ lib/ExtUtils/MM_VMS.pm              MakeMaker methods for VMS
 lib/ExtUtils/MM_Win32.pm       MakeMaker methods for Win32
 lib/ExtUtils/Packlist.pm       Manipulates .packlist files
 lib/ExtUtils/t/Command.t       See if ExtUtils::Command works (Win32 only)
+lib/ExtUtils/t/Constant.t      See if ExtUtils::Constant works
 lib/ExtUtils/t/Embed.t         See if ExtUtils::Embed and embedding works
-lib/ExtUtils/t/ExtUtils.t      See if extutils work
 lib/ExtUtils/t/hints.t      See if hint files are honored.
 lib/ExtUtils/t/Installed.t     See if ExtUtils::Installed works
 lib/ExtUtils/t/Manifest.t      See if ExtUtils::Manifest works
index 743fd34..66ca348 100644 (file)
@@ -935,7 +935,7 @@ do_aspawn(void *vreally, void **vmark, void **vsp)
        if (status < 0) {
            dTHR;
            if (ckWARN(WARN_EXEC))
-               Perl_warner(aTHX_ WARN_EXEC, "Can't spawn \"%s\": %s", argv[0], strerror(errno));
+               Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't spawn \"%s\": %s", argv[0], strerror(errno));
            status = 255 * 256;
        }
        else
index 51b2b11..0522bc0 100644 (file)
@@ -1,12 +1,22 @@
 #!/usr/local/bin/perl
 
-# Check whether there are naming conflicts when names are truncated
-# to the DOSish case-ignoring 8.3 format
+# Check whether there are naming conflicts when names are truncated to
+# the DOSish case-ignoring 8.3 format, plus other portability no-nos.
 
 sub eight_dot_three {
     my ($dir, $base, $ext) = ($_[0] =~ m!^(?:(.+)/)?([^/.]+)(?:\.([^/.]+))?$!);
+    my $file = $base . defined $ext ? ".$ext" : "";
     $base = substr($base, 0, 8);
     $ext  = substr($ext,  0, 3) if defined $ext;
+    if ($dir =~ /\./)  {
+       warn "$dir: directory name contains '.'\n";
+    }
+    if ($file =~ /[^A-Za-z0-9\._-]/) {
+       warn "$file: filename contains non-portable characters\n";
+    }
+    if (length $file > 30) {
+       warn "$file: filename longer than 30 characters\n";
+    }
     if (defined $dir) {
        return ($dir, defined $ext ? "$dir/$base.$ext" : "$dir/$base");
     } else {
index 0b4dcc8..0e9d07d 100644 (file)
@@ -28,7 +28,7 @@ do_spawnvp (const char *path, const char * const *argv)
     if (childpid < 0) {
        status = -1;
        if(ckWARN(WARN_EXEC))
-           Perl_warner(aTHX_ WARN_EXEC,"Can't spawn \"%s\": %s",
+           Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't spawn \"%s\": %s",
                    path,Strerror (errno));
     } else {
        do {
index 6aa290e..d770cef 100644 (file)
@@ -106,7 +106,7 @@ static int
 convretcode (pTHX_ int rc,char *prog,int fl)
 {
     if (rc < 0 && ckWARN(WARN_EXEC))
-        Perl_warner(aTHX_ WARN_EXEC,"Can't %s \"%s\": %s",
+        Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't %s \"%s\": %s",
                    fl ? "exec" : "spawn",prog,Strerror (errno));
     if (rc >= 0)
         return rc << 8;
index 16c0066..e9841dd 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -1167,6 +1167,8 @@ s |U8*    |reghop3        |U8 *pos|I32 off|U8 *lim
 s      |U8*    |reghopmaybe    |U8 *pos|I32 off
 s      |U8*    |reghopmaybe3   |U8 *pos|I32 off|U8 *lim
 s      |char*  |find_byclass   |regexp * prog|regnode *c|char *s|char *strend|char *startpos|I32 norun
+s      |void   |to_utf8_substr |regexp * prog
+s      |void   |to_byte_substr |regexp * prog
 #endif
 
 #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
diff --git a/embed.h b/embed.h
index 787a045..10c6a53 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define reghopmaybe            S_reghopmaybe
 #define reghopmaybe3           S_reghopmaybe3
 #define find_byclass           S_find_byclass
+#define to_utf8_substr         S_to_utf8_substr
+#define to_byte_substr         S_to_byte_substr
 #endif
 #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
 #define deb_curcv              S_deb_curcv
 #define reghopmaybe(a,b)       S_reghopmaybe(aTHX_ a,b)
 #define reghopmaybe3(a,b,c)    S_reghopmaybe3(aTHX_ a,b,c)
 #define find_byclass(a,b,c,d,e,f)      S_find_byclass(aTHX_ a,b,c,d,e,f)
+#define to_utf8_substr(a)      S_to_utf8_substr(aTHX_ a)
+#define to_byte_substr(a)      S_to_byte_substr(aTHX_ a)
 #endif
 #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
 #define deb_curcv(a)           S_deb_curcv(aTHX_ a)
index 965f265..8eccfa2 100644 (file)
 #define PL_utf8_upper          (PERL_GET_INTERP->Iutf8_upper)
 #define PL_utf8_xdigit         (PERL_GET_INTERP->Iutf8_xdigit)
 #define PL_uudmap              (PERL_GET_INTERP->Iuudmap)
+#define PL_wantutf8            (PERL_GET_INTERP->Iwantutf8)
 #define PL_warnhook            (PERL_GET_INTERP->Iwarnhook)
 #define PL_widesyscalls                (PERL_GET_INTERP->Iwidesyscalls)
 #define PL_xiv_arenaroot       (PERL_GET_INTERP->Ixiv_arenaroot)
 #define PL_utf8_upper          (vTHX->Iutf8_upper)
 #define PL_utf8_xdigit         (vTHX->Iutf8_xdigit)
 #define PL_uudmap              (vTHX->Iuudmap)
+#define PL_wantutf8            (vTHX->Iwantutf8)
 #define PL_warnhook            (vTHX->Iwarnhook)
 #define PL_widesyscalls                (vTHX->Iwidesyscalls)
 #define PL_xiv_arenaroot       (vTHX->Ixiv_arenaroot)
 #define PL_Iutf8_upper         PL_utf8_upper
 #define PL_Iutf8_xdigit                PL_utf8_xdigit
 #define PL_Iuudmap             PL_uudmap
+#define PL_Iwantutf8           PL_wantutf8
 #define PL_Iwarnhook           PL_warnhook
 #define PL_Iwidesyscalls       PL_widesyscalls
 #define PL_Ixiv_arenaroot      PL_xiv_arenaroot
index 8b14355..b1d0bc0 100644 (file)
@@ -1,4 +1,4 @@
-#!./perl -w
+#!./perl
 
 BEGIN {
     chdir 't' if -d 't';
@@ -6,6 +6,8 @@ BEGIN {
 }
 
 use strict;
+use warnings;
+no warnings 'once';
 use Test::More tests => 14;
 
 # line 50
@@ -13,12 +15,14 @@ use_ok( 'B::Xref' );
 
 my $file = 'xreftest.out';
 
+open SAVEOUT, ">&STDOUT" or diag $!;
+close STDOUT;
 # line 100
 our $compilesub = B::Xref::compile("-o$file");
 ok( ref $compilesub eq 'CODE', "compile() returns a coderef ($compilesub)" );
 $compilesub->(); # Compile this test script
-
-#END { unlink $file or diag "END block failed: $!" }
+close STDOUT;
+open STDOUT, ">&SAVEOUT" or diag $!;
 
 # Now parse the output
 # line 200
@@ -94,7 +98,6 @@ is(
 );
 
 END {
-    close XREF;
     1 while unlink $file;
 }
 
diff --git a/ext/Encode/AUTHORS b/ext/Encode/AUTHORS
new file mode 100644 (file)
index 0000000..a131c51
--- /dev/null
@@ -0,0 +1,17 @@
+# To give due honor to those who have made Encode module  what is is today,
+# here are easily-from-changelogs-extractable people and their
+# (hopefully) current and preferred email addresses (as of early 2001,
+# if known).
+#
+# The use of this database for anything else than Encode and/or Perl 
+# development is strictly forbidden.  (Passive distribution with the Perl 
+# source code kit is naturally allowed.)
+#
+# This list is in alphabetical order.
+-- 
+Anton Tagunov                  <tagunov@motor.ru>
+Autrijus Tang                  <autrijus@autrijus.org>
+Dan Kogai                      <dankogai@dan.co.jp>
+Jarkko Hietaniemi              <jhi@iki.fi>
+Nick Ing-Simmons               <nick@ing-simmons.net>
+SADAHIRO Tomoyuki              <SADAHIRO@cpan.org>
index 185c0cf..12a9fd3 100644 (file)
@@ -1,11 +1,14 @@
 package Encode::CN;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 use Encode;
 use Encode::CN::HZ;
 use XSLoader;
 XSLoader::load('Encode::CN',$VERSION);
 
+Encode::define_alias( qr/euc.*cn$/i     => '"euc-cn"' );
+Encode::define_alias( qr/cn.*euc/i      => '"euc-cn"' );
+
 1;
 __END__
 =head1 NAME
@@ -14,21 +17,26 @@ Encode::CN - China-based Chinese Encodings
 
 =head1 SYNOPSIS
 
-    use Encode 'encode'; 
+    use Encode qw/encode decode/; 
     $euc_cn = encode("euc-cn", $utf8);   # loads Encode::CN implicitly
-    $utf8   = encode("euc-cn", $euc_cn); # ditto
+    $utf8   = decode("euc-cn", $euc_cn); # ditto
 
 =head1 DESCRIPTION
 
 This module implements China-based Chinese charset encodings.
 Encodings supported are as follows.
 
-  euc-cn       EUC (Extended Unix Character)
-  gb2312       The raw (low-bit) GB2312 character map
-  gb12345      Traditional chinese counterpart to GB2312 (raw)
-  iso-ir-165   GB2312 + GB6345 + GB8565 + additions
-  cp936                Code Page 936, also known as GBK (Extended GuoBiao)
-  hz           7-bit escaped GB2312 encoding
+  Canonical   Alias            Description
+  --------------------------------------------------------------------
+  euc-cn      /euc.*cn$/i      EUC (Extended Unix Character)
+             /cn.*euc$/i
+  gb2312                       The raw (low-bit) GB2312 character map
+  gb12345                      Traditional chinese counterpart to 
+                               GB2312 (raw)
+  iso-ir-165                   GB2312 + GB6345 + GB8565 + additions
+  cp936                                Code Page 936, also known as GBK 
+                               (Extended GuoBiao)
+  hz                           7-bit escaped GB2312 encoding
 
 To find how to use this module in detail, see L<Encode>.
 
diff --git a/ext/Encode/Changes b/ext/Encode/Changes
new file mode 100644 (file)
index 0000000..b48001e
--- /dev/null
@@ -0,0 +1,57 @@
+# Revision history for Perl extension Encode.
+#
+# $Id: Changes,v 0.94 2002/03/20 19:59:38 dankogai Exp dankogai $
+#
+
+0.94  Thu Mar 21 2002
++ lib/Encode/Description.pod
+! lib/Encode/Encoding.pm
+  Now the pod in Encode.pm is abridged as programming references.
+  lib/Encode/Description.pod contains the original, detailed description
+  and Encode::Encoding explains how to write your own module to
+  add new encodings.  So far, lib/Encode/Description.pod contains
+  the whole pod once in Encode.pm.  This is intentional.
+! Encode.pm
+  Pod revisions by Anton Tagunov
+  Message-Id: <517178431.20020320174824@motor.ru>
+! lib/Encode/Tcl.pm
+  all occrance of Encode::Tcl::Extended removed including pod
+! t/CJKalias.t
+  test now checks $encoding->name only; $encoding->{name} are
+  no longer check to find the canonical name.
+! lib/Encode/JP/JIS.pm
+! lib/Encode/JP/ISO_2022_JP.pm
+  ->name() added to be more compliant with API  
+! CN/CN.pm
+! JP/JP.pm
+! KR/KR.pm
+! TW/TW.pm
+! t/CJKalias.t
+  Patch by Autrijus to add aliases to TW and fixes to POD
+  Message-Id: <20020320090619.GA24774@not.autrijus.org>
+! AUTHORS
+  SADAHIRO Tomoyuki added as should.  My apologies.
+
+0.93  Wed Mar 20 2002
+* First release to be uploaded to CPAN.  For prehistoric changes,
+  please see Changes file of perl distibution as well as 
+  perl-unicode@perl.org archive, available at:
+  http://archive.develooper.com/perl-unicode@perl.org/
+
+  Changes Since 0.92 includes;
++ Changes
++ AUTHORS
+! Encode.pm
+! README
+  + Mention to perl-unicode@perl.org added
+! JP/JP.pm
+  + Encoding aliases added so you can feed locale names
+    and MIME Charset="" directly.
+  - Mention to JISX0212 removed because it's fixed
+! CN/CN.pm
+! KR/KR.pm
+  + Encoding aliases added.  Note TW is left untouched because
+    euc-tw is not implemented in TW but in Encode::HanExtra.
+    Autrijus, you may fix Encode::HanExtra.
++ t/CJKalias.t
+  + to test encode aliases added
index 6a86673..8dc14c3 100644 (file)
@@ -1,6 +1,6 @@
 package Encode;
 use strict;
-our $VERSION = '0.40';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 require DynaLoader;
 require Exporter;
@@ -66,6 +66,8 @@ our %external_tables =
        cp936           => 'Encode/CN.pm',
        'iso-ir-165'    => 'Encode/CN.pm',
        'euc-jp'        => 'Encode/JP.pm',
+       'iso-2022-jp'   => 'Encode/JP.pm',
+       '7bit-jis'      => 'Encode/JP.pm',
        shiftjis        => 'Encode/JP.pm',
        macjapan        => 'Encode/JP.pm',
        cp932           => 'Encode/JP.pm',
@@ -201,7 +203,6 @@ define_alias( qr/^gbk$/i => '"cp936"');
 # TODO: Thai encoding TCVN
 # TODO: Korean encoding Johab
 # TODO: Vietnamese encodings VPS
-# TODO: Japanese encoding JIS (not the same as SJIS)
 # TODO: Mac Asian+African encodings: Arabic Armenian Bengali Burmese
 #       ChineseSimp ChineseTrad Devanagari Ethiopic ExtArabic
 #       Farsi Georgian Gujarati Gurmukhi Hebrew Japanese
@@ -338,239 +339,8 @@ Encode - character encodings
 The C<Encode> module provides the interfaces between Perl's strings
 and the rest of the system.  Perl strings are sequences of B<characters>.
 
-The repertoire of characters that Perl can represent is at least that
-defined by the Unicode Consortium. On most platforms the ordinal
-values of the characters (as returned by C<ord(ch)>) is the "Unicode
-codepoint" for the character (the exceptions are those platforms where
-the legacy encoding is some variant of EBCDIC rather than a super-set
-of ASCII - see L<perlebcdic>).
-
-Traditionaly computer data has been moved around in 8-bit chunks
-often called "bytes". These chunks are also known as "octets" in
-networking standards. Perl is widely used to manipulate data of
-many types - not only strings of characters representing human or
-computer languages but also "binary" data being the machines representation
-of numbers, pixels in an image - or just about anything.
-
-When Perl is processing "binary data" the programmer wants Perl to process
-"sequences of bytes". This is not a problem for Perl - as a byte has 256
-possible values it easily fits in Perl's much larger "logical character".
-
-Due to size concerns, each of B<CJK> (Chinese, Japanese & Korean) modules
-are not loaded in memory until the first time they're used. Although you
-don't have to C<use> the corresponding B<Encode::>(B<TW>|B<CN>|B<JP>|B<KR>)
-modules first, be aware that those encodings will not be in C<%encodings>
-until their module is loaded (either implicitly through using encodings
-contained in the same module, or via an explicit C<use>).
-
-=head2 TERMINOLOGY
-
-=over 4
-
-=item *
-
-I<character>: a character in the range 0..(2**32-1) (or more).
-(What Perl's strings are made of.)
-
-=item *
-
-I<byte>: a character in the range 0..255
-(A special case of a Perl character.)
-
-=item *
-
-I<octet>: 8 bits of data, with ordinal values 0..255
-(Term for bytes passed to or from a non-Perl context, e.g. disk file.)
-
-=back
-
-The marker [INTERNAL] marks Internal Implementation Details, in
-general meant only for those who think they know what they are doing,
-and such details may change in future releases.
-
-=head1 ENCODINGS
-
-=head2 Characteristics of an Encoding
-
-An encoding has a "repertoire" of characters that it can represent,
-and for each representable character there is at least one sequence of
-octets that represents it.
-
-=head2 Types of Encodings
-
-Encodings can be divided into the following types:
-
-=over 4
-
-=item * Fixed length 8-bit (or less) encodings.
-
-Each character is a single octet so may have a repertoire of up to
-256 characters. ASCII and iso-8859-* are typical examples.
-
-=item * Fixed length 16-bit encodings
-
-Each character is two octets so may have a repertoire of up to
-65 536 characters.  Unicode's UCS-2 is an example.  Also used for
-encodings for East Asian languages.
-
-=item * Fixed length 32-bit encodings.
-
-Not really very "encoded" encodings. The Unicode code points
-are just represented as 4-octet integers. None the less because
-different architectures use different representations of integers
-(so called "endian") there at least two disctinct encodings.
-
-=item * Multi-byte encodings
-
-The number of octets needed to represent a character varies.
-UTF-8 is a particularly complex but regular case of a multi-byte
-encoding. Several East Asian countries use a multi-byte encoding
-where 1-octet is used to cover western roman characters and Asian
-characters get 2-octets.
-(UTF-16 is strictly a multi-byte encoding taking either 2 or 4 octets
-to represent a Unicode code point.)
-
-=item * "Escape" encodings.
-
-These encodings embed "escape sequences" into the octet sequence
-which describe how the following octets are to be interpreted.
-The iso-2022-* family is typical. Following the escape sequence
-octets are encoded by an "embedded" encoding (which will be one
-of the above types) until another escape sequence switches to
-a different "embedded" encoding.
-
-These schemes are very flexible and can handle mixed languages but are
-very complex to process (and have state).  No escape encodings are
-implemented for Perl yet.
-
-=back
-
-=head2 Specifying Encodings
-
-Encodings can be specified to the API described below in two ways:
-
-=over 4
-
-=item 1. By name
-
-Encoding names are strings with characters taken from a restricted
-repertoire.  See L</"Encoding Names">.
-
-=item 2. As an object
-
-Encoding objects are returned by C<find_encoding($name, [$skip_external])>.
-If the second parameter is true, Encode will refrain from loading external
-modules for CJK encodings.
-
-=back
-
-=head2 Encoding Names
-
-Encoding names are case insensitive. White space in names is ignored.
-In addition an encoding may have aliases. Each encoding has one
-"canonical" name.  The "canonical" name is chosen from the names of
-the encoding by picking the first in the following sequence:
-
-=over 4
-
-=item * The MIME name as defined in IETF RFCs.
-
-=item * The name in the IANA registry.
-
-=item * The name used by the organization that defined it.
-
-=back
-
-Because of all the alias issues, and because in the general case
-encodings have state C<Encode> uses the encoding object internally
-once an operation is in progress.
-
-As of Perl 5.8.0, at least the following encodings are recognized
-(the => marks aliases):
-
-  ASCII
-
-  US-ASCII => ASCII
-
-The Unicode:
-
-  UTF-8
-  UTF-16
-  UCS-2
-
-  ISO 10646-1 => UCS-2
-
-The ISO 8859 and KOI:
-
-  ISO 8859-1  ISO 8859-6   ISO 8859-11         KOI8-F
-  ISO 8859-2  ISO 8859-7   (12 doesn't exist)  KOI8-R
-  ISO 8859-3  ISO 8859-8   ISO 8859-13         KOI8-U
-  ISO 8859-4  ISO 8859-9   ISO 8859-14
-  ISO 8859-5  ISO 8859-10  ISO 8859-15
-                           ISO 8859-16
-
-  Latin1  => 8859-1  Latin6  => 8859-10
-  Latin2  => 8859-2  Latin7  => 8859-13
-  Latin3  => 8859-3  Latin8  => 8859-14
-  Latin4  => 8859-4  Latin9  => 8859-15
-  Latin5  => 8859-9  Latin10 => 8859-16
-
-  Cyrillic => 8859-5
-  Arabic   => 8859-6
-  Greek    => 8859-7
-  Hebrew   => 8859-8
-  Thai     => 8859-11
-  TIS620   => 8859-11
-
-The CJKV: Chinese, Japanese, Korean, Vietnamese:
-
-  ISO 2022     ISO 2022 JP-1  JIS 0201  GB 1988   Big5       EUC-CN
-  ISO 2022 CN  ISO 2022 JP-2  JIS 0208  GB 2312   HZ         EUC-JP
-  ISO 2022 JP  ISO 2022 KR    JIS 0210  GB 12345  CNS 11643  EUC-JP-0212
-  Shift-JIS                            GBK       Big5-HKSCS EUC-KR
-  VISCII                               ISO-IR-165
-
-(Due to size concerns, additional Chinese encodings including C<GB 18030>,
-C<EUC-TW> and C<BIG5PLUS> are distributed separately on CPAN, under the name
-L<Encode::HanExtra>.)
-
-The PC codepages:
-
-  CP37   CP852  CP861  CP866  CP949   CP1251  CP1256
-  CP424  CP855  CP862  CP869  CP950   CP1252  CP1257
-  CP737  CP856  CP863  CP874  CP1006  CP1253  CP1258
-  CP775  CP857  CP864  CP932  CP1047  CP1254
-  CP850  CP860  CP865  CP936  CP1250  CP1255
-
-  WinLatin1     => CP1252
-  WinLatin2     => CP1250
-  WinCyrillic   => CP1251
-  WinGreek      => CP1253
-  WinTurkiskh   => CP1254
-  WinHebrew     => CP1255
-  WinArabic     => CP1256
-  WinBaltic     => CP1257
-  WinVietnamese => CP1258
-
-(All the CPI<NNN...> are available also as IBMI<NNN...>.)
-
-The Mac codepages:
-
-  MacCentralEuropean   MacJapanese
-  MacCroatian          MacRoman
-  MacCyrillic          MacRomanian
-  MacDingbats          MacSami
-  MacGreek             MacThai
-  MacIcelandic         MacTurkish
-                       MacUkraine
-
-Miscellaneous:
-
-  7bit-greek  IR-197
-  7bit-kana   NeXTstep
-  7bit-latin1 POSIX-BC
-  DingBats    Roman8
-  GSM 0338    Symbol
+To find more about character encodings, please consult
+L<Encode::Description> . This document focuses on programming references.
 
 =head1 PERL ENCODING API
 
@@ -598,7 +368,7 @@ Decode sequence of octets assumed to be in I<ENCODING> into Perl's
 internal form and returns the resulting string.  For CHECK see
 L</"Handling Malformed Data">.
 
-For example to convert ISO 8859-1 data to UTF-8:
+For example to convert ISO-8859-1 data to UTF-8:
 
        $utf8 = decode("latin1", $latin1);
 
@@ -611,7 +381,7 @@ in $string originally get to be in FROM_ENCODING?  Either using
 encode() or through PerlIO: See L</"Encoding and IO">.  For CHECK
 see L</"Handling Malformed Data">.
 
-For example to convert ISO 8859-1 data to UTF-8:
+For example to convert ISO-8859-1 data to UTF-8:
 
        from_to($data, "iso-8859-1", "utf-8");
 
@@ -712,46 +482,6 @@ For CHECK see L</"Handling Malformed Data">.
 
 =back
 
-=head2 Other Encodings of Unicode
-
-UTF-16 is similar to UCS-2, 16 bit or 2-byte chunks.  UCS-2 can only
-represent 0..0xFFFF, while UTF-16 has a I<surrogate pair> scheme which
-allows it to cover the whole Unicode range.
-
-Surrogates are code points set aside to encode the 0x01000..0x10FFFF
-range of Unicode code points in pairs of 16-bit units.  The I<high
-surrogates> are the range 0xD800..0xDBFF, and the I<low surrogates>
-are the range 0xDC00..0xDFFFF.  The surrogate encoding is
-
-       $hi = ($uni - 0x10000) / 0x400 + 0xD800;
-       $lo = ($uni - 0x10000) % 0x400 + 0xDC00;
-
-and the decoding is
-
-       $uni = 0x10000 + ($hi - 0xD8000) * 0x400 + ($lo - 0xDC00);
-
-Encode implements big-endian UCS-2 aliased to "iso-10646-1" as that
-happens to be the name used by that representation when used with X11
-fonts.
-
-UTF-32 or UCS-4 is 32-bit or 4-byte chunks.  Perl's logical characters
-can be considered as being in this form without encoding. An encoding
-to transfer strings in this form (e.g. to write them to a file) would
-need to
-
-     pack('L*', unpack('U*', $string));  # native
-  or
-     pack('V*', unpack('U*', $string));  # little-endian
-  or
-     pack('N*', unpack('U*', $string));  # big-endian
-
-depending on the endianness required.
-
-No UTF-32 encodings are implemented yet.
-
-Both UCS-2 and UCS-4 style encodings can have "byte order marks" by
-representing the code point 0xFFFE as the very first thing in a file.
-
 =head2 Listing available encodings
 
   use Encode qw(encodings);
@@ -780,7 +510,8 @@ Currently I<newName> can be specified in the following ways:
 In this case if I<ENCODING> is not a reference it is C<eval>-ed to
 allow C<$1> etc. to be subsituted.  The example is one way to names as
 used in X11 font names to alias the MIME names for the iso-8859-*
-family.
+family.  Note the double quote inside the single quote.  If you are
+using regex here, you have to do so or it won't work in this case.
 
 =item As a code reference, e.g.:
 
@@ -793,13 +524,13 @@ names for the iso-8859-* family.
 
 =back
 
-=head2 Defining Encodings
+=head1 Defining Encodings
 
     use Encode qw(define_alias);
     define_encoding( $object, 'canonicalName' [,alias...]);
 
 Causes I<canonicalName> to be associated with I<$object>.  The object
-should provide the interface described in L</"IMPLEMENTATION CLASSES">
+should provide the interface described in L<Encode::Encoding>
 below.  If more than two arguments are provided then additional
 arguments are taken as aliases for I<$object> as for C<define_alias>.
 
@@ -848,7 +579,7 @@ transform the bytes read from a handle into characters before doing
 "character operations" (e.g. C<lc>, C</\W+/>, ...).
 
 You can also use PerlIO to convert larger amounts of data you don't
-want to bring into memory.  For example to convert between ISO 8859-1
+want to bring into memory.  For example to convert between ISO-8859-1
 (Latin 1) and UTF-8 (or UTF-EBCDIC in EBCDIC machines):
 
     open(F, "<:encoding(iso-8859-1)", "data.txt") or die $!;
@@ -869,22 +600,6 @@ See L<PerlIO> for more information.
 See also L<encoding> for how to change the default encoding of the
 data in your script.
 
-=head1 Encoding How to ...
-
-To do:
-
-=over 4
-
-=item * IO with mixed content (faking iso-2020-*)
-
-=item * MIME's Content-Length:
-
-=item * UTF-8 strings in binary data.
-
-=item * Perl/Encode wrappers on non-Unicode XS modules.
-
-=back
-
 =head1 Messing with Perl's Internals
 
 The following API uses parts of Perl's internals in the current
@@ -919,172 +634,10 @@ not a string.
 
 =back
 
-=head1 IMPLEMENTATION CLASSES
-
-As mentioned above encodings are (in the current implementation at least)
-defined by objects. The mapping of encoding name to object is via the
-C<%encodings> hash.
-
-The values of the hash can currently be either strings or objects.
-The string form may go away in the future. The string form occurs
-when C<encodings()> has scanned C<@INC> for loadable encodings but has
-not actually loaded the encoding in question. This is because the
-current "loading" process is all Perl and a bit slow.
-
-Once an encoding is loaded then value of the hash is object which
-implements the encoding. The object should provide the following
-interface:
-
-=over 4
-
-=item -E<gt>name
-
-Should return the string representing the canonical name of the encoding.
-
-=item -E<gt>new_sequence
-
-This is a placeholder for encodings with state. It should return an
-object which implements this interface, all current implementations
-return the original object.
-
-=item -E<gt>encode($string,$check)
-
-Should return the octet sequence representing I<$string>. If I<$check>
-is true it should modify I<$string> in place to remove the converted
-part (i.e.  the whole string unless there is an error).  If an error
-occurs it should return the octet sequence for the fragment of string
-that has been converted, and modify $string in-place to remove the
-converted part leaving it starting with the problem fragment.
-
-If check is is false then C<encode> should make a "best effort" to
-convert the string - for example by using a replacement character.
-
-=item -E<gt>decode($octets,$check)
-
-Should return the string that I<$octets> represents. If I<$check> is
-true it should modify I<$octets> in place to remove the converted part
-(i.e.  the whole sequence unless there is an error).  If an error
-occurs it should return the fragment of string that has been
-converted, and modify $octets in-place to remove the converted part
-leaving it starting with the problem fragment.
-
-If check is is false then C<decode> should make a "best effort" to
-convert the string - for example by using Unicode's "\x{FFFD}" as a
-replacement character.
-
-=back
-
-It should be noted that the check behaviour is different from the
-outer public API. The logic is that the "unchecked" case is useful
-when encoding is part of a stream which may be reporting errors
-(e.g. STDERR).  In such cases it is desirable to get everything
-through somehow without causing additional errors which obscure the
-original one. Also the encoding is best placed to know what the
-correct replacement character is, so if that is the desired behaviour
-then letting low level code do it is the most efficient.
-
-In contrast if check is true, the scheme above allows the encoding to
-do as much as it can and tell layer above how much that was. What is
-lacking at present is a mechanism to report what went wrong. The most
-likely interface will be an additional method call to the object, or
-perhaps (to avoid forcing per-stream objects on otherwise stateless
-encodings) and additional parameter.
-
-It is also highly desirable that encoding classes inherit from
-C<Encode::Encoding> as a base class. This allows that class to define
-additional behaviour for all encoding objects. For example built in
-Unicode, UCS-2 and UTF-8 classes use :
-
-  package Encode::MyEncoding;
-  use base qw(Encode::Encoding);
-
-  __PACKAGE__->Define(qw(myCanonical myAlias));
-
-To create an object with bless {Name => ...},$class, and call
-define_encoding.  They inherit their C<name> method from
-C<Encode::Encoding>.
-
-=head2 Compiled Encodings
-
-F<Encode.xs> provides a class C<Encode::XS> which provides the
-interface described above. It calls a generic octet-sequence to
-octet-sequence "engine" that is driven by tables (defined in
-F<encengine.c>). The same engine is used for both encode and
-decode. C<Encode:XS>'s C<encode> forces Perl's characters to their
-UTF-8 form and then treats them as just another multibyte
-encoding. C<Encode:XS>'s C<decode> transforms the sequence and then
-turns the UTF-8-ness flag as that is the form that the tables are
-defined to produce. For details of the engine see the comments in
-F<encengine.c>.
-
-The tables are produced by the Perl script F<compile> (the name needs
-to change so we can eventually install it somewhere). F<compile> can
-currently read two formats:
-
-=over 4
-
-=item *.enc
-
-This is a coined format used by Tcl. It is documented in
-Encode/EncodeFormat.pod.
-
-=item *.ucm
-
-This is the semi-standard format used by IBM's ICU package.
-
-=back
-
-F<compile> can write the following forms:
-
-=over 4
-
-=item *.ucm
-
-See above - the F<Encode/*.ucm> files provided with the distribution have
-been created from the original Tcl .enc files using this approach.
-
-=item *.c
-
-Produces tables as C data structures - this is used to build in encodings
-into F<Encode.so>/F<Encode.dll>.
-
-=item *.xs
-
-In theory this allows encodings to be stand-alone loadable Perl
-extensions.  The process has not yet been tested. The plan is to use
-this approach for large East Asian encodings.
-
-=back
-
-The set of encodings built-in to F<Encode.so>/F<Encode.dll> is
-determined by F<Makefile.PL>.  The current set is as follows:
-
-=over 4
-
-=item ascii and iso-8859-*
-
-That is all the common 8-bit "western" encodings.
-
-=item IBM-1047 and two other variants of EBCDIC.
-
-These are the same variants that are supported by EBCDIC Perl as
-"native" encodings.  They are included to prove "reversibility" of
-some constructs in EBCDIC Perl.
-
-=item symbol and dingbats as used by Tk on X11.
-
-(The reason Encode got started was to support Perl/Tk.)
-
-=back
-
-That set is rather ad hoc and has been driven by the needs of the
-tests rather than the needs of typical applications. It is likely
-to be rationalized.
-
 =head1 SEE ALSO
 
 L<perlunicode>, L<perlebcdic>, L<perlfunc/open>, L<PerlIO>, L<encoding>,
-L<utf8>
+L<utf8>, L<Encode::Description>, L<Encode::Encoding> the Perl Unicode Mailing List E<lt>perl-unicode@perl.orgE<gt>
 
 
 =cut
index a71f69b..44e5e22 100644 (file)
@@ -91,7 +91,7 @@ PerlIOEncode_pushed(pTHX_ PerlIO * f, const char *mode, SV * arg)
     if (!SvROK(e->enc)) {
        e->enc = Nullsv;
        errno = EINVAL;
-       Perl_warner(aTHX_ WARN_IO, "Cannot find encoding \"%" SVf "\"",
+       Perl_warner(aTHX_ packWARN(WARN_IO), "Cannot find encoding \"%" SVf "\"",
                    arg);
        code = -1;
     }
@@ -541,7 +541,7 @@ encode_method(pTHX_ encode_t * enc, encpage_t * dir, SV * src,
                        UV ch =
                            utf8n_to_uvuni(s + slen, (SvCUR(src) - slen),
                                           &clen, 0);
-                       Perl_warner(aTHX_ WARN_UTF8,
+                       Perl_warner(aTHX_ packWARN(WARN_UTF8),
                                    "\"\\N{U+%" UVxf
                                    "}\" does not map to %s", ch,
                                    enc->name[0]);
@@ -559,8 +559,8 @@ encode_method(pTHX_ encode_t * enc, encpage_t * dir, SV * src,
                       for real characters, but some encodings have non-assigned
                       codes which may occur.
                     */
-                   Perl_croak(aTHX_ "%s \"\\x%02X\" does not map to Unicode",
-                              enc->name[0], (U8) s[slen]);
+                   Perl_croak(aTHX_ "%s \"\\x%02X\" does not map to Unicode (%d)",
+                              enc->name[0], (U8) s[slen], code);
                }
                break;
 
diff --git a/ext/Encode/Encode/euc-jp-0212.enc b/ext/Encode/Encode/euc-jp-0212.enc
deleted file mode 100644 (file)
index 23d7325..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Encoding file: euc-jp-0212, extended
-X
-name           euc-jp-0212
-ascii          {}
-jis0208                >{}
-7bit-kana      >\x8e
-jis0212                >\x8f
index 5552dc7..1d5e4ad 100644 (file)
@@ -1,10 +1,13 @@
 # compile -o Encode/euc-jp.ucm Encode/euc-jp.enc
 <code_set_name> "euc-jp"
 <mb_cur_min> 1
-<mb_cur_max> 2
+<mb_cur_max> 3
 <subchar> \x3F
 #
 CHARMAP
+#
+# ASCII
+#
 <U0000> \x00 |0 # <control>
 <U0001> \x01 |0 # <control>
 <U0002> \x02 |0 # <control>
@@ -131,8 +134,11 @@ CHARMAP
 <U007B> \x7B |0 # LEFT CURLY BRACKET
 <U007C> \x7C |0 # VERTICAL LINE
 <U007D> \x7D |0 # RIGHT CURLY BRACKET
-<U007E> \x7E |0 # TILDE
+<U007E> \x7E |0 # TILDE        
 <U007F> \x7F |0 # <control>
+#
+# reserved or unused; verbatim translation
+#
 <U0080> \x80 |0 # <control>
 <U0081> \x81 |0 # <control>
 <U0082> \x82 |0 # <control>
@@ -147,6 +153,25 @@ CHARMAP
 <U008B> \x8B |0 # <control>
 <U008C> \x8C |0 # <control>
 <U008D> \x8D |0 # <control>
+<U0090> \x90 |0 # <control>
+<U0091> \x91 |0 # <control>
+<U0092> \x92 |0 # <control>
+<U0093> \x93 |0 # <control>
+<U0094> \x94 |0 # <control>
+<U0095> \x95 |0 # <control>
+<U0096> \x96 |0 # <control>
+<U0097> \x97 |0 # <control>
+<U0098> \x98 |0 # <control>
+<U0099> \x99 |0 # <control>
+<U009A> \x9A |0 # <control>
+<U009B> \x9B |0 # <control>
+<U009C> \x9C |0 # <control>
+<U009D> \x9D |0 # <control>
+<U009E> \x9E |0 # <control>
+<U009F> \x9F |0 # <control>
+#
+# jisx0201-1978
+#
 <UFF61> \x8E\xA1 |0 # HALFWIDTH IDEOGRAPHIC FULL STOP
 <UFF62> \x8E\xA2 |0 # HALFWIDTH LEFT CORNER BRACKET
 <UFF63> \x8E\xA3 |0 # HALFWIDTH RIGHT CORNER BRACKET
@@ -210,23 +235,9 @@ CHARMAP
 <UFF9D> \x8E\xDD |0 # HALFWIDTH KATAKANA LETTER N
 <UFF9E> \x8E\xDE |0 # HALFWIDTH KATAKANA VOICED SOUND MARK
 <UFF9F> \x8E\xDF |0 # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-<U008F> \x8F |0 # <control>
-<U0090> \x90 |0 # <control>
-<U0091> \x91 |0 # <control>
-<U0092> \x92 |0 # <control>
-<U0093> \x93 |0 # <control>
-<U0094> \x94 |0 # <control>
-<U0095> \x95 |0 # <control>
-<U0096> \x96 |0 # <control>
-<U0097> \x97 |0 # <control>
-<U0098> \x98 |0 # <control>
-<U0099> \x99 |0 # <control>
-<U009A> \x9A |0 # <control>
-<U009B> \x9B |0 # <control>
-<U009C> \x9C |0 # <control>
-<U009D> \x9D |0 # <control>
-<U009E> \x9E |0 # <control>
-<U009F> \x9F |0 # <control>
+#
+# jisx0208-1990
+#
 <U3000> \xA1\xA1 |0 # IDEOGRAPHIC SPACE
 <U3001> \xA1\xA2 |0 # IDEOGRAPHIC COMMA
 <U3002> \xA1\xA3 |0 # IDEOGRAPHIC FULL STOP
@@ -7106,4 +7117,6076 @@ CHARMAP
 <U7464> \xF4\xA4 |0 # CJK Ideograph
 <U51DC> \xF4\xA5 |0 # CJK Ideograph
 <U7199> \xF4\xA6 |0 # CJK Ideograph
+#
+# jisx0212-1990
+# note jisx0212 is not round-trippable
+#  
+<U02D8> \x8F\xA2\xAF |0 # BREVE
+<U02C7> \x8F\xA2\xB0 |0 # CARON (Mandarin Chinese third tone)
+<U00B8> \x8F\xA2\xB1 |0 # CEDILLA
+<U02D9> \x8F\xA2\xB2 |0 # DOT ABOVE (Mandarin Chinese light tone)
+<U02DD> \x8F\xA2\xB3 |0 # DOUBLE ACUTE ACCENT
+<U00AF> \x8F\xA2\xB4 |0 # MACRON
+<U02DB> \x8F\xA2\xB5 |0 # OGONEK
+<U02DA> \x8F\xA2\xB6 |0 # RING ABOVE
+<U007E> \x8F\xA2\xB7 |3 # TILDE (euc-jp -> utf8 only)
+<U0384> \x8F\xA2\xB8 |0 # GREEK TONOS
+<U0385> \x8F\xA2\xB9 |0 # GREEK DIALYTIKA TONOS
+<U00A1> \x8F\xA2\xC2 |0 # INVERTED EXCLAMATION MARK
+<U00A6> \x8F\xA2\xC3 |0 # BROKEN BAR
+<U00BF> \x8F\xA2\xC4 |0 # INVERTED QUESTION MARK
+<U00BA> \x8F\xA2\xEB |0 # MASCULINE ORDINAL INDICATOR
+<U00AA> \x8F\xA2\xEC |0 # FEMININE ORDINAL INDICATOR
+<U00A9> \x8F\xA2\xED |0 # COPYRIGHT SIGN
+<U00AE> \x8F\xA2\xEE |0 # REGISTERED SIGN
+<U2122> \x8F\xA2\xEF |0 # TRADE MARK SIGN
+<U00A4> \x8F\xA2\xF0 |0 # CURRENCY SIGN
+<U2116> \x8F\xA2\xF1 |0 # NUMERO SIGN
+<U0386> \x8F\xA6\xE1 |0 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<U0388> \x8F\xA6\xE2 |0 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<U0389> \x8F\xA6\xE3 |0 # GREEK CAPITAL LETTER ETA WITH TONOS
+<U038A> \x8F\xA6\xE4 |0 # GREEK CAPITAL LETTER IOTA WITH TONOS
+<U03AA> \x8F\xA6\xE5 |0 # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+<U038C> \x8F\xA6\xE7 |0 # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<U038E> \x8F\xA6\xE9 |0 # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<U03AB> \x8F\xA6\xEA |0 # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+<U038F> \x8F\xA6\xEC |0 # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<U03AC> \x8F\xA6\xF1 |0 # GREEK SMALL LETTER ALPHA WITH TONOS
+<U03AD> \x8F\xA6\xF2 |0 # GREEK SMALL LETTER EPSILON WITH TONOS
+<U03AE> \x8F\xA6\xF3 |0 # GREEK SMALL LETTER ETA WITH TONOS
+<U03AF> \x8F\xA6\xF4 |0 # GREEK SMALL LETTER IOTA WITH TONOS
+<U03CA> \x8F\xA6\xF5 |0 # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+<U0390> \x8F\xA6\xF6 |0 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<U03CC> \x8F\xA6\xF7 |0 # GREEK SMALL LETTER OMICRON WITH TONOS
+<U03C2> \x8F\xA6\xF8 |0 # GREEK SMALL LETTER FINAL SIGMA
+<U03CD> \x8F\xA6\xF9 |0 # GREEK SMALL LETTER UPSILON WITH TONOS
+<U03CB> \x8F\xA6\xFA |0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+<U03B0> \x8F\xA6\xFB |0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<U03CE> \x8F\xA6\xFC |0 # GREEK SMALL LETTER OMEGA WITH TONOS
+<U0402> \x8F\xA7\xC2 |0 # CYRILLIC CAPITAL LETTER DJE
+<U0403> \x8F\xA7\xC3 |0 # CYRILLIC CAPITAL LETTER GJE
+<U0404> \x8F\xA7\xC4 |0 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+<U0405> \x8F\xA7\xC5 |0 # CYRILLIC CAPITAL LETTER DZE
+<U0406> \x8F\xA7\xC6 |0 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+<U0407> \x8F\xA7\xC7 |0 # CYRILLIC CAPITAL LETTER YI
+<U0408> \x8F\xA7\xC8 |0 # CYRILLIC CAPITAL LETTER JE
+<U0409> \x8F\xA7\xC9 |0 # CYRILLIC CAPITAL LETTER LJE
+<U040A> \x8F\xA7\xCA |0 # CYRILLIC CAPITAL LETTER NJE
+<U040B> \x8F\xA7\xCB |0 # CYRILLIC CAPITAL LETTER TSHE
+<U040C> \x8F\xA7\xCC |0 # CYRILLIC CAPITAL LETTER KJE
+<U040E> \x8F\xA7\xCD |0 # CYRILLIC CAPITAL LETTER SHORT U
+<U040F> \x8F\xA7\xCE |0 # CYRILLIC CAPITAL LETTER DZHE
+<U0452> \x8F\xA7\xF2 |0 # CYRILLIC SMALL LETTER DJE
+<U0453> \x8F\xA7\xF3 |0 # CYRILLIC SMALL LETTER GJE
+<U0454> \x8F\xA7\xF4 |0 # CYRILLIC SMALL LETTER UKRAINIAN IE
+<U0455> \x8F\xA7\xF5 |0 # CYRILLIC SMALL LETTER DZE
+<U0456> \x8F\xA7\xF6 |0 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+<U0457> \x8F\xA7\xF7 |0 # CYRILLIC SMALL LETTER YI
+<U0458> \x8F\xA7\xF8 |0 # CYRILLIC SMALL LETTER JE
+<U0459> \x8F\xA7\xF9 |0 # CYRILLIC SMALL LETTER LJE
+<U045A> \x8F\xA7\xFA |0 # CYRILLIC SMALL LETTER NJE
+<U045B> \x8F\xA7\xFB |0 # CYRILLIC SMALL LETTER TSHE
+<U045C> \x8F\xA7\xFC |0 # CYRILLIC SMALL LETTER KJE
+<U045E> \x8F\xA7\xFD |0 # CYRILLIC SMALL LETTER SHORT U
+<U045F> \x8F\xA7\xFE |0 # CYRILLIC SMALL LETTER DZHE
+<U00C6> \x8F\xA9\xA1 |0 # LATIN CAPITAL LIGATURE AE
+<U0110> \x8F\xA9\xA2 |0 # LATIN CAPITAL LETTER D WITH STROKE
+<U0126> \x8F\xA9\xA4 |0 # LATIN CAPITAL LETTER H WITH STROKE
+<U0132> \x8F\xA9\xA6 |0 # LATIN CAPITAL LIGATURE IJ
+<U0141> \x8F\xA9\xA8 |0 # LATIN CAPITAL LETTER L WITH STROKE
+<U013F> \x8F\xA9\xA9 |0 # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+<U014A> \x8F\xA9\xAB |0 # LATIN CAPITAL LETTER ENG
+<U00D8> \x8F\xA9\xAC |0 # LATIN CAPITAL LETTER O WITH STROKE
+<U0152> \x8F\xA9\xAD |0 # LATIN CAPITAL LIGATURE OE
+<U0166> \x8F\xA9\xAF |0 # LATIN CAPITAL LETTER T WITH STROKE
+<U00DE> \x8F\xA9\xB0 |0 # LATIN CAPITAL LETTER THORN
+<U00E6> \x8F\xA9\xC1 |0 # LATIN SMALL LIGATURE AE
+<U0111> \x8F\xA9\xC2 |0 # LATIN SMALL LETTER D WITH STROKE
+<U00F0> \x8F\xA9\xC3 |0 # LATIN SMALL LETTER ETH
+<U0127> \x8F\xA9\xC4 |0 # LATIN SMALL LETTER H WITH STROKE
+<U0131> \x8F\xA9\xC5 |0 # LATIN SMALL LETTER DOTLESS I
+<U0133> \x8F\xA9\xC6 |0 # LATIN SMALL LIGATURE IJ
+<U0138> \x8F\xA9\xC7 |0 # LATIN SMALL LETTER KRA
+<U0142> \x8F\xA9\xC8 |0 # LATIN SMALL LETTER L WITH STROKE
+<U0140> \x8F\xA9\xC9 |0 # LATIN SMALL LETTER L WITH MIDDLE DOT
+<U0149> \x8F\xA9\xCA |0 # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+<U014B> \x8F\xA9\xCB |0 # LATIN SMALL LETTER ENG
+<U00F8> \x8F\xA9\xCC |0 # LATIN SMALL LETTER O WITH STROKE
+<U0153> \x8F\xA9\xCD |0 # LATIN SMALL LIGATURE OE
+<U00DF> \x8F\xA9\xCE |0 # LATIN SMALL LETTER SHARP S
+<U0167> \x8F\xA9\xCF |0 # LATIN SMALL LETTER T WITH STROKE
+<U00FE> \x8F\xA9\xD0 |0 # LATIN SMALL LETTER THORN
+<U00C1> \x8F\xAA\xA1 |0 # LATIN CAPITAL LETTER A WITH ACUTE
+<U00C0> \x8F\xAA\xA2 |0 # LATIN CAPITAL LETTER A WITH GRAVE
+<U00C4> \x8F\xAA\xA3 |0 # LATIN CAPITAL LETTER A WITH DIAERESIS
+<U00C2> \x8F\xAA\xA4 |0 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<U0102> \x8F\xAA\xA5 |0 # LATIN CAPITAL LETTER A WITH BREVE
+<U01CD> \x8F\xAA\xA6 |0 # LATIN CAPITAL LETTER A WITH CARON
+<U0100> \x8F\xAA\xA7 |0 # LATIN CAPITAL LETTER A WITH MACRON
+<U0104> \x8F\xAA\xA8 |0 # LATIN CAPITAL LETTER A WITH OGONEK
+<U00C5> \x8F\xAA\xA9 |0 # LATIN CAPITAL LETTER A WITH RING ABOVE
+<U00C3> \x8F\xAA\xAA |0 # LATIN CAPITAL LETTER A WITH TILDE
+<U0106> \x8F\xAA\xAB |0 # LATIN CAPITAL LETTER C WITH ACUTE
+<U0108> \x8F\xAA\xAC |0 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+<U010C> \x8F\xAA\xAD |0 # LATIN CAPITAL LETTER C WITH CARON
+<U00C7> \x8F\xAA\xAE |0 # LATIN CAPITAL LETTER C WITH CEDILLA
+<U010A> \x8F\xAA\xAF |0 # LATIN CAPITAL LETTER C WITH DOT ABOVE
+<U010E> \x8F\xAA\xB0 |0 # LATIN CAPITAL LETTER D WITH CARON
+<U00C9> \x8F\xAA\xB1 |0 # LATIN CAPITAL LETTER E WITH ACUTE
+<U00C8> \x8F\xAA\xB2 |0 # LATIN CAPITAL LETTER E WITH GRAVE
+<U00CB> \x8F\xAA\xB3 |0 # LATIN CAPITAL LETTER E WITH DIAERESIS
+<U00CA> \x8F\xAA\xB4 |0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<U011A> \x8F\xAA\xB5 |0 # LATIN CAPITAL LETTER E WITH CARON
+<U0116> \x8F\xAA\xB6 |0 # LATIN CAPITAL LETTER E WITH DOT ABOVE
+<U0112> \x8F\xAA\xB7 |0 # LATIN CAPITAL LETTER E WITH MACRON
+<U0118> \x8F\xAA\xB8 |0 # LATIN CAPITAL LETTER E WITH OGONEK
+<U011C> \x8F\xAA\xBA |0 # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+<U011E> \x8F\xAA\xBB |0 # LATIN CAPITAL LETTER G WITH BREVE
+<U0122> \x8F\xAA\xBC |0 # LATIN CAPITAL LETTER G WITH CEDILLA
+<U0120> \x8F\xAA\xBD |0 # LATIN CAPITAL LETTER G WITH DOT ABOVE
+<U0124> \x8F\xAA\xBE |0 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+<U00CD> \x8F\xAA\xBF |0 # LATIN CAPITAL LETTER I WITH ACUTE
+<U00CC> \x8F\xAA\xC0 |0 # LATIN CAPITAL LETTER I WITH GRAVE
+<U00CF> \x8F\xAA\xC1 |0 # LATIN CAPITAL LETTER I WITH DIAERESIS
+<U00CE> \x8F\xAA\xC2 |0 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<U01CF> \x8F\xAA\xC3 |0 # LATIN CAPITAL LETTER I WITH CARON
+<U0130> \x8F\xAA\xC4 |0 # LATIN CAPITAL LETTER I WITH DOT ABOVE
+<U012A> \x8F\xAA\xC5 |0 # LATIN CAPITAL LETTER I WITH MACRON
+<U012E> \x8F\xAA\xC6 |0 # LATIN CAPITAL LETTER I WITH OGONEK
+<U0128> \x8F\xAA\xC7 |0 # LATIN CAPITAL LETTER I WITH TILDE
+<U0134> \x8F\xAA\xC8 |0 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+<U0136> \x8F\xAA\xC9 |0 # LATIN CAPITAL LETTER K WITH CEDILLA
+<U0139> \x8F\xAA\xCA |0 # LATIN CAPITAL LETTER L WITH ACUTE
+<U013D> \x8F\xAA\xCB |0 # LATIN CAPITAL LETTER L WITH CARON
+<U013B> \x8F\xAA\xCC |0 # LATIN CAPITAL LETTER L WITH CEDILLA
+<U0143> \x8F\xAA\xCD |0 # LATIN CAPITAL LETTER N WITH ACUTE
+<U0147> \x8F\xAA\xCE |0 # LATIN CAPITAL LETTER N WITH CARON
+<U0145> \x8F\xAA\xCF |0 # LATIN CAPITAL LETTER N WITH CEDILLA
+<U00D1> \x8F\xAA\xD0 |0 # LATIN CAPITAL LETTER N WITH TILDE
+<U00D3> \x8F\xAA\xD1 |0 # LATIN CAPITAL LETTER O WITH ACUTE
+<U00D2> \x8F\xAA\xD2 |0 # LATIN CAPITAL LETTER O WITH GRAVE
+<U00D6> \x8F\xAA\xD3 |0 # LATIN CAPITAL LETTER O WITH DIAERESIS
+<U00D4> \x8F\xAA\xD4 |0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<U01D1> \x8F\xAA\xD5 |0 # LATIN CAPITAL LETTER O WITH CARON
+<U0150> \x8F\xAA\xD6 |0 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+<U014C> \x8F\xAA\xD7 |0 # LATIN CAPITAL LETTER O WITH MACRON
+<U00D5> \x8F\xAA\xD8 |0 # LATIN CAPITAL LETTER O WITH TILDE
+<U0154> \x8F\xAA\xD9 |0 # LATIN CAPITAL LETTER R WITH ACUTE
+<U0158> \x8F\xAA\xDA |0 # LATIN CAPITAL LETTER R WITH CARON
+<U0156> \x8F\xAA\xDB |0 # LATIN CAPITAL LETTER R WITH CEDILLA
+<U015A> \x8F\xAA\xDC |0 # LATIN CAPITAL LETTER S WITH ACUTE
+<U015C> \x8F\xAA\xDD |0 # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+<U0160> \x8F\xAA\xDE |0 # LATIN CAPITAL LETTER S WITH CARON
+<U015E> \x8F\xAA\xDF |0 # LATIN CAPITAL LETTER S WITH CEDILLA
+<U0164> \x8F\xAA\xE0 |0 # LATIN CAPITAL LETTER T WITH CARON
+<U0162> \x8F\xAA\xE1 |0 # LATIN CAPITAL LETTER T WITH CEDILLA
+<U00DA> \x8F\xAA\xE2 |0 # LATIN CAPITAL LETTER U WITH ACUTE
+<U00D9> \x8F\xAA\xE3 |0 # LATIN CAPITAL LETTER U WITH GRAVE
+<U00DC> \x8F\xAA\xE4 |0 # LATIN CAPITAL LETTER U WITH DIAERESIS
+<U00DB> \x8F\xAA\xE5 |0 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<U016C> \x8F\xAA\xE6 |0 # LATIN CAPITAL LETTER U WITH BREVE
+<U01D3> \x8F\xAA\xE7 |0 # LATIN CAPITAL LETTER U WITH CARON
+<U0170> \x8F\xAA\xE8 |0 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+<U016A> \x8F\xAA\xE9 |0 # LATIN CAPITAL LETTER U WITH MACRON
+<U0172> \x8F\xAA\xEA |0 # LATIN CAPITAL LETTER U WITH OGONEK
+<U016E> \x8F\xAA\xEB |0 # LATIN CAPITAL LETTER U WITH RING ABOVE
+<U0168> \x8F\xAA\xEC |0 # LATIN CAPITAL LETTER U WITH TILDE
+<U01D7> \x8F\xAA\xED |0 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<U01DB> \x8F\xAA\xEE |0 # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<U01D9> \x8F\xAA\xEF |0 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<U01D5> \x8F\xAA\xF0 |0 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<U0174> \x8F\xAA\xF1 |0 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+<U00DD> \x8F\xAA\xF2 |0 # LATIN CAPITAL LETTER Y WITH ACUTE
+<U0178> \x8F\xAA\xF3 |0 # LATIN CAPITAL LETTER Y WITH DIAERESIS
+<U0176> \x8F\xAA\xF4 |0 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+<U0179> \x8F\xAA\xF5 |0 # LATIN CAPITAL LETTER Z WITH ACUTE
+<U017D> \x8F\xAA\xF6 |0 # LATIN CAPITAL LETTER Z WITH CARON
+<U017B> \x8F\xAA\xF7 |0 # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+<U00E1> \x8F\xAB\xA1 |0 # LATIN SMALL LETTER A WITH ACUTE
+<U00E0> \x8F\xAB\xA2 |0 # LATIN SMALL LETTER A WITH GRAVE
+<U00E4> \x8F\xAB\xA3 |0 # LATIN SMALL LETTER A WITH DIAERESIS
+<U00E2> \x8F\xAB\xA4 |0 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+<U0103> \x8F\xAB\xA5 |0 # LATIN SMALL LETTER A WITH BREVE
+<U01CE> \x8F\xAB\xA6 |0 # LATIN SMALL LETTER A WITH CARON
+<U0101> \x8F\xAB\xA7 |0 # LATIN SMALL LETTER A WITH MACRON
+<U0105> \x8F\xAB\xA8 |0 # LATIN SMALL LETTER A WITH OGONEK
+<U00E5> \x8F\xAB\xA9 |0 # LATIN SMALL LETTER A WITH RING ABOVE
+<U00E3> \x8F\xAB\xAA |0 # LATIN SMALL LETTER A WITH TILDE
+<U0107> \x8F\xAB\xAB |0 # LATIN SMALL LETTER C WITH ACUTE
+<U0109> \x8F\xAB\xAC |0 # LATIN SMALL LETTER C WITH CIRCUMFLEX
+<U010D> \x8F\xAB\xAD |0 # LATIN SMALL LETTER C WITH CARON
+<U00E7> \x8F\xAB\xAE |0 # LATIN SMALL LETTER C WITH CEDILLA
+<U010B> \x8F\xAB\xAF |0 # LATIN SMALL LETTER C WITH DOT ABOVE
+<U010F> \x8F\xAB\xB0 |0 # LATIN SMALL LETTER D WITH CARON
+<U00E9> \x8F\xAB\xB1 |0 # LATIN SMALL LETTER E WITH ACUTE
+<U00E8> \x8F\xAB\xB2 |0 # LATIN SMALL LETTER E WITH GRAVE
+<U00EB> \x8F\xAB\xB3 |0 # LATIN SMALL LETTER E WITH DIAERESIS
+<U00EA> \x8F\xAB\xB4 |0 # LATIN SMALL LETTER E WITH CIRCUMFLEX
+<U011B> \x8F\xAB\xB5 |0 # LATIN SMALL LETTER E WITH CARON
+<U0117> \x8F\xAB\xB6 |0 # LATIN SMALL LETTER E WITH DOT ABOVE
+<U0113> \x8F\xAB\xB7 |0 # LATIN SMALL LETTER E WITH MACRON
+<U0119> \x8F\xAB\xB8 |0 # LATIN SMALL LETTER E WITH OGONEK
+<U01F5> \x8F\xAB\xB9 |0 # LATIN SMALL LETTER G WITH ACUTE
+<U011D> \x8F\xAB\xBA |0 # LATIN SMALL LETTER G WITH CIRCUMFLEX
+<U011F> \x8F\xAB\xBB |0 # LATIN SMALL LETTER G WITH BREVE
+<U0121> \x8F\xAB\xBD |0 # LATIN SMALL LETTER G WITH DOT ABOVE
+<U0125> \x8F\xAB\xBE |0 # LATIN SMALL LETTER H WITH CIRCUMFLEX
+<U00ED> \x8F\xAB\xBF |0 # LATIN SMALL LETTER I WITH ACUTE
+<U00EC> \x8F\xAB\xC0 |0 # LATIN SMALL LETTER I WITH GRAVE
+<U00EF> \x8F\xAB\xC1 |0 # LATIN SMALL LETTER I WITH DIAERESIS
+<U00EE> \x8F\xAB\xC2 |0 # LATIN SMALL LETTER I WITH CIRCUMFLEX
+<U01D0> \x8F\xAB\xC3 |0 # LATIN SMALL LETTER I WITH CARON
+<U012B> \x8F\xAB\xC5 |0 # LATIN SMALL LETTER I WITH MACRON
+<U012F> \x8F\xAB\xC6 |0 # LATIN SMALL LETTER I WITH OGONEK
+<U0129> \x8F\xAB\xC7 |0 # LATIN SMALL LETTER I WITH TILDE
+<U0135> \x8F\xAB\xC8 |0 # LATIN SMALL LETTER J WITH CIRCUMFLEX
+<U0137> \x8F\xAB\xC9 |0 # LATIN SMALL LETTER K WITH CEDILLA
+<U013A> \x8F\xAB\xCA |0 # LATIN SMALL LETTER L WITH ACUTE
+<U013E> \x8F\xAB\xCB |0 # LATIN SMALL LETTER L WITH CARON
+<U013C> \x8F\xAB\xCC |0 # LATIN SMALL LETTER L WITH CEDILLA
+<U0144> \x8F\xAB\xCD |0 # LATIN SMALL LETTER N WITH ACUTE
+<U0148> \x8F\xAB\xCE |0 # LATIN SMALL LETTER N WITH CARON
+<U0146> \x8F\xAB\xCF |0 # LATIN SMALL LETTER N WITH CEDILLA
+<U00F1> \x8F\xAB\xD0 |0 # LATIN SMALL LETTER N WITH TILDE
+<U00F3> \x8F\xAB\xD1 |0 # LATIN SMALL LETTER O WITH ACUTE
+<U00F2> \x8F\xAB\xD2 |0 # LATIN SMALL LETTER O WITH GRAVE
+<U00F6> \x8F\xAB\xD3 |0 # LATIN SMALL LETTER O WITH DIAERESIS
+<U00F4> \x8F\xAB\xD4 |0 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+<U01D2> \x8F\xAB\xD5 |0 # LATIN SMALL LETTER O WITH CARON
+<U0151> \x8F\xAB\xD6 |0 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+<U014D> \x8F\xAB\xD7 |0 # LATIN SMALL LETTER O WITH MACRON
+<U00F5> \x8F\xAB\xD8 |0 # LATIN SMALL LETTER O WITH TILDE
+<U0155> \x8F\xAB\xD9 |0 # LATIN SMALL LETTER R WITH ACUTE
+<U0159> \x8F\xAB\xDA |0 # LATIN SMALL LETTER R WITH CARON
+<U0157> \x8F\xAB\xDB |0 # LATIN SMALL LETTER R WITH CEDILLA
+<U015B> \x8F\xAB\xDC |0 # LATIN SMALL LETTER S WITH ACUTE
+<U015D> \x8F\xAB\xDD |0 # LATIN SMALL LETTER S WITH CIRCUMFLEX
+<U0161> \x8F\xAB\xDE |0 # LATIN SMALL LETTER S WITH CARON
+<U015F> \x8F\xAB\xDF |0 # LATIN SMALL LETTER S WITH CEDILLA
+<U0165> \x8F\xAB\xE0 |0 # LATIN SMALL LETTER T WITH CARON
+<U0163> \x8F\xAB\xE1 |0 # LATIN SMALL LETTER T WITH CEDILLA
+<U00FA> \x8F\xAB\xE2 |0 # LATIN SMALL LETTER U WITH ACUTE
+<U00F9> \x8F\xAB\xE3 |0 # LATIN SMALL LETTER U WITH GRAVE
+<U00FC> \x8F\xAB\xE4 |0 # LATIN SMALL LETTER U WITH DIAERESIS
+<U00FB> \x8F\xAB\xE5 |0 # LATIN SMALL LETTER U WITH CIRCUMFLEX
+<U016D> \x8F\xAB\xE6 |0 # LATIN SMALL LETTER U WITH BREVE
+<U01D4> \x8F\xAB\xE7 |0 # LATIN SMALL LETTER U WITH CARON
+<U0171> \x8F\xAB\xE8 |0 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+<U016B> \x8F\xAB\xE9 |0 # LATIN SMALL LETTER U WITH MACRON
+<U0173> \x8F\xAB\xEA |0 # LATIN SMALL LETTER U WITH OGONEK
+<U016F> \x8F\xAB\xEB |0 # LATIN SMALL LETTER U WITH RING ABOVE
+<U0169> \x8F\xAB\xEC |0 # LATIN SMALL LETTER U WITH TILDE
+<U01D8> \x8F\xAB\xED |0 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<U01DC> \x8F\xAB\xEE |0 # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<U01DA> \x8F\xAB\xEF |0 # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<U01D6> \x8F\xAB\xF0 |0 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<U0175> \x8F\xAB\xF1 |0 # LATIN SMALL LETTER W WITH CIRCUMFLEX
+<U00FD> \x8F\xAB\xF2 |0 # LATIN SMALL LETTER Y WITH ACUTE
+<U00FF> \x8F\xAB\xF3 |0 # LATIN SMALL LETTER Y WITH DIAERESIS
+<U0177> \x8F\xAB\xF4 |0 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+<U017A> \x8F\xAB\xF5 |0 # LATIN SMALL LETTER Z WITH ACUTE
+<U017E> \x8F\xAB\xF6 |0 # LATIN SMALL LETTER Z WITH CARON
+<U017C> \x8F\xAB\xF7 |0 # LATIN SMALL LETTER Z WITH DOT ABOVE
+<U4E02> \x8F\xB0\xA1 |0 # <CJK>
+<U4E04> \x8F\xB0\xA2 |0 # <CJK>
+<U4E05> \x8F\xB0\xA3 |0 # <CJK>
+<U4E0C> \x8F\xB0\xA4 |0 # <CJK>
+<U4E12> \x8F\xB0\xA5 |0 # <CJK>
+<U4E1F> \x8F\xB0\xA6 |0 # <CJK>
+<U4E23> \x8F\xB0\xA7 |0 # <CJK>
+<U4E24> \x8F\xB0\xA8 |0 # <CJK>
+<U4E28> \x8F\xB0\xA9 |0 # <CJK>
+<U4E2B> \x8F\xB0\xAA |0 # <CJK>
+<U4E2E> \x8F\xB0\xAB |0 # <CJK>
+<U4E2F> \x8F\xB0\xAC |0 # <CJK>
+<U4E30> \x8F\xB0\xAD |0 # <CJK>
+<U4E35> \x8F\xB0\xAE |0 # <CJK>
+<U4E40> \x8F\xB0\xAF |0 # <CJK>
+<U4E41> \x8F\xB0\xB0 |0 # <CJK>
+<U4E44> \x8F\xB0\xB1 |0 # <CJK>
+<U4E47> \x8F\xB0\xB2 |0 # <CJK>
+<U4E51> \x8F\xB0\xB3 |0 # <CJK>
+<U4E5A> \x8F\xB0\xB4 |0 # <CJK>
+<U4E5C> \x8F\xB0\xB5 |0 # <CJK>
+<U4E63> \x8F\xB0\xB6 |0 # <CJK>
+<U4E68> \x8F\xB0\xB7 |0 # <CJK>
+<U4E69> \x8F\xB0\xB8 |0 # <CJK>
+<U4E74> \x8F\xB0\xB9 |0 # <CJK>
+<U4E75> \x8F\xB0\xBA |0 # <CJK>
+<U4E79> \x8F\xB0\xBB |0 # <CJK>
+<U4E7F> \x8F\xB0\xBC |0 # <CJK>
+<U4E8D> \x8F\xB0\xBD |0 # <CJK>
+<U4E96> \x8F\xB0\xBE |0 # <CJK>
+<U4E97> \x8F\xB0\xBF |0 # <CJK>
+<U4E9D> \x8F\xB0\xC0 |0 # <CJK>
+<U4EAF> \x8F\xB0\xC1 |0 # <CJK>
+<U4EB9> \x8F\xB0\xC2 |0 # <CJK>
+<U4EC3> \x8F\xB0\xC3 |0 # <CJK>
+<U4ED0> \x8F\xB0\xC4 |0 # <CJK>
+<U4EDA> \x8F\xB0\xC5 |0 # <CJK>
+<U4EDB> \x8F\xB0\xC6 |0 # <CJK>
+<U4EE0> \x8F\xB0\xC7 |0 # <CJK>
+<U4EE1> \x8F\xB0\xC8 |0 # <CJK>
+<U4EE2> \x8F\xB0\xC9 |0 # <CJK>
+<U4EE8> \x8F\xB0\xCA |0 # <CJK>
+<U4EEF> \x8F\xB0\xCB |0 # <CJK>
+<U4EF1> \x8F\xB0\xCC |0 # <CJK>
+<U4EF3> \x8F\xB0\xCD |0 # <CJK>
+<U4EF5> \x8F\xB0\xCE |0 # <CJK>
+<U4EFD> \x8F\xB0\xCF |0 # <CJK>
+<U4EFE> \x8F\xB0\xD0 |0 # <CJK>
+<U4EFF> \x8F\xB0\xD1 |0 # <CJK>
+<U4F00> \x8F\xB0\xD2 |0 # <CJK>
+<U4F02> \x8F\xB0\xD3 |0 # <CJK>
+<U4F03> \x8F\xB0\xD4 |0 # <CJK>
+<U4F08> \x8F\xB0\xD5 |0 # <CJK>
+<U4F0B> \x8F\xB0\xD6 |0 # <CJK>
+<U4F0C> \x8F\xB0\xD7 |0 # <CJK>
+<U4F12> \x8F\xB0\xD8 |0 # <CJK>
+<U4F15> \x8F\xB0\xD9 |0 # <CJK>
+<U4F16> \x8F\xB0\xDA |0 # <CJK>
+<U4F17> \x8F\xB0\xDB |0 # <CJK>
+<U4F19> \x8F\xB0\xDC |0 # <CJK>
+<U4F2E> \x8F\xB0\xDD |0 # <CJK>
+<U4F31> \x8F\xB0\xDE |0 # <CJK>
+<U4F60> \x8F\xB0\xDF |0 # <CJK>
+<U4F33> \x8F\xB0\xE0 |0 # <CJK>
+<U4F35> \x8F\xB0\xE1 |0 # <CJK>
+<U4F37> \x8F\xB0\xE2 |0 # <CJK>
+<U4F39> \x8F\xB0\xE3 |0 # <CJK>
+<U4F3B> \x8F\xB0\xE4 |0 # <CJK>
+<U4F3E> \x8F\xB0\xE5 |0 # <CJK>
+<U4F40> \x8F\xB0\xE6 |0 # <CJK>
+<U4F42> \x8F\xB0\xE7 |0 # <CJK>
+<U4F48> \x8F\xB0\xE8 |0 # <CJK>
+<U4F49> \x8F\xB0\xE9 |0 # <CJK>
+<U4F4B> \x8F\xB0\xEA |0 # <CJK>
+<U4F4C> \x8F\xB0\xEB |0 # <CJK>
+<U4F52> \x8F\xB0\xEC |0 # <CJK>
+<U4F54> \x8F\xB0\xED |0 # <CJK>
+<U4F56> \x8F\xB0\xEE |0 # <CJK>
+<U4F58> \x8F\xB0\xEF |0 # <CJK>
+<U4F5F> \x8F\xB0\xF0 |0 # <CJK>
+<U4F63> \x8F\xB0\xF1 |0 # <CJK>
+<U4F6A> \x8F\xB0\xF2 |0 # <CJK>
+<U4F6C> \x8F\xB0\xF3 |0 # <CJK>
+<U4F6E> \x8F\xB0\xF4 |0 # <CJK>
+<U4F71> \x8F\xB0\xF5 |0 # <CJK>
+<U4F77> \x8F\xB0\xF6 |0 # <CJK>
+<U4F78> \x8F\xB0\xF7 |0 # <CJK>
+<U4F79> \x8F\xB0\xF8 |0 # <CJK>
+<U4F7A> \x8F\xB0\xF9 |0 # <CJK>
+<U4F7D> \x8F\xB0\xFA |0 # <CJK>
+<U4F7E> \x8F\xB0\xFB |0 # <CJK>
+<U4F81> \x8F\xB0\xFC |0 # <CJK>
+<U4F82> \x8F\xB0\xFD |0 # <CJK>
+<U4F84> \x8F\xB0\xFE |0 # <CJK>
+<U4F85> \x8F\xB1\xA1 |0 # <CJK>
+<U4F89> \x8F\xB1\xA2 |0 # <CJK>
+<U4F8A> \x8F\xB1\xA3 |0 # <CJK>
+<U4F8C> \x8F\xB1\xA4 |0 # <CJK>
+<U4F8E> \x8F\xB1\xA5 |0 # <CJK>
+<U4F90> \x8F\xB1\xA6 |0 # <CJK>
+<U4F92> \x8F\xB1\xA7 |0 # <CJK>
+<U4F93> \x8F\xB1\xA8 |0 # <CJK>
+<U4F94> \x8F\xB1\xA9 |0 # <CJK>
+<U4F97> \x8F\xB1\xAA |0 # <CJK>
+<U4F99> \x8F\xB1\xAB |0 # <CJK>
+<U4F9A> \x8F\xB1\xAC |0 # <CJK>
+<U4F9E> \x8F\xB1\xAD |0 # <CJK>
+<U4F9F> \x8F\xB1\xAE |0 # <CJK>
+<U4FB2> \x8F\xB1\xAF |0 # <CJK>
+<U4FB7> \x8F\xB1\xB0 |0 # <CJK>
+<U4FB9> \x8F\xB1\xB1 |0 # <CJK>
+<U4FBB> \x8F\xB1\xB2 |0 # <CJK>
+<U4FBC> \x8F\xB1\xB3 |0 # <CJK>
+<U4FBD> \x8F\xB1\xB4 |0 # <CJK>
+<U4FBE> \x8F\xB1\xB5 |0 # <CJK>
+<U4FC0> \x8F\xB1\xB6 |0 # <CJK>
+<U4FC1> \x8F\xB1\xB7 |0 # <CJK>
+<U4FC5> \x8F\xB1\xB8 |0 # <CJK>
+<U4FC6> \x8F\xB1\xB9 |0 # <CJK>
+<U4FC8> \x8F\xB1\xBA |0 # <CJK>
+<U4FC9> \x8F\xB1\xBB |0 # <CJK>
+<U4FCB> \x8F\xB1\xBC |0 # <CJK>
+<U4FCC> \x8F\xB1\xBD |0 # <CJK>
+<U4FCD> \x8F\xB1\xBE |0 # <CJK>
+<U4FCF> \x8F\xB1\xBF |0 # <CJK>
+<U4FD2> \x8F\xB1\xC0 |0 # <CJK>
+<U4FDC> \x8F\xB1\xC1 |0 # <CJK>
+<U4FE0> \x8F\xB1\xC2 |0 # <CJK>
+<U4FE2> \x8F\xB1\xC3 |0 # <CJK>
+<U4FF0> \x8F\xB1\xC4 |0 # <CJK>
+<U4FF2> \x8F\xB1\xC5 |0 # <CJK>
+<U4FFC> \x8F\xB1\xC6 |0 # <CJK>
+<U4FFD> \x8F\xB1\xC7 |0 # <CJK>
+<U4FFF> \x8F\xB1\xC8 |0 # <CJK>
+<U5000> \x8F\xB1\xC9 |0 # <CJK>
+<U5001> \x8F\xB1\xCA |0 # <CJK>
+<U5004> \x8F\xB1\xCB |0 # <CJK>
+<U5007> \x8F\xB1\xCC |0 # <CJK>
+<U500A> \x8F\xB1\xCD |0 # <CJK>
+<U500C> \x8F\xB1\xCE |0 # <CJK>
+<U500E> \x8F\xB1\xCF |0 # <CJK>
+<U5010> \x8F\xB1\xD0 |0 # <CJK>
+<U5013> \x8F\xB1\xD1 |0 # <CJK>
+<U5017> \x8F\xB1\xD2 |0 # <CJK>
+<U5018> \x8F\xB1\xD3 |0 # <CJK>
+<U501B> \x8F\xB1\xD4 |0 # <CJK>
+<U501C> \x8F\xB1\xD5 |0 # <CJK>
+<U501D> \x8F\xB1\xD6 |0 # <CJK>
+<U501E> \x8F\xB1\xD7 |0 # <CJK>
+<U5022> \x8F\xB1\xD8 |0 # <CJK>
+<U5027> \x8F\xB1\xD9 |0 # <CJK>
+<U502E> \x8F\xB1\xDA |0 # <CJK>
+<U5030> \x8F\xB1\xDB |0 # <CJK>
+<U5032> \x8F\xB1\xDC |0 # <CJK>
+<U5033> \x8F\xB1\xDD |0 # <CJK>
+<U5035> \x8F\xB1\xDE |0 # <CJK>
+<U5040> \x8F\xB1\xDF |0 # <CJK>
+<U5041> \x8F\xB1\xE0 |0 # <CJK>
+<U5042> \x8F\xB1\xE1 |0 # <CJK>
+<U5045> \x8F\xB1\xE2 |0 # <CJK>
+<U5046> \x8F\xB1\xE3 |0 # <CJK>
+<U504A> \x8F\xB1\xE4 |0 # <CJK>
+<U504C> \x8F\xB1\xE5 |0 # <CJK>
+<U504E> \x8F\xB1\xE6 |0 # <CJK>
+<U5051> \x8F\xB1\xE7 |0 # <CJK>
+<U5052> \x8F\xB1\xE8 |0 # <CJK>
+<U5053> \x8F\xB1\xE9 |0 # <CJK>
+<U5057> \x8F\xB1\xEA |0 # <CJK>
+<U5059> \x8F\xB1\xEB |0 # <CJK>
+<U505F> \x8F\xB1\xEC |0 # <CJK>
+<U5060> \x8F\xB1\xED |0 # <CJK>
+<U5062> \x8F\xB1\xEE |0 # <CJK>
+<U5063> \x8F\xB1\xEF |0 # <CJK>
+<U5066> \x8F\xB1\xF0 |0 # <CJK>
+<U5067> \x8F\xB1\xF1 |0 # <CJK>
+<U506A> \x8F\xB1\xF2 |0 # <CJK>
+<U506D> \x8F\xB1\xF3 |0 # <CJK>
+<U5070> \x8F\xB1\xF4 |0 # <CJK>
+<U5071> \x8F\xB1\xF5 |0 # <CJK>
+<U503B> \x8F\xB1\xF6 |0 # <CJK>
+<U5081> \x8F\xB1\xF7 |0 # <CJK>
+<U5083> \x8F\xB1\xF8 |0 # <CJK>
+<U5084> \x8F\xB1\xF9 |0 # <CJK>
+<U5086> \x8F\xB1\xFA |0 # <CJK>
+<U508A> \x8F\xB1\xFB |0 # <CJK>
+<U508E> \x8F\xB1\xFC |0 # <CJK>
+<U508F> \x8F\xB1\xFD |0 # <CJK>
+<U5090> \x8F\xB1\xFE |0 # <CJK>
+<U5092> \x8F\xB2\xA1 |0 # <CJK>
+<U5093> \x8F\xB2\xA2 |0 # <CJK>
+<U5094> \x8F\xB2\xA3 |0 # <CJK>
+<U5096> \x8F\xB2\xA4 |0 # <CJK>
+<U509B> \x8F\xB2\xA5 |0 # <CJK>
+<U509C> \x8F\xB2\xA6 |0 # <CJK>
+<U509E> \x8F\xB2\xA7 |0 # <CJK>
+<U509F> \x8F\xB2\xA8 |0 # <CJK>
+<U50A0> \x8F\xB2\xA9 |0 # <CJK>
+<U50A1> \x8F\xB2\xAA |0 # <CJK>
+<U50A2> \x8F\xB2\xAB |0 # <CJK>
+<U50AA> \x8F\xB2\xAC |0 # <CJK>
+<U50AF> \x8F\xB2\xAD |0 # <CJK>
+<U50B0> \x8F\xB2\xAE |0 # <CJK>
+<U50B9> \x8F\xB2\xAF |0 # <CJK>
+<U50BA> \x8F\xB2\xB0 |0 # <CJK>
+<U50BD> \x8F\xB2\xB1 |0 # <CJK>
+<U50C0> \x8F\xB2\xB2 |0 # <CJK>
+<U50C3> \x8F\xB2\xB3 |0 # <CJK>
+<U50C4> \x8F\xB2\xB4 |0 # <CJK>
+<U50C7> \x8F\xB2\xB5 |0 # <CJK>
+<U50CC> \x8F\xB2\xB6 |0 # <CJK>
+<U50CE> \x8F\xB2\xB7 |0 # <CJK>
+<U50D0> \x8F\xB2\xB8 |0 # <CJK>
+<U50D3> \x8F\xB2\xB9 |0 # <CJK>
+<U50D4> \x8F\xB2\xBA |0 # <CJK>
+<U50D8> \x8F\xB2\xBB |0 # <CJK>
+<U50DC> \x8F\xB2\xBC |0 # <CJK>
+<U50DD> \x8F\xB2\xBD |0 # <CJK>
+<U50DF> \x8F\xB2\xBE |0 # <CJK>
+<U50E2> \x8F\xB2\xBF |0 # <CJK>
+<U50E4> \x8F\xB2\xC0 |0 # <CJK>
+<U50E6> \x8F\xB2\xC1 |0 # <CJK>
+<U50E8> \x8F\xB2\xC2 |0 # <CJK>
+<U50E9> \x8F\xB2\xC3 |0 # <CJK>
+<U50EF> \x8F\xB2\xC4 |0 # <CJK>
+<U50F1> \x8F\xB2\xC5 |0 # <CJK>
+<U50F6> \x8F\xB2\xC6 |0 # <CJK>
+<U50FA> \x8F\xB2\xC7 |0 # <CJK>
+<U50FE> \x8F\xB2\xC8 |0 # <CJK>
+<U5103> \x8F\xB2\xC9 |0 # <CJK>
+<U5106> \x8F\xB2\xCA |0 # <CJK>
+<U5107> \x8F\xB2\xCB |0 # <CJK>
+<U5108> \x8F\xB2\xCC |0 # <CJK>
+<U510B> \x8F\xB2\xCD |0 # <CJK>
+<U510C> \x8F\xB2\xCE |0 # <CJK>
+<U510D> \x8F\xB2\xCF |0 # <CJK>
+<U510E> \x8F\xB2\xD0 |0 # <CJK>
+<U50F2> \x8F\xB2\xD1 |0 # <CJK>
+<U5110> \x8F\xB2\xD2 |0 # <CJK>
+<U5117> \x8F\xB2\xD3 |0 # <CJK>
+<U5119> \x8F\xB2\xD4 |0 # <CJK>
+<U511B> \x8F\xB2\xD5 |0 # <CJK>
+<U511C> \x8F\xB2\xD6 |0 # <CJK>
+<U511D> \x8F\xB2\xD7 |0 # <CJK>
+<U511E> \x8F\xB2\xD8 |0 # <CJK>
+<U5123> \x8F\xB2\xD9 |0 # <CJK>
+<U5127> \x8F\xB2\xDA |0 # <CJK>
+<U5128> \x8F\xB2\xDB |0 # <CJK>
+<U512C> \x8F\xB2\xDC |0 # <CJK>
+<U512D> \x8F\xB2\xDD |0 # <CJK>
+<U512F> \x8F\xB2\xDE |0 # <CJK>
+<U5131> \x8F\xB2\xDF |0 # <CJK>
+<U5133> \x8F\xB2\xE0 |0 # <CJK>
+<U5134> \x8F\xB2\xE1 |0 # <CJK>
+<U5135> \x8F\xB2\xE2 |0 # <CJK>
+<U5138> \x8F\xB2\xE3 |0 # <CJK>
+<U5139> \x8F\xB2\xE4 |0 # <CJK>
+<U5142> \x8F\xB2\xE5 |0 # <CJK>
+<U514A> \x8F\xB2\xE6 |0 # <CJK>
+<U514F> \x8F\xB2\xE7 |0 # <CJK>
+<U5153> \x8F\xB2\xE8 |0 # <CJK>
+<U5155> \x8F\xB2\xE9 |0 # <CJK>
+<U5157> \x8F\xB2\xEA |0 # <CJK>
+<U5158> \x8F\xB2\xEB |0 # <CJK>
+<U515F> \x8F\xB2\xEC |0 # <CJK>
+<U5164> \x8F\xB2\xED |0 # <CJK>
+<U5166> \x8F\xB2\xEE |0 # <CJK>
+<U517E> \x8F\xB2\xEF |0 # <CJK>
+<U5183> \x8F\xB2\xF0 |0 # <CJK>
+<U5184> \x8F\xB2\xF1 |0 # <CJK>
+<U518B> \x8F\xB2\xF2 |0 # <CJK>
+<U518E> \x8F\xB2\xF3 |0 # <CJK>
+<U5198> \x8F\xB2\xF4 |0 # <CJK>
+<U519D> \x8F\xB2\xF5 |0 # <CJK>
+<U51A1> \x8F\xB2\xF6 |0 # <CJK>
+<U51A3> \x8F\xB2\xF7 |0 # <CJK>
+<U51AD> \x8F\xB2\xF8 |0 # <CJK>
+<U51B8> \x8F\xB2\xF9 |0 # <CJK>
+<U51BA> \x8F\xB2\xFA |0 # <CJK>
+<U51BC> \x8F\xB2\xFB |0 # <CJK>
+<U51BE> \x8F\xB2\xFC |0 # <CJK>
+<U51BF> \x8F\xB2\xFD |0 # <CJK>
+<U51C2> \x8F\xB2\xFE |0 # <CJK>
+<U51C8> \x8F\xB3\xA1 |0 # <CJK>
+<U51CF> \x8F\xB3\xA2 |0 # <CJK>
+<U51D1> \x8F\xB3\xA3 |0 # <CJK>
+<U51D2> \x8F\xB3\xA4 |0 # <CJK>
+<U51D3> \x8F\xB3\xA5 |0 # <CJK>
+<U51D5> \x8F\xB3\xA6 |0 # <CJK>
+<U51D8> \x8F\xB3\xA7 |0 # <CJK>
+<U51DE> \x8F\xB3\xA8 |0 # <CJK>
+<U51E2> \x8F\xB3\xA9 |0 # <CJK>
+<U51E5> \x8F\xB3\xAA |0 # <CJK>
+<U51EE> \x8F\xB3\xAB |0 # <CJK>
+<U51F2> \x8F\xB3\xAC |0 # <CJK>
+<U51F3> \x8F\xB3\xAD |0 # <CJK>
+<U51F4> \x8F\xB3\xAE |0 # <CJK>
+<U51F7> \x8F\xB3\xAF |0 # <CJK>
+<U5201> \x8F\xB3\xB0 |0 # <CJK>
+<U5202> \x8F\xB3\xB1 |0 # <CJK>
+<U5205> \x8F\xB3\xB2 |0 # <CJK>
+<U5212> \x8F\xB3\xB3 |0 # <CJK>
+<U5213> \x8F\xB3\xB4 |0 # <CJK>
+<U5215> \x8F\xB3\xB5 |0 # <CJK>
+<U5216> \x8F\xB3\xB6 |0 # <CJK>
+<U5218> \x8F\xB3\xB7 |0 # <CJK>
+<U5222> \x8F\xB3\xB8 |0 # <CJK>
+<U5228> \x8F\xB3\xB9 |0 # <CJK>
+<U5231> \x8F\xB3\xBA |0 # <CJK>
+<U5232> \x8F\xB3\xBB |0 # <CJK>
+<U5235> \x8F\xB3\xBC |0 # <CJK>
+<U523C> \x8F\xB3\xBD |0 # <CJK>
+<U5245> \x8F\xB3\xBE |0 # <CJK>
+<U5249> \x8F\xB3\xBF |0 # <CJK>
+<U5255> \x8F\xB3\xC0 |0 # <CJK>
+<U5257> \x8F\xB3\xC1 |0 # <CJK>
+<U5258> \x8F\xB3\xC2 |0 # <CJK>
+<U525A> \x8F\xB3\xC3 |0 # <CJK>
+<U525C> \x8F\xB3\xC4 |0 # <CJK>
+<U525F> \x8F\xB3\xC5 |0 # <CJK>
+<U5260> \x8F\xB3\xC6 |0 # <CJK>
+<U5261> \x8F\xB3\xC7 |0 # <CJK>
+<U5266> \x8F\xB3\xC8 |0 # <CJK>
+<U526E> \x8F\xB3\xC9 |0 # <CJK>
+<U5277> \x8F\xB3\xCA |0 # <CJK>
+<U5278> \x8F\xB3\xCB |0 # <CJK>
+<U5279> \x8F\xB3\xCC |0 # <CJK>
+<U5280> \x8F\xB3\xCD |0 # <CJK>
+<U5282> \x8F\xB3\xCE |0 # <CJK>
+<U5285> \x8F\xB3\xCF |0 # <CJK>
+<U528A> \x8F\xB3\xD0 |0 # <CJK>
+<U528C> \x8F\xB3\xD1 |0 # <CJK>
+<U5293> \x8F\xB3\xD2 |0 # <CJK>
+<U5295> \x8F\xB3\xD3 |0 # <CJK>
+<U5296> \x8F\xB3\xD4 |0 # <CJK>
+<U5297> \x8F\xB3\xD5 |0 # <CJK>
+<U5298> \x8F\xB3\xD6 |0 # <CJK>
+<U529A> \x8F\xB3\xD7 |0 # <CJK>
+<U529C> \x8F\xB3\xD8 |0 # <CJK>
+<U52A4> \x8F\xB3\xD9 |0 # <CJK>
+<U52A5> \x8F\xB3\xDA |0 # <CJK>
+<U52A6> \x8F\xB3\xDB |0 # <CJK>
+<U52A7> \x8F\xB3\xDC |0 # <CJK>
+<U52AF> \x8F\xB3\xDD |0 # <CJK>
+<U52B0> \x8F\xB3\xDE |0 # <CJK>
+<U52B6> \x8F\xB3\xDF |0 # <CJK>
+<U52B7> \x8F\xB3\xE0 |0 # <CJK>
+<U52B8> \x8F\xB3\xE1 |0 # <CJK>
+<U52BA> \x8F\xB3\xE2 |0 # <CJK>
+<U52BB> \x8F\xB3\xE3 |0 # <CJK>
+<U52BD> \x8F\xB3\xE4 |0 # <CJK>
+<U52C0> \x8F\xB3\xE5 |0 # <CJK>
+<U52C4> \x8F\xB3\xE6 |0 # <CJK>
+<U52C6> \x8F\xB3\xE7 |0 # <CJK>
+<U52C8> \x8F\xB3\xE8 |0 # <CJK>
+<U52CC> \x8F\xB3\xE9 |0 # <CJK>
+<U52CF> \x8F\xB3\xEA |0 # <CJK>
+<U52D1> \x8F\xB3\xEB |0 # <CJK>
+<U52D4> \x8F\xB3\xEC |0 # <CJK>
+<U52D6> \x8F\xB3\xED |0 # <CJK>
+<U52DB> \x8F\xB3\xEE |0 # <CJK>
+<U52DC> \x8F\xB3\xEF |0 # <CJK>
+<U52E1> \x8F\xB3\xF0 |0 # <CJK>
+<U52E5> \x8F\xB3\xF1 |0 # <CJK>
+<U52E8> \x8F\xB3\xF2 |0 # <CJK>
+<U52E9> \x8F\xB3\xF3 |0 # <CJK>
+<U52EA> \x8F\xB3\xF4 |0 # <CJK>
+<U52EC> \x8F\xB3\xF5 |0 # <CJK>
+<U52F0> \x8F\xB3\xF6 |0 # <CJK>
+<U52F1> \x8F\xB3\xF7 |0 # <CJK>
+<U52F4> \x8F\xB3\xF8 |0 # <CJK>
+<U52F6> \x8F\xB3\xF9 |0 # <CJK>
+<U52F7> \x8F\xB3\xFA |0 # <CJK>
+<U5300> \x8F\xB3\xFB |0 # <CJK>
+<U5303> \x8F\xB3\xFC |0 # <CJK>
+<U530A> \x8F\xB3\xFD |0 # <CJK>
+<U530B> \x8F\xB3\xFE |0 # <CJK>
+<U530C> \x8F\xB4\xA1 |0 # <CJK>
+<U5311> \x8F\xB4\xA2 |0 # <CJK>
+<U5313> \x8F\xB4\xA3 |0 # <CJK>
+<U5318> \x8F\xB4\xA4 |0 # <CJK>
+<U531B> \x8F\xB4\xA5 |0 # <CJK>
+<U531C> \x8F\xB4\xA6 |0 # <CJK>
+<U531E> \x8F\xB4\xA7 |0 # <CJK>
+<U531F> \x8F\xB4\xA8 |0 # <CJK>
+<U5325> \x8F\xB4\xA9 |0 # <CJK>
+<U5327> \x8F\xB4\xAA |0 # <CJK>
+<U5328> \x8F\xB4\xAB |0 # <CJK>
+<U5329> \x8F\xB4\xAC |0 # <CJK>
+<U532B> \x8F\xB4\xAD |0 # <CJK>
+<U532C> \x8F\xB4\xAE |0 # <CJK>
+<U532D> \x8F\xB4\xAF |0 # <CJK>
+<U5330> \x8F\xB4\xB0 |0 # <CJK>
+<U5332> \x8F\xB4\xB1 |0 # <CJK>
+<U5335> \x8F\xB4\xB2 |0 # <CJK>
+<U533C> \x8F\xB4\xB3 |0 # <CJK>
+<U533D> \x8F\xB4\xB4 |0 # <CJK>
+<U533E> \x8F\xB4\xB5 |0 # <CJK>
+<U5342> \x8F\xB4\xB6 |0 # <CJK>
+<U534C> \x8F\xB4\xB7 |0 # <CJK>
+<U534B> \x8F\xB4\xB8 |0 # <CJK>
+<U5359> \x8F\xB4\xB9 |0 # <CJK>
+<U535B> \x8F\xB4\xBA |0 # <CJK>
+<U5361> \x8F\xB4\xBB |0 # <CJK>
+<U5363> \x8F\xB4\xBC |0 # <CJK>
+<U5365> \x8F\xB4\xBD |0 # <CJK>
+<U536C> \x8F\xB4\xBE |0 # <CJK>
+<U536D> \x8F\xB4\xBF |0 # <CJK>
+<U5372> \x8F\xB4\xC0 |0 # <CJK>
+<U5379> \x8F\xB4\xC1 |0 # <CJK>
+<U537E> \x8F\xB4\xC2 |0 # <CJK>
+<U5383> \x8F\xB4\xC3 |0 # <CJK>
+<U5387> \x8F\xB4\xC4 |0 # <CJK>
+<U5388> \x8F\xB4\xC5 |0 # <CJK>
+<U538E> \x8F\xB4\xC6 |0 # <CJK>
+<U5393> \x8F\xB4\xC7 |0 # <CJK>
+<U5394> \x8F\xB4\xC8 |0 # <CJK>
+<U5399> \x8F\xB4\xC9 |0 # <CJK>
+<U539D> \x8F\xB4\xCA |0 # <CJK>
+<U53A1> \x8F\xB4\xCB |0 # <CJK>
+<U53A4> \x8F\xB4\xCC |0 # <CJK>
+<U53AA> \x8F\xB4\xCD |0 # <CJK>
+<U53AB> \x8F\xB4\xCE |0 # <CJK>
+<U53AF> \x8F\xB4\xCF |0 # <CJK>
+<U53B2> \x8F\xB4\xD0 |0 # <CJK>
+<U53B4> \x8F\xB4\xD1 |0 # <CJK>
+<U53B5> \x8F\xB4\xD2 |0 # <CJK>
+<U53B7> \x8F\xB4\xD3 |0 # <CJK>
+<U53B8> \x8F\xB4\xD4 |0 # <CJK>
+<U53BA> \x8F\xB4\xD5 |0 # <CJK>
+<U53BD> \x8F\xB4\xD6 |0 # <CJK>
+<U53C0> \x8F\xB4\xD7 |0 # <CJK>
+<U53C5> \x8F\xB4\xD8 |0 # <CJK>
+<U53CF> \x8F\xB4\xD9 |0 # <CJK>
+<U53D2> \x8F\xB4\xDA |0 # <CJK>
+<U53D3> \x8F\xB4\xDB |0 # <CJK>
+<U53D5> \x8F\xB4\xDC |0 # <CJK>
+<U53DA> \x8F\xB4\xDD |0 # <CJK>
+<U53DD> \x8F\xB4\xDE |0 # <CJK>
+<U53DE> \x8F\xB4\xDF |0 # <CJK>
+<U53E0> \x8F\xB4\xE0 |0 # <CJK>
+<U53E6> \x8F\xB4\xE1 |0 # <CJK>
+<U53E7> \x8F\xB4\xE2 |0 # <CJK>
+<U53F5> \x8F\xB4\xE3 |0 # <CJK>
+<U5402> \x8F\xB4\xE4 |0 # <CJK>
+<U5413> \x8F\xB4\xE5 |0 # <CJK>
+<U541A> \x8F\xB4\xE6 |0 # <CJK>
+<U5421> \x8F\xB4\xE7 |0 # <CJK>
+<U5427> \x8F\xB4\xE8 |0 # <CJK>
+<U5428> \x8F\xB4\xE9 |0 # <CJK>
+<U542A> \x8F\xB4\xEA |0 # <CJK>
+<U542F> \x8F\xB4\xEB |0 # <CJK>
+<U5431> \x8F\xB4\xEC |0 # <CJK>
+<U5434> \x8F\xB4\xED |0 # <CJK>
+<U5435> \x8F\xB4\xEE |0 # <CJK>
+<U5443> \x8F\xB4\xEF |0 # <CJK>
+<U5444> \x8F\xB4\xF0 |0 # <CJK>
+<U5447> \x8F\xB4\xF1 |0 # <CJK>
+<U544D> \x8F\xB4\xF2 |0 # <CJK>
+<U544F> \x8F\xB4\xF3 |0 # <CJK>
+<U545E> \x8F\xB4\xF4 |0 # <CJK>
+<U5462> \x8F\xB4\xF5 |0 # <CJK>
+<U5464> \x8F\xB4\xF6 |0 # <CJK>
+<U5466> \x8F\xB4\xF7 |0 # <CJK>
+<U5467> \x8F\xB4\xF8 |0 # <CJK>
+<U5469> \x8F\xB4\xF9 |0 # <CJK>
+<U546B> \x8F\xB4\xFA |0 # <CJK>
+<U546D> \x8F\xB4\xFB |0 # <CJK>
+<U546E> \x8F\xB4\xFC |0 # <CJK>
+<U5474> \x8F\xB4\xFD |0 # <CJK>
+<U547F> \x8F\xB4\xFE |0 # <CJK>
+<U5481> \x8F\xB5\xA1 |0 # <CJK>
+<U5483> \x8F\xB5\xA2 |0 # <CJK>
+<U5485> \x8F\xB5\xA3 |0 # <CJK>
+<U5488> \x8F\xB5\xA4 |0 # <CJK>
+<U5489> \x8F\xB5\xA5 |0 # <CJK>
+<U548D> \x8F\xB5\xA6 |0 # <CJK>
+<U5491> \x8F\xB5\xA7 |0 # <CJK>
+<U5495> \x8F\xB5\xA8 |0 # <CJK>
+<U5496> \x8F\xB5\xA9 |0 # <CJK>
+<U549C> \x8F\xB5\xAA |0 # <CJK>
+<U549F> \x8F\xB5\xAB |0 # <CJK>
+<U54A1> \x8F\xB5\xAC |0 # <CJK>
+<U54A6> \x8F\xB5\xAD |0 # <CJK>
+<U54A7> \x8F\xB5\xAE |0 # <CJK>
+<U54A9> \x8F\xB5\xAF |0 # <CJK>
+<U54AA> \x8F\xB5\xB0 |0 # <CJK>
+<U54AD> \x8F\xB5\xB1 |0 # <CJK>
+<U54AE> \x8F\xB5\xB2 |0 # <CJK>
+<U54B1> \x8F\xB5\xB3 |0 # <CJK>
+<U54B7> \x8F\xB5\xB4 |0 # <CJK>
+<U54B9> \x8F\xB5\xB5 |0 # <CJK>
+<U54BA> \x8F\xB5\xB6 |0 # <CJK>
+<U54BB> \x8F\xB5\xB7 |0 # <CJK>
+<U54BF> \x8F\xB5\xB8 |0 # <CJK>
+<U54C6> \x8F\xB5\xB9 |0 # <CJK>
+<U54CA> \x8F\xB5\xBA |0 # <CJK>
+<U54CD> \x8F\xB5\xBB |0 # <CJK>
+<U54CE> \x8F\xB5\xBC |0 # <CJK>
+<U54E0> \x8F\xB5\xBD |0 # <CJK>
+<U54EA> \x8F\xB5\xBE |0 # <CJK>
+<U54EC> \x8F\xB5\xBF |0 # <CJK>
+<U54EF> \x8F\xB5\xC0 |0 # <CJK>
+<U54F6> \x8F\xB5\xC1 |0 # <CJK>
+<U54FC> \x8F\xB5\xC2 |0 # <CJK>
+<U54FE> \x8F\xB5\xC3 |0 # <CJK>
+<U54FF> \x8F\xB5\xC4 |0 # <CJK>
+<U5500> \x8F\xB5\xC5 |0 # <CJK>
+<U5501> \x8F\xB5\xC6 |0 # <CJK>
+<U5505> \x8F\xB5\xC7 |0 # <CJK>
+<U5508> \x8F\xB5\xC8 |0 # <CJK>
+<U5509> \x8F\xB5\xC9 |0 # <CJK>
+<U550C> \x8F\xB5\xCA |0 # <CJK>
+<U550D> \x8F\xB5\xCB |0 # <CJK>
+<U550E> \x8F\xB5\xCC |0 # <CJK>
+<U5515> \x8F\xB5\xCD |0 # <CJK>
+<U552A> \x8F\xB5\xCE |0 # <CJK>
+<U552B> \x8F\xB5\xCF |0 # <CJK>
+<U5532> \x8F\xB5\xD0 |0 # <CJK>
+<U5535> \x8F\xB5\xD1 |0 # <CJK>
+<U5536> \x8F\xB5\xD2 |0 # <CJK>
+<U553B> \x8F\xB5\xD3 |0 # <CJK>
+<U553C> \x8F\xB5\xD4 |0 # <CJK>
+<U553D> \x8F\xB5\xD5 |0 # <CJK>
+<U5541> \x8F\xB5\xD6 |0 # <CJK>
+<U5547> \x8F\xB5\xD7 |0 # <CJK>
+<U5549> \x8F\xB5\xD8 |0 # <CJK>
+<U554A> \x8F\xB5\xD9 |0 # <CJK>
+<U554D> \x8F\xB5\xDA |0 # <CJK>
+<U5550> \x8F\xB5\xDB |0 # <CJK>
+<U5551> \x8F\xB5\xDC |0 # <CJK>
+<U5558> \x8F\xB5\xDD |0 # <CJK>
+<U555A> \x8F\xB5\xDE |0 # <CJK>
+<U555B> \x8F\xB5\xDF |0 # <CJK>
+<U555E> \x8F\xB5\xE0 |0 # <CJK>
+<U5560> \x8F\xB5\xE1 |0 # <CJK>
+<U5561> \x8F\xB5\xE2 |0 # <CJK>
+<U5564> \x8F\xB5\xE3 |0 # <CJK>
+<U5566> \x8F\xB5\xE4 |0 # <CJK>
+<U557F> \x8F\xB5\xE5 |0 # <CJK>
+<U5581> \x8F\xB5\xE6 |0 # <CJK>
+<U5582> \x8F\xB5\xE7 |0 # <CJK>
+<U5586> \x8F\xB5\xE8 |0 # <CJK>
+<U5588> \x8F\xB5\xE9 |0 # <CJK>
+<U558E> \x8F\xB5\xEA |0 # <CJK>
+<U558F> \x8F\xB5\xEB |0 # <CJK>
+<U5591> \x8F\xB5\xEC |0 # <CJK>
+<U5592> \x8F\xB5\xED |0 # <CJK>
+<U5593> \x8F\xB5\xEE |0 # <CJK>
+<U5594> \x8F\xB5\xEF |0 # <CJK>
+<U5597> \x8F\xB5\xF0 |0 # <CJK>
+<U55A3> \x8F\xB5\xF1 |0 # <CJK>
+<U55A4> \x8F\xB5\xF2 |0 # <CJK>
+<U55AD> \x8F\xB5\xF3 |0 # <CJK>
+<U55B2> \x8F\xB5\xF4 |0 # <CJK>
+<U55BF> \x8F\xB5\xF5 |0 # <CJK>
+<U55C1> \x8F\xB5\xF6 |0 # <CJK>
+<U55C3> \x8F\xB5\xF7 |0 # <CJK>
+<U55C6> \x8F\xB5\xF8 |0 # <CJK>
+<U55C9> \x8F\xB5\xF9 |0 # <CJK>
+<U55CB> \x8F\xB5\xFA |0 # <CJK>
+<U55CC> \x8F\xB5\xFB |0 # <CJK>
+<U55CE> \x8F\xB5\xFC |0 # <CJK>
+<U55D1> \x8F\xB5\xFD |0 # <CJK>
+<U55D2> \x8F\xB5\xFE |0 # <CJK>
+<U55D3> \x8F\xB6\xA1 |0 # <CJK>
+<U55D7> \x8F\xB6\xA2 |0 # <CJK>
+<U55D8> \x8F\xB6\xA3 |0 # <CJK>
+<U55DB> \x8F\xB6\xA4 |0 # <CJK>
+<U55DE> \x8F\xB6\xA5 |0 # <CJK>
+<U55E2> \x8F\xB6\xA6 |0 # <CJK>
+<U55E9> \x8F\xB6\xA7 |0 # <CJK>
+<U55F6> \x8F\xB6\xA8 |0 # <CJK>
+<U55FF> \x8F\xB6\xA9 |0 # <CJK>
+<U5605> \x8F\xB6\xAA |0 # <CJK>
+<U5608> \x8F\xB6\xAB |0 # <CJK>
+<U560A> \x8F\xB6\xAC |0 # <CJK>
+<U560D> \x8F\xB6\xAD |0 # <CJK>
+<U560E> \x8F\xB6\xAE |0 # <CJK>
+<U560F> \x8F\xB6\xAF |0 # <CJK>
+<U5610> \x8F\xB6\xB0 |0 # <CJK>
+<U5611> \x8F\xB6\xB1 |0 # <CJK>
+<U5612> \x8F\xB6\xB2 |0 # <CJK>
+<U5619> \x8F\xB6\xB3 |0 # <CJK>
+<U562C> \x8F\xB6\xB4 |0 # <CJK>
+<U5630> \x8F\xB6\xB5 |0 # <CJK>
+<U5633> \x8F\xB6\xB6 |0 # <CJK>
+<U5635> \x8F\xB6\xB7 |0 # <CJK>
+<U5637> \x8F\xB6\xB8 |0 # <CJK>
+<U5639> \x8F\xB6\xB9 |0 # <CJK>
+<U563B> \x8F\xB6\xBA |0 # <CJK>
+<U563C> \x8F\xB6\xBB |0 # <CJK>
+<U563D> \x8F\xB6\xBC |0 # <CJK>
+<U563F> \x8F\xB6\xBD |0 # <CJK>
+<U5640> \x8F\xB6\xBE |0 # <CJK>
+<U5641> \x8F\xB6\xBF |0 # <CJK>
+<U5643> \x8F\xB6\xC0 |0 # <CJK>
+<U5644> \x8F\xB6\xC1 |0 # <CJK>
+<U5646> \x8F\xB6\xC2 |0 # <CJK>
+<U5649> \x8F\xB6\xC3 |0 # <CJK>
+<U564B> \x8F\xB6\xC4 |0 # <CJK>
+<U564D> \x8F\xB6\xC5 |0 # <CJK>
+<U564F> \x8F\xB6\xC6 |0 # <CJK>
+<U5654> \x8F\xB6\xC7 |0 # <CJK>
+<U565E> \x8F\xB6\xC8 |0 # <CJK>
+<U5660> \x8F\xB6\xC9 |0 # <CJK>
+<U5661> \x8F\xB6\xCA |0 # <CJK>
+<U5662> \x8F\xB6\xCB |0 # <CJK>
+<U5663> \x8F\xB6\xCC |0 # <CJK>
+<U5666> \x8F\xB6\xCD |0 # <CJK>
+<U5669> \x8F\xB6\xCE |0 # <CJK>
+<U566D> \x8F\xB6\xCF |0 # <CJK>
+<U566F> \x8F\xB6\xD0 |0 # <CJK>
+<U5671> \x8F\xB6\xD1 |0 # <CJK>
+<U5672> \x8F\xB6\xD2 |0 # <CJK>
+<U5675> \x8F\xB6\xD3 |0 # <CJK>
+<U5684> \x8F\xB6\xD4 |0 # <CJK>
+<U5685> \x8F\xB6\xD5 |0 # <CJK>
+<U5688> \x8F\xB6\xD6 |0 # <CJK>
+<U568B> \x8F\xB6\xD7 |0 # <CJK>
+<U568C> \x8F\xB6\xD8 |0 # <CJK>
+<U5695> \x8F\xB6\xD9 |0 # <CJK>
+<U5699> \x8F\xB6\xDA |0 # <CJK>
+<U569A> \x8F\xB6\xDB |0 # <CJK>
+<U569D> \x8F\xB6\xDC |0 # <CJK>
+<U569E> \x8F\xB6\xDD |0 # <CJK>
+<U569F> \x8F\xB6\xDE |0 # <CJK>
+<U56A6> \x8F\xB6\xDF |0 # <CJK>
+<U56A7> \x8F\xB6\xE0 |0 # <CJK>
+<U56A8> \x8F\xB6\xE1 |0 # <CJK>
+<U56A9> \x8F\xB6\xE2 |0 # <CJK>
+<U56AB> \x8F\xB6\xE3 |0 # <CJK>
+<U56AC> \x8F\xB6\xE4 |0 # <CJK>
+<U56AD> \x8F\xB6\xE5 |0 # <CJK>
+<U56B1> \x8F\xB6\xE6 |0 # <CJK>
+<U56B3> \x8F\xB6\xE7 |0 # <CJK>
+<U56B7> \x8F\xB6\xE8 |0 # <CJK>
+<U56BE> \x8F\xB6\xE9 |0 # <CJK>
+<U56C5> \x8F\xB6\xEA |0 # <CJK>
+<U56C9> \x8F\xB6\xEB |0 # <CJK>
+<U56CA> \x8F\xB6\xEC |0 # <CJK>
+<U56CB> \x8F\xB6\xED |0 # <CJK>
+<U56CF> \x8F\xB6\xEE |0 # <CJK>
+<U56D0> \x8F\xB6\xEF |0 # <CJK>
+<U56CC> \x8F\xB6\xF0 |0 # <CJK>
+<U56CD> \x8F\xB6\xF1 |0 # <CJK>
+<U56D9> \x8F\xB6\xF2 |0 # <CJK>
+<U56DC> \x8F\xB6\xF3 |0 # <CJK>
+<U56DD> \x8F\xB6\xF4 |0 # <CJK>
+<U56DF> \x8F\xB6\xF5 |0 # <CJK>
+<U56E1> \x8F\xB6\xF6 |0 # <CJK>
+<U56E4> \x8F\xB6\xF7 |0 # <CJK>
+<U56E5> \x8F\xB6\xF8 |0 # <CJK>
+<U56E6> \x8F\xB6\xF9 |0 # <CJK>
+<U56E7> \x8F\xB6\xFA |0 # <CJK>
+<U56E8> \x8F\xB6\xFB |0 # <CJK>
+<U56F1> \x8F\xB6\xFC |0 # <CJK>
+<U56EB> \x8F\xB6\xFD |0 # <CJK>
+<U56ED> \x8F\xB6\xFE |0 # <CJK>
+<U56F6> \x8F\xB7\xA1 |0 # <CJK>
+<U56F7> \x8F\xB7\xA2 |0 # <CJK>
+<U5701> \x8F\xB7\xA3 |0 # <CJK>
+<U5702> \x8F\xB7\xA4 |0 # <CJK>
+<U5707> \x8F\xB7\xA5 |0 # <CJK>
+<U570A> \x8F\xB7\xA6 |0 # <CJK>
+<U570C> \x8F\xB7\xA7 |0 # <CJK>
+<U5711> \x8F\xB7\xA8 |0 # <CJK>
+<U5715> \x8F\xB7\xA9 |0 # <CJK>
+<U571A> \x8F\xB7\xAA |0 # <CJK>
+<U571B> \x8F\xB7\xAB |0 # <CJK>
+<U571D> \x8F\xB7\xAC |0 # <CJK>
+<U5720> \x8F\xB7\xAD |0 # <CJK>
+<U5722> \x8F\xB7\xAE |0 # <CJK>
+<U5723> \x8F\xB7\xAF |0 # <CJK>
+<U5724> \x8F\xB7\xB0 |0 # <CJK>
+<U5725> \x8F\xB7\xB1 |0 # <CJK>
+<U5729> \x8F\xB7\xB2 |0 # <CJK>
+<U572A> \x8F\xB7\xB3 |0 # <CJK>
+<U572C> \x8F\xB7\xB4 |0 # <CJK>
+<U572E> \x8F\xB7\xB5 |0 # <CJK>
+<U572F> \x8F\xB7\xB6 |0 # <CJK>
+<U5733> \x8F\xB7\xB7 |0 # <CJK>
+<U5734> \x8F\xB7\xB8 |0 # <CJK>
+<U573D> \x8F\xB7\xB9 |0 # <CJK>
+<U573E> \x8F\xB7\xBA |0 # <CJK>
+<U573F> \x8F\xB7\xBB |0 # <CJK>
+<U5745> \x8F\xB7\xBC |0 # <CJK>
+<U5746> \x8F\xB7\xBD |0 # <CJK>
+<U574C> \x8F\xB7\xBE |0 # <CJK>
+<U574D> \x8F\xB7\xBF |0 # <CJK>
+<U5752> \x8F\xB7\xC0 |0 # <CJK>
+<U5762> \x8F\xB7\xC1 |0 # <CJK>
+<U5765> \x8F\xB7\xC2 |0 # <CJK>
+<U5767> \x8F\xB7\xC3 |0 # <CJK>
+<U5768> \x8F\xB7\xC4 |0 # <CJK>
+<U576B> \x8F\xB7\xC5 |0 # <CJK>
+<U576D> \x8F\xB7\xC6 |0 # <CJK>
+<U576E> \x8F\xB7\xC7 |0 # <CJK>
+<U576F> \x8F\xB7\xC8 |0 # <CJK>
+<U5770> \x8F\xB7\xC9 |0 # <CJK>
+<U5771> \x8F\xB7\xCA |0 # <CJK>
+<U5773> \x8F\xB7\xCB |0 # <CJK>
+<U5774> \x8F\xB7\xCC |0 # <CJK>
+<U5775> \x8F\xB7\xCD |0 # <CJK>
+<U5777> \x8F\xB7\xCE |0 # <CJK>
+<U5779> \x8F\xB7\xCF |0 # <CJK>
+<U577A> \x8F\xB7\xD0 |0 # <CJK>
+<U577B> \x8F\xB7\xD1 |0 # <CJK>
+<U577C> \x8F\xB7\xD2 |0 # <CJK>
+<U577E> \x8F\xB7\xD3 |0 # <CJK>
+<U5781> \x8F\xB7\xD4 |0 # <CJK>
+<U5783> \x8F\xB7\xD5 |0 # <CJK>
+<U578C> \x8F\xB7\xD6 |0 # <CJK>
+<U5794> \x8F\xB7\xD7 |0 # <CJK>
+<U5797> \x8F\xB7\xD8 |0 # <CJK>
+<U5799> \x8F\xB7\xD9 |0 # <CJK>
+<U579A> \x8F\xB7\xDA |0 # <CJK>
+<U579C> \x8F\xB7\xDB |0 # <CJK>
+<U579D> \x8F\xB7\xDC |0 # <CJK>
+<U579E> \x8F\xB7\xDD |0 # <CJK>
+<U579F> \x8F\xB7\xDE |0 # <CJK>
+<U57A1> \x8F\xB7\xDF |0 # <CJK>
+<U5795> \x8F\xB7\xE0 |0 # <CJK>
+<U57A7> \x8F\xB7\xE1 |0 # <CJK>
+<U57A8> \x8F\xB7\xE2 |0 # <CJK>
+<U57A9> \x8F\xB7\xE3 |0 # <CJK>
+<U57AC> \x8F\xB7\xE4 |0 # <CJK>
+<U57B8> \x8F\xB7\xE5 |0 # <CJK>
+<U57BD> \x8F\xB7\xE6 |0 # <CJK>
+<U57C7> \x8F\xB7\xE7 |0 # <CJK>
+<U57C8> \x8F\xB7\xE8 |0 # <CJK>
+<U57CC> \x8F\xB7\xE9 |0 # <CJK>
+<U57CF> \x8F\xB7\xEA |0 # <CJK>
+<U57D5> \x8F\xB7\xEB |0 # <CJK>
+<U57DD> \x8F\xB7\xEC |0 # <CJK>
+<U57DE> \x8F\xB7\xED |0 # <CJK>
+<U57E4> \x8F\xB7\xEE |0 # <CJK>
+<U57E6> \x8F\xB7\xEF |0 # <CJK>
+<U57E7> \x8F\xB7\xF0 |0 # <CJK>
+<U57E9> \x8F\xB7\xF1 |0 # <CJK>
+<U57ED> \x8F\xB7\xF2 |0 # <CJK>
+<U57F0> \x8F\xB7\xF3 |0 # <CJK>
+<U57F5> \x8F\xB7\xF4 |0 # <CJK>
+<U57F6> \x8F\xB7\xF5 |0 # <CJK>
+<U57F8> \x8F\xB7\xF6 |0 # <CJK>
+<U57FD> \x8F\xB7\xF7 |0 # <CJK>
+<U57FE> \x8F\xB7\xF8 |0 # <CJK>
+<U57FF> \x8F\xB7\xF9 |0 # <CJK>
+<U5803> \x8F\xB7\xFA |0 # <CJK>
+<U5804> \x8F\xB7\xFB |0 # <CJK>
+<U5808> \x8F\xB7\xFC |0 # <CJK>
+<U5809> \x8F\xB7\xFD |0 # <CJK>
+<U57E1> \x8F\xB7\xFE |0 # <CJK>
+<U580C> \x8F\xB8\xA1 |0 # <CJK>
+<U580D> \x8F\xB8\xA2 |0 # <CJK>
+<U581B> \x8F\xB8\xA3 |0 # <CJK>
+<U581E> \x8F\xB8\xA4 |0 # <CJK>
+<U581F> \x8F\xB8\xA5 |0 # <CJK>
+<U5820> \x8F\xB8\xA6 |0 # <CJK>
+<U5826> \x8F\xB8\xA7 |0 # <CJK>
+<U5827> \x8F\xB8\xA8 |0 # <CJK>
+<U582D> \x8F\xB8\xA9 |0 # <CJK>
+<U5832> \x8F\xB8\xAA |0 # <CJK>
+<U5839> \x8F\xB8\xAB |0 # <CJK>
+<U583F> \x8F\xB8\xAC |0 # <CJK>
+<U5849> \x8F\xB8\xAD |0 # <CJK>
+<U584C> \x8F\xB8\xAE |0 # <CJK>
+<U584D> \x8F\xB8\xAF |0 # <CJK>
+<U584F> \x8F\xB8\xB0 |0 # <CJK>
+<U5850> \x8F\xB8\xB1 |0 # <CJK>
+<U5855> \x8F\xB8\xB2 |0 # <CJK>
+<U585F> \x8F\xB8\xB3 |0 # <CJK>
+<U5861> \x8F\xB8\xB4 |0 # <CJK>
+<U5864> \x8F\xB8\xB5 |0 # <CJK>
+<U5867> \x8F\xB8\xB6 |0 # <CJK>
+<U5868> \x8F\xB8\xB7 |0 # <CJK>
+<U5878> \x8F\xB8\xB8 |0 # <CJK>
+<U587C> \x8F\xB8\xB9 |0 # <CJK>
+<U587F> \x8F\xB8\xBA |0 # <CJK>
+<U5880> \x8F\xB8\xBB |0 # <CJK>
+<U5881> \x8F\xB8\xBC |0 # <CJK>
+<U5887> \x8F\xB8\xBD |0 # <CJK>
+<U5888> \x8F\xB8\xBE |0 # <CJK>
+<U5889> \x8F\xB8\xBF |0 # <CJK>
+<U588A> \x8F\xB8\xC0 |0 # <CJK>
+<U588C> \x8F\xB8\xC1 |0 # <CJK>
+<U588D> \x8F\xB8\xC2 |0 # <CJK>
+<U588F> \x8F\xB8\xC3 |0 # <CJK>
+<U5890> \x8F\xB8\xC4 |0 # <CJK>
+<U5894> \x8F\xB8\xC5 |0 # <CJK>
+<U5896> \x8F\xB8\xC6 |0 # <CJK>
+<U589D> \x8F\xB8\xC7 |0 # <CJK>
+<U58A0> \x8F\xB8\xC8 |0 # <CJK>
+<U58A1> \x8F\xB8\xC9 |0 # <CJK>
+<U58A2> \x8F\xB8\xCA |0 # <CJK>
+<U58A6> \x8F\xB8\xCB |0 # <CJK>
+<U58A9> \x8F\xB8\xCC |0 # <CJK>
+<U58B1> \x8F\xB8\xCD |0 # <CJK>
+<U58B2> \x8F\xB8\xCE |0 # <CJK>
+<U58C4> \x8F\xB8\xCF |0 # <CJK>
+<U58BC> \x8F\xB8\xD0 |0 # <CJK>
+<U58C2> \x8F\xB8\xD1 |0 # <CJK>
+<U58C8> \x8F\xB8\xD2 |0 # <CJK>
+<U58CD> \x8F\xB8\xD3 |0 # <CJK>
+<U58CE> \x8F\xB8\xD4 |0 # <CJK>
+<U58D0> \x8F\xB8\xD5 |0 # <CJK>
+<U58D2> \x8F\xB8\xD6 |0 # <CJK>
+<U58D4> \x8F\xB8\xD7 |0 # <CJK>
+<U58D6> \x8F\xB8\xD8 |0 # <CJK>
+<U58DA> \x8F\xB8\xD9 |0 # <CJK>
+<U58DD> \x8F\xB8\xDA |0 # <CJK>
+<U58E1> \x8F\xB8\xDB |0 # <CJK>
+<U58E2> \x8F\xB8\xDC |0 # <CJK>
+<U58E9> \x8F\xB8\xDD |0 # <CJK>
+<U58F3> \x8F\xB8\xDE |0 # <CJK>
+<U5905> \x8F\xB8\xDF |0 # <CJK>
+<U5906> \x8F\xB8\xE0 |0 # <CJK>
+<U590B> \x8F\xB8\xE1 |0 # <CJK>
+<U590C> \x8F\xB8\xE2 |0 # <CJK>
+<U5912> \x8F\xB8\xE3 |0 # <CJK>
+<U5913> \x8F\xB8\xE4 |0 # <CJK>
+<U5914> \x8F\xB8\xE5 |0 # <CJK>
+<U8641> \x8F\xB8\xE6 |0 # <CJK>
+<U591D> \x8F\xB8\xE7 |0 # <CJK>
+<U5921> \x8F\xB8\xE8 |0 # <CJK>
+<U5923> \x8F\xB8\xE9 |0 # <CJK>
+<U5924> \x8F\xB8\xEA |0 # <CJK>
+<U5928> \x8F\xB8\xEB |0 # <CJK>
+<U592F> \x8F\xB8\xEC |0 # <CJK>
+<U5930> \x8F\xB8\xED |0 # <CJK>
+<U5933> \x8F\xB8\xEE |0 # <CJK>
+<U5935> \x8F\xB8\xEF |0 # <CJK>
+<U5936> \x8F\xB8\xF0 |0 # <CJK>
+<U593F> \x8F\xB8\xF1 |0 # <CJK>
+<U5943> \x8F\xB8\xF2 |0 # <CJK>
+<U5946> \x8F\xB8\xF3 |0 # <CJK>
+<U5952> \x8F\xB8\xF4 |0 # <CJK>
+<U5953> \x8F\xB8\xF5 |0 # <CJK>
+<U5959> \x8F\xB8\xF6 |0 # <CJK>
+<U595B> \x8F\xB8\xF7 |0 # <CJK>
+<U595D> \x8F\xB8\xF8 |0 # <CJK>
+<U595E> \x8F\xB8\xF9 |0 # <CJK>
+<U595F> \x8F\xB8\xFA |0 # <CJK>
+<U5961> \x8F\xB8\xFB |0 # <CJK>
+<U5963> \x8F\xB8\xFC |0 # <CJK>
+<U596B> \x8F\xB8\xFD |0 # <CJK>
+<U596D> \x8F\xB8\xFE |0 # <CJK>
+<U596F> \x8F\xB9\xA1 |0 # <CJK>
+<U5972> \x8F\xB9\xA2 |0 # <CJK>
+<U5975> \x8F\xB9\xA3 |0 # <CJK>
+<U5976> \x8F\xB9\xA4 |0 # <CJK>
+<U5979> \x8F\xB9\xA5 |0 # <CJK>
+<U597B> \x8F\xB9\xA6 |0 # <CJK>
+<U597C> \x8F\xB9\xA7 |0 # <CJK>
+<U598B> \x8F\xB9\xA8 |0 # <CJK>
+<U598C> \x8F\xB9\xA9 |0 # <CJK>
+<U598E> \x8F\xB9\xAA |0 # <CJK>
+<U5992> \x8F\xB9\xAB |0 # <CJK>
+<U5995> \x8F\xB9\xAC |0 # <CJK>
+<U5997> \x8F\xB9\xAD |0 # <CJK>
+<U599F> \x8F\xB9\xAE |0 # <CJK>
+<U59A4> \x8F\xB9\xAF |0 # <CJK>
+<U59A7> \x8F\xB9\xB0 |0 # <CJK>
+<U59AD> \x8F\xB9\xB1 |0 # <CJK>
+<U59AE> \x8F\xB9\xB2 |0 # <CJK>
+<U59AF> \x8F\xB9\xB3 |0 # <CJK>
+<U59B0> \x8F\xB9\xB4 |0 # <CJK>
+<U59B3> \x8F\xB9\xB5 |0 # <CJK>
+<U59B7> \x8F\xB9\xB6 |0 # <CJK>
+<U59BA> \x8F\xB9\xB7 |0 # <CJK>
+<U59BC> \x8F\xB9\xB8 |0 # <CJK>
+<U59C1> \x8F\xB9\xB9 |0 # <CJK>
+<U59C3> \x8F\xB9\xBA |0 # <CJK>
+<U59C4> \x8F\xB9\xBB |0 # <CJK>
+<U59C8> \x8F\xB9\xBC |0 # <CJK>
+<U59CA> \x8F\xB9\xBD |0 # <CJK>
+<U59CD> \x8F\xB9\xBE |0 # <CJK>
+<U59D2> \x8F\xB9\xBF |0 # <CJK>
+<U59DD> \x8F\xB9\xC0 |0 # <CJK>
+<U59DE> \x8F\xB9\xC1 |0 # <CJK>
+<U59DF> \x8F\xB9\xC2 |0 # <CJK>
+<U59E3> \x8F\xB9\xC3 |0 # <CJK>
+<U59E4> \x8F\xB9\xC4 |0 # <CJK>
+<U59E7> \x8F\xB9\xC5 |0 # <CJK>
+<U59EE> \x8F\xB9\xC6 |0 # <CJK>
+<U59EF> \x8F\xB9\xC7 |0 # <CJK>
+<U59F1> \x8F\xB9\xC8 |0 # <CJK>
+<U59F2> \x8F\xB9\xC9 |0 # <CJK>
+<U59F4> \x8F\xB9\xCA |0 # <CJK>
+<U59F7> \x8F\xB9\xCB |0 # <CJK>
+<U5A00> \x8F\xB9\xCC |0 # <CJK>
+<U5A04> \x8F\xB9\xCD |0 # <CJK>
+<U5A0C> \x8F\xB9\xCE |0 # <CJK>
+<U5A0D> \x8F\xB9\xCF |0 # <CJK>
+<U5A0E> \x8F\xB9\xD0 |0 # <CJK>
+<U5A12> \x8F\xB9\xD1 |0 # <CJK>
+<U5A13> \x8F\xB9\xD2 |0 # <CJK>
+<U5A1E> \x8F\xB9\xD3 |0 # <CJK>
+<U5A23> \x8F\xB9\xD4 |0 # <CJK>
+<U5A24> \x8F\xB9\xD5 |0 # <CJK>
+<U5A27> \x8F\xB9\xD6 |0 # <CJK>
+<U5A28> \x8F\xB9\xD7 |0 # <CJK>
+<U5A2A> \x8F\xB9\xD8 |0 # <CJK>
+<U5A2D> \x8F\xB9\xD9 |0 # <CJK>
+<U5A30> \x8F\xB9\xDA |0 # <CJK>
+<U5A44> \x8F\xB9\xDB |0 # <CJK>
+<U5A45> \x8F\xB9\xDC |0 # <CJK>
+<U5A47> \x8F\xB9\xDD |0 # <CJK>
+<U5A48> \x8F\xB9\xDE |0 # <CJK>
+<U5A4C> \x8F\xB9\xDF |0 # <CJK>
+<U5A50> \x8F\xB9\xE0 |0 # <CJK>
+<U5A55> \x8F\xB9\xE1 |0 # <CJK>
+<U5A5E> \x8F\xB9\xE2 |0 # <CJK>
+<U5A63> \x8F\xB9\xE3 |0 # <CJK>
+<U5A65> \x8F\xB9\xE4 |0 # <CJK>
+<U5A67> \x8F\xB9\xE5 |0 # <CJK>
+<U5A6D> \x8F\xB9\xE6 |0 # <CJK>
+<U5A77> \x8F\xB9\xE7 |0 # <CJK>
+<U5A7A> \x8F\xB9\xE8 |0 # <CJK>
+<U5A7B> \x8F\xB9\xE9 |0 # <CJK>
+<U5A7E> \x8F\xB9\xEA |0 # <CJK>
+<U5A8B> \x8F\xB9\xEB |0 # <CJK>
+<U5A90> \x8F\xB9\xEC |0 # <CJK>
+<U5A93> \x8F\xB9\xED |0 # <CJK>
+<U5A96> \x8F\xB9\xEE |0 # <CJK>
+<U5A99> \x8F\xB9\xEF |0 # <CJK>
+<U5A9C> \x8F\xB9\xF0 |0 # <CJK>
+<U5A9E> \x8F\xB9\xF1 |0 # <CJK>
+<U5A9F> \x8F\xB9\xF2 |0 # <CJK>
+<U5AA0> \x8F\xB9\xF3 |0 # <CJK>
+<U5AA2> \x8F\xB9\xF4 |0 # <CJK>
+<U5AA7> \x8F\xB9\xF5 |0 # <CJK>
+<U5AAC> \x8F\xB9\xF6 |0 # <CJK>
+<U5AB1> \x8F\xB9\xF7 |0 # <CJK>
+<U5AB2> \x8F\xB9\xF8 |0 # <CJK>
+<U5AB3> \x8F\xB9\xF9 |0 # <CJK>
+<U5AB5> \x8F\xB9\xFA |0 # <CJK>
+<U5AB8> \x8F\xB9\xFB |0 # <CJK>
+<U5ABA> \x8F\xB9\xFC |0 # <CJK>
+<U5ABB> \x8F\xB9\xFD |0 # <CJK>
+<U5ABF> \x8F\xB9\xFE |0 # <CJK>
+<U5AC4> \x8F\xBA\xA1 |0 # <CJK>
+<U5AC6> \x8F\xBA\xA2 |0 # <CJK>
+<U5AC8> \x8F\xBA\xA3 |0 # <CJK>
+<U5ACF> \x8F\xBA\xA4 |0 # <CJK>
+<U5ADA> \x8F\xBA\xA5 |0 # <CJK>
+<U5ADC> \x8F\xBA\xA6 |0 # <CJK>
+<U5AE0> \x8F\xBA\xA7 |0 # <CJK>
+<U5AE5> \x8F\xBA\xA8 |0 # <CJK>
+<U5AEA> \x8F\xBA\xA9 |0 # <CJK>
+<U5AEE> \x8F\xBA\xAA |0 # <CJK>
+<U5AF5> \x8F\xBA\xAB |0 # <CJK>
+<U5AF6> \x8F\xBA\xAC |0 # <CJK>
+<U5AFD> \x8F\xBA\xAD |0 # <CJK>
+<U5B00> \x8F\xBA\xAE |0 # <CJK>
+<U5B01> \x8F\xBA\xAF |0 # <CJK>
+<U5B08> \x8F\xBA\xB0 |0 # <CJK>
+<U5B17> \x8F\xBA\xB1 |0 # <CJK>
+<U5B34> \x8F\xBA\xB2 |0 # <CJK>
+<U5B19> \x8F\xBA\xB3 |0 # <CJK>
+<U5B1B> \x8F\xBA\xB4 |0 # <CJK>
+<U5B1D> \x8F\xBA\xB5 |0 # <CJK>
+<U5B21> \x8F\xBA\xB6 |0 # <CJK>
+<U5B25> \x8F\xBA\xB7 |0 # <CJK>
+<U5B2D> \x8F\xBA\xB8 |0 # <CJK>
+<U5B38> \x8F\xBA\xB9 |0 # <CJK>
+<U5B41> \x8F\xBA\xBA |0 # <CJK>
+<U5B4B> \x8F\xBA\xBB |0 # <CJK>
+<U5B4C> \x8F\xBA\xBC |0 # <CJK>
+<U5B52> \x8F\xBA\xBD |0 # <CJK>
+<U5B56> \x8F\xBA\xBE |0 # <CJK>
+<U5B5E> \x8F\xBA\xBF |0 # <CJK>
+<U5B68> \x8F\xBA\xC0 |0 # <CJK>
+<U5B6E> \x8F\xBA\xC1 |0 # <CJK>
+<U5B6F> \x8F\xBA\xC2 |0 # <CJK>
+<U5B7C> \x8F\xBA\xC3 |0 # <CJK>
+<U5B7D> \x8F\xBA\xC4 |0 # <CJK>
+<U5B7E> \x8F\xBA\xC5 |0 # <CJK>
+<U5B7F> \x8F\xBA\xC6 |0 # <CJK>
+<U5B81> \x8F\xBA\xC7 |0 # <CJK>
+<U5B84> \x8F\xBA\xC8 |0 # <CJK>
+<U5B86> \x8F\xBA\xC9 |0 # <CJK>
+<U5B8A> \x8F\xBA\xCA |0 # <CJK>
+<U5B8E> \x8F\xBA\xCB |0 # <CJK>
+<U5B90> \x8F\xBA\xCC |0 # <CJK>
+<U5B91> \x8F\xBA\xCD |0 # <CJK>
+<U5B93> \x8F\xBA\xCE |0 # <CJK>
+<U5B94> \x8F\xBA\xCF |0 # <CJK>
+<U5B96> \x8F\xBA\xD0 |0 # <CJK>
+<U5BA8> \x8F\xBA\xD1 |0 # <CJK>
+<U5BA9> \x8F\xBA\xD2 |0 # <CJK>
+<U5BAC> \x8F\xBA\xD3 |0 # <CJK>
+<U5BAD> \x8F\xBA\xD4 |0 # <CJK>
+<U5BAF> \x8F\xBA\xD5 |0 # <CJK>
+<U5BB1> \x8F\xBA\xD6 |0 # <CJK>
+<U5BB2> \x8F\xBA\xD7 |0 # <CJK>
+<U5BB7> \x8F\xBA\xD8 |0 # <CJK>
+<U5BBA> \x8F\xBA\xD9 |0 # <CJK>
+<U5BBC> \x8F\xBA\xDA |0 # <CJK>
+<U5BC0> \x8F\xBA\xDB |0 # <CJK>
+<U5BC1> \x8F\xBA\xDC |0 # <CJK>
+<U5BCD> \x8F\xBA\xDD |0 # <CJK>
+<U5BCF> \x8F\xBA\xDE |0 # <CJK>
+<U5BD6> \x8F\xBA\xDF |0 # <CJK>
+<U5BD7> \x8F\xBA\xE0 |0 # <CJK>
+<U5BD8> \x8F\xBA\xE1 |0 # <CJK>
+<U5BD9> \x8F\xBA\xE2 |0 # <CJK>
+<U5BDA> \x8F\xBA\xE3 |0 # <CJK>
+<U5BE0> \x8F\xBA\xE4 |0 # <CJK>
+<U5BEF> \x8F\xBA\xE5 |0 # <CJK>
+<U5BF1> \x8F\xBA\xE6 |0 # <CJK>
+<U5BF4> \x8F\xBA\xE7 |0 # <CJK>
+<U5BFD> \x8F\xBA\xE8 |0 # <CJK>
+<U5C0C> \x8F\xBA\xE9 |0 # <CJK>
+<U5C17> \x8F\xBA\xEA |0 # <CJK>
+<U5C1E> \x8F\xBA\xEB |0 # <CJK>
+<U5C1F> \x8F\xBA\xEC |0 # <CJK>
+<U5C23> \x8F\xBA\xED |0 # <CJK>
+<U5C26> \x8F\xBA\xEE |0 # <CJK>
+<U5C29> \x8F\xBA\xEF |0 # <CJK>
+<U5C2B> \x8F\xBA\xF0 |0 # <CJK>
+<U5C2C> \x8F\xBA\xF1 |0 # <CJK>
+<U5C2E> \x8F\xBA\xF2 |0 # <CJK>
+<U5C30> \x8F\xBA\xF3 |0 # <CJK>
+<U5C32> \x8F\xBA\xF4 |0 # <CJK>
+<U5C35> \x8F\xBA\xF5 |0 # <CJK>
+<U5C36> \x8F\xBA\xF6 |0 # <CJK>
+<U5C59> \x8F\xBA\xF7 |0 # <CJK>
+<U5C5A> \x8F\xBA\xF8 |0 # <CJK>
+<U5C5C> \x8F\xBA\xF9 |0 # <CJK>
+<U5C62> \x8F\xBA\xFA |0 # <CJK>
+<U5C63> \x8F\xBA\xFB |0 # <CJK>
+<U5C67> \x8F\xBA\xFC |0 # <CJK>
+<U5C68> \x8F\xBA\xFD |0 # <CJK>
+<U5C69> \x8F\xBA\xFE |0 # <CJK>
+<U5C6D> \x8F\xBB\xA1 |0 # <CJK>
+<U5C70> \x8F\xBB\xA2 |0 # <CJK>
+<U5C74> \x8F\xBB\xA3 |0 # <CJK>
+<U5C75> \x8F\xBB\xA4 |0 # <CJK>
+<U5C7A> \x8F\xBB\xA5 |0 # <CJK>
+<U5C7B> \x8F\xBB\xA6 |0 # <CJK>
+<U5C7C> \x8F\xBB\xA7 |0 # <CJK>
+<U5C7D> \x8F\xBB\xA8 |0 # <CJK>
+<U5C87> \x8F\xBB\xA9 |0 # <CJK>
+<U5C88> \x8F\xBB\xAA |0 # <CJK>
+<U5C8A> \x8F\xBB\xAB |0 # <CJK>
+<U5C8F> \x8F\xBB\xAC |0 # <CJK>
+<U5C92> \x8F\xBB\xAD |0 # <CJK>
+<U5C9D> \x8F\xBB\xAE |0 # <CJK>
+<U5C9F> \x8F\xBB\xAF |0 # <CJK>
+<U5CA0> \x8F\xBB\xB0 |0 # <CJK>
+<U5CA2> \x8F\xBB\xB1 |0 # <CJK>
+<U5CA3> \x8F\xBB\xB2 |0 # <CJK>
+<U5CA6> \x8F\xBB\xB3 |0 # <CJK>
+<U5CAA> \x8F\xBB\xB4 |0 # <CJK>
+<U5CB2> \x8F\xBB\xB5 |0 # <CJK>
+<U5CB4> \x8F\xBB\xB6 |0 # <CJK>
+<U5CB5> \x8F\xBB\xB7 |0 # <CJK>
+<U5CBA> \x8F\xBB\xB8 |0 # <CJK>
+<U5CC9> \x8F\xBB\xB9 |0 # <CJK>
+<U5CCB> \x8F\xBB\xBA |0 # <CJK>
+<U5CD2> \x8F\xBB\xBB |0 # <CJK>
+<U5CDD> \x8F\xBB\xBC |0 # <CJK>
+<U5CD7> \x8F\xBB\xBD |0 # <CJK>
+<U5CEE> \x8F\xBB\xBE |0 # <CJK>
+<U5CF1> \x8F\xBB\xBF |0 # <CJK>
+<U5CF2> \x8F\xBB\xC0 |0 # <CJK>
+<U5CF4> \x8F\xBB\xC1 |0 # <CJK>
+<U5D01> \x8F\xBB\xC2 |0 # <CJK>
+<U5D06> \x8F\xBB\xC3 |0 # <CJK>
+<U5D0D> \x8F\xBB\xC4 |0 # <CJK>
+<U5D12> \x8F\xBB\xC5 |0 # <CJK>
+<U5D2B> \x8F\xBB\xC6 |0 # <CJK>
+<U5D23> \x8F\xBB\xC7 |0 # <CJK>
+<U5D24> \x8F\xBB\xC8 |0 # <CJK>
+<U5D26> \x8F\xBB\xC9 |0 # <CJK>
+<U5D27> \x8F\xBB\xCA |0 # <CJK>
+<U5D31> \x8F\xBB\xCB |0 # <CJK>
+<U5D34> \x8F\xBB\xCC |0 # <CJK>
+<U5D39> \x8F\xBB\xCD |0 # <CJK>
+<U5D3D> \x8F\xBB\xCE |0 # <CJK>
+<U5D3F> \x8F\xBB\xCF |0 # <CJK>
+<U5D42> \x8F\xBB\xD0 |0 # <CJK>
+<U5D43> \x8F\xBB\xD1 |0 # <CJK>
+<U5D46> \x8F\xBB\xD2 |0 # <CJK>
+<U5D48> \x8F\xBB\xD3 |0 # <CJK>
+<U5D55> \x8F\xBB\xD4 |0 # <CJK>
+<U5D51> \x8F\xBB\xD5 |0 # <CJK>
+<U5D59> \x8F\xBB\xD6 |0 # <CJK>
+<U5D4A> \x8F\xBB\xD7 |0 # <CJK>
+<U5D5F> \x8F\xBB\xD8 |0 # <CJK>
+<U5D60> \x8F\xBB\xD9 |0 # <CJK>
+<U5D61> \x8F\xBB\xDA |0 # <CJK>
+<U5D62> \x8F\xBB\xDB |0 # <CJK>
+<U5D64> \x8F\xBB\xDC |0 # <CJK>
+<U5D6A> \x8F\xBB\xDD |0 # <CJK>
+<U5D6D> \x8F\xBB\xDE |0 # <CJK>
+<U5D70> \x8F\xBB\xDF |0 # <CJK>
+<U5D79> \x8F\xBB\xE0 |0 # <CJK>
+<U5D7A> \x8F\xBB\xE1 |0 # <CJK>
+<U5D7E> \x8F\xBB\xE2 |0 # <CJK>
+<U5D7F> \x8F\xBB\xE3 |0 # <CJK>
+<U5D81> \x8F\xBB\xE4 |0 # <CJK>
+<U5D83> \x8F\xBB\xE5 |0 # <CJK>
+<U5D88> \x8F\xBB\xE6 |0 # <CJK>
+<U5D8A> \x8F\xBB\xE7 |0 # <CJK>
+<U5D92> \x8F\xBB\xE8 |0 # <CJK>
+<U5D93> \x8F\xBB\xE9 |0 # <CJK>
+<U5D94> \x8F\xBB\xEA |0 # <CJK>
+<U5D95> \x8F\xBB\xEB |0 # <CJK>
+<U5D99> \x8F\xBB\xEC |0 # <CJK>
+<U5D9B> \x8F\xBB\xED |0 # <CJK>
+<U5D9F> \x8F\xBB\xEE |0 # <CJK>
+<U5DA0> \x8F\xBB\xEF |0 # <CJK>
+<U5DA7> \x8F\xBB\xF0 |0 # <CJK>
+<U5DAB> \x8F\xBB\xF1 |0 # <CJK>
+<U5DB0> \x8F\xBB\xF2 |0 # <CJK>
+<U5DB4> \x8F\xBB\xF3 |0 # <CJK>
+<U5DB8> \x8F\xBB\xF4 |0 # <CJK>
+<U5DB9> \x8F\xBB\xF5 |0 # <CJK>
+<U5DC3> \x8F\xBB\xF6 |0 # <CJK>
+<U5DC7> \x8F\xBB\xF7 |0 # <CJK>
+<U5DCB> \x8F\xBB\xF8 |0 # <CJK>
+<U5DD0> \x8F\xBB\xF9 |0 # <CJK>
+<U5DCE> \x8F\xBB\xFA |0 # <CJK>
+<U5DD8> \x8F\xBB\xFB |0 # <CJK>
+<U5DD9> \x8F\xBB\xFC |0 # <CJK>
+<U5DE0> \x8F\xBB\xFD |0 # <CJK>
+<U5DE4> \x8F\xBB\xFE |0 # <CJK>
+<U5DE9> \x8F\xBC\xA1 |0 # <CJK>
+<U5DF8> \x8F\xBC\xA2 |0 # <CJK>
+<U5DF9> \x8F\xBC\xA3 |0 # <CJK>
+<U5E00> \x8F\xBC\xA4 |0 # <CJK>
+<U5E07> \x8F\xBC\xA5 |0 # <CJK>
+<U5E0D> \x8F\xBC\xA6 |0 # <CJK>
+<U5E12> \x8F\xBC\xA7 |0 # <CJK>
+<U5E14> \x8F\xBC\xA8 |0 # <CJK>
+<U5E15> \x8F\xBC\xA9 |0 # <CJK>
+<U5E18> \x8F\xBC\xAA |0 # <CJK>
+<U5E1F> \x8F\xBC\xAB |0 # <CJK>
+<U5E20> \x8F\xBC\xAC |0 # <CJK>
+<U5E2E> \x8F\xBC\xAD |0 # <CJK>
+<U5E28> \x8F\xBC\xAE |0 # <CJK>
+<U5E32> \x8F\xBC\xAF |0 # <CJK>
+<U5E35> \x8F\xBC\xB0 |0 # <CJK>
+<U5E3E> \x8F\xBC\xB1 |0 # <CJK>
+<U5E4B> \x8F\xBC\xB2 |0 # <CJK>
+<U5E50> \x8F\xBC\xB3 |0 # <CJK>
+<U5E49> \x8F\xBC\xB4 |0 # <CJK>
+<U5E51> \x8F\xBC\xB5 |0 # <CJK>
+<U5E56> \x8F\xBC\xB6 |0 # <CJK>
+<U5E58> \x8F\xBC\xB7 |0 # <CJK>
+<U5E5B> \x8F\xBC\xB8 |0 # <CJK>
+<U5E5C> \x8F\xBC\xB9 |0 # <CJK>
+<U5E5E> \x8F\xBC\xBA |0 # <CJK>
+<U5E68> \x8F\xBC\xBB |0 # <CJK>
+<U5E6A> \x8F\xBC\xBC |0 # <CJK>
+<U5E6B> \x8F\xBC\xBD |0 # <CJK>
+<U5E6C> \x8F\xBC\xBE |0 # <CJK>
+<U5E6D> \x8F\xBC\xBF |0 # <CJK>
+<U5E6E> \x8F\xBC\xC0 |0 # <CJK>
+<U5E70> \x8F\xBC\xC1 |0 # <CJK>
+<U5E80> \x8F\xBC\xC2 |0 # <CJK>
+<U5E8B> \x8F\xBC\xC3 |0 # <CJK>
+<U5E8E> \x8F\xBC\xC4 |0 # <CJK>
+<U5EA2> \x8F\xBC\xC5 |0 # <CJK>
+<U5EA4> \x8F\xBC\xC6 |0 # <CJK>
+<U5EA5> \x8F\xBC\xC7 |0 # <CJK>
+<U5EA8> \x8F\xBC\xC8 |0 # <CJK>
+<U5EAA> \x8F\xBC\xC9 |0 # <CJK>
+<U5EAC> \x8F\xBC\xCA |0 # <CJK>
+<U5EB1> \x8F\xBC\xCB |0 # <CJK>
+<U5EB3> \x8F\xBC\xCC |0 # <CJK>
+<U5EBD> \x8F\xBC\xCD |0 # <CJK>
+<U5EBE> \x8F\xBC\xCE |0 # <CJK>
+<U5EBF> \x8F\xBC\xCF |0 # <CJK>
+<U5EC6> \x8F\xBC\xD0 |0 # <CJK>
+<U5ECC> \x8F\xBC\xD1 |0 # <CJK>
+<U5ECB> \x8F\xBC\xD2 |0 # <CJK>
+<U5ECE> \x8F\xBC\xD3 |0 # <CJK>
+<U5ED1> \x8F\xBC\xD4 |0 # <CJK>
+<U5ED2> \x8F\xBC\xD5 |0 # <CJK>
+<U5ED4> \x8F\xBC\xD6 |0 # <CJK>
+<U5ED5> \x8F\xBC\xD7 |0 # <CJK>
+<U5EDC> \x8F\xBC\xD8 |0 # <CJK>
+<U5EDE> \x8F\xBC\xD9 |0 # <CJK>
+<U5EE5> \x8F\xBC\xDA |0 # <CJK>
+<U5EEB> \x8F\xBC\xDB |0 # <CJK>
+<U5F02> \x8F\xBC\xDC |0 # <CJK>
+<U5F06> \x8F\xBC\xDD |0 # <CJK>
+<U5F07> \x8F\xBC\xDE |0 # <CJK>
+<U5F08> \x8F\xBC\xDF |0 # <CJK>
+<U5F0E> \x8F\xBC\xE0 |0 # <CJK>
+<U5F19> \x8F\xBC\xE1 |0 # <CJK>
+<U5F1C> \x8F\xBC\xE2 |0 # <CJK>
+<U5F1D> \x8F\xBC\xE3 |0 # <CJK>
+<U5F21> \x8F\xBC\xE4 |0 # <CJK>
+<U5F22> \x8F\xBC\xE5 |0 # <CJK>
+<U5F23> \x8F\xBC\xE6 |0 # <CJK>
+<U5F24> \x8F\xBC\xE7 |0 # <CJK>
+<U5F28> \x8F\xBC\xE8 |0 # <CJK>
+<U5F2B> \x8F\xBC\xE9 |0 # <CJK>
+<U5F2C> \x8F\xBC\xEA |0 # <CJK>
+<U5F2E> \x8F\xBC\xEB |0 # <CJK>
+<U5F30> \x8F\xBC\xEC |0 # <CJK>
+<U5F34> \x8F\xBC\xED |0 # <CJK>
+<U5F36> \x8F\xBC\xEE |0 # <CJK>
+<U5F3B> \x8F\xBC\xEF |0 # <CJK>
+<U5F3D> \x8F\xBC\xF0 |0 # <CJK>
+<U5F3F> \x8F\xBC\xF1 |0 # <CJK>
+<U5F40> \x8F\xBC\xF2 |0 # <CJK>
+<U5F44> \x8F\xBC\xF3 |0 # <CJK>
+<U5F45> \x8F\xBC\xF4 |0 # <CJK>
+<U5F47> \x8F\xBC\xF5 |0 # <CJK>
+<U5F4D> \x8F\xBC\xF6 |0 # <CJK>
+<U5F50> \x8F\xBC\xF7 |0 # <CJK>
+<U5F54> \x8F\xBC\xF8 |0 # <CJK>
+<U5F58> \x8F\xBC\xF9 |0 # <CJK>
+<U5F5B> \x8F\xBC\xFA |0 # <CJK>
+<U5F60> \x8F\xBC\xFB |0 # <CJK>
+<U5F63> \x8F\xBC\xFC |0 # <CJK>
+<U5F64> \x8F\xBC\xFD |0 # <CJK>
+<U5F67> \x8F\xBC\xFE |0 # <CJK>
+<U5F6F> \x8F\xBD\xA1 |0 # <CJK>
+<U5F72> \x8F\xBD\xA2 |0 # <CJK>
+<U5F74> \x8F\xBD\xA3 |0 # <CJK>
+<U5F75> \x8F\xBD\xA4 |0 # <CJK>
+<U5F78> \x8F\xBD\xA5 |0 # <CJK>
+<U5F7A> \x8F\xBD\xA6 |0 # <CJK>
+<U5F7D> \x8F\xBD\xA7 |0 # <CJK>
+<U5F7E> \x8F\xBD\xA8 |0 # <CJK>
+<U5F89> \x8F\xBD\xA9 |0 # <CJK>
+<U5F8D> \x8F\xBD\xAA |0 # <CJK>
+<U5F8F> \x8F\xBD\xAB |0 # <CJK>
+<U5F96> \x8F\xBD\xAC |0 # <CJK>
+<U5F9C> \x8F\xBD\xAD |0 # <CJK>
+<U5F9D> \x8F\xBD\xAE |0 # <CJK>
+<U5FA2> \x8F\xBD\xAF |0 # <CJK>
+<U5FA7> \x8F\xBD\xB0 |0 # <CJK>
+<U5FAB> \x8F\xBD\xB1 |0 # <CJK>
+<U5FA4> \x8F\xBD\xB2 |0 # <CJK>
+<U5FAC> \x8F\xBD\xB3 |0 # <CJK>
+<U5FAF> \x8F\xBD\xB4 |0 # <CJK>
+<U5FB0> \x8F\xBD\xB5 |0 # <CJK>
+<U5FB1> \x8F\xBD\xB6 |0 # <CJK>
+<U5FB8> \x8F\xBD\xB7 |0 # <CJK>
+<U5FC4> \x8F\xBD\xB8 |0 # <CJK>
+<U5FC7> \x8F\xBD\xB9 |0 # <CJK>
+<U5FC8> \x8F\xBD\xBA |0 # <CJK>
+<U5FC9> \x8F\xBD\xBB |0 # <CJK>
+<U5FCB> \x8F\xBD\xBC |0 # <CJK>
+<U5FD0> \x8F\xBD\xBD |0 # <CJK>
+<U5FD1> \x8F\xBD\xBE |0 # <CJK>
+<U5FD2> \x8F\xBD\xBF |0 # <CJK>
+<U5FD3> \x8F\xBD\xC0 |0 # <CJK>
+<U5FD4> \x8F\xBD\xC1 |0 # <CJK>
+<U5FDE> \x8F\xBD\xC2 |0 # <CJK>
+<U5FE1> \x8F\xBD\xC3 |0 # <CJK>
+<U5FE2> \x8F\xBD\xC4 |0 # <CJK>
+<U5FE8> \x8F\xBD\xC5 |0 # <CJK>
+<U5FE9> \x8F\xBD\xC6 |0 # <CJK>
+<U5FEA> \x8F\xBD\xC7 |0 # <CJK>
+<U5FEC> \x8F\xBD\xC8 |0 # <CJK>
+<U5FED> \x8F\xBD\xC9 |0 # <CJK>
+<U5FEE> \x8F\xBD\xCA |0 # <CJK>
+<U5FEF> \x8F\xBD\xCB |0 # <CJK>
+<U5FF2> \x8F\xBD\xCC |0 # <CJK>
+<U5FF3> \x8F\xBD\xCD |0 # <CJK>
+<U5FF6> \x8F\xBD\xCE |0 # <CJK>
+<U5FFA> \x8F\xBD\xCF |0 # <CJK>
+<U5FFC> \x8F\xBD\xD0 |0 # <CJK>
+<U6007> \x8F\xBD\xD1 |0 # <CJK>
+<U600A> \x8F\xBD\xD2 |0 # <CJK>
+<U600D> \x8F\xBD\xD3 |0 # <CJK>
+<U6013> \x8F\xBD\xD4 |0 # <CJK>
+<U6014> \x8F\xBD\xD5 |0 # <CJK>
+<U6017> \x8F\xBD\xD6 |0 # <CJK>
+<U6018> \x8F\xBD\xD7 |0 # <CJK>
+<U601A> \x8F\xBD\xD8 |0 # <CJK>
+<U601F> \x8F\xBD\xD9 |0 # <CJK>
+<U6024> \x8F\xBD\xDA |0 # <CJK>
+<U602D> \x8F\xBD\xDB |0 # <CJK>
+<U6033> \x8F\xBD\xDC |0 # <CJK>
+<U6035> \x8F\xBD\xDD |0 # <CJK>
+<U6040> \x8F\xBD\xDE |0 # <CJK>
+<U6047> \x8F\xBD\xDF |0 # <CJK>
+<U6048> \x8F\xBD\xE0 |0 # <CJK>
+<U6049> \x8F\xBD\xE1 |0 # <CJK>
+<U604C> \x8F\xBD\xE2 |0 # <CJK>
+<U6051> \x8F\xBD\xE3 |0 # <CJK>
+<U6054> \x8F\xBD\xE4 |0 # <CJK>
+<U6056> \x8F\xBD\xE5 |0 # <CJK>
+<U6057> \x8F\xBD\xE6 |0 # <CJK>
+<U605D> \x8F\xBD\xE7 |0 # <CJK>
+<U6061> \x8F\xBD\xE8 |0 # <CJK>
+<U6067> \x8F\xBD\xE9 |0 # <CJK>
+<U6071> \x8F\xBD\xEA |0 # <CJK>
+<U607E> \x8F\xBD\xEB |0 # <CJK>
+<U607F> \x8F\xBD\xEC |0 # <CJK>
+<U6082> \x8F\xBD\xED |0 # <CJK>
+<U6086> \x8F\xBD\xEE |0 # <CJK>
+<U6088> \x8F\xBD\xEF |0 # <CJK>
+<U608A> \x8F\xBD\xF0 |0 # <CJK>
+<U608E> \x8F\xBD\xF1 |0 # <CJK>
+<U6091> \x8F\xBD\xF2 |0 # <CJK>
+<U6093> \x8F\xBD\xF3 |0 # <CJK>
+<U6095> \x8F\xBD\xF4 |0 # <CJK>
+<U6098> \x8F\xBD\xF5 |0 # <CJK>
+<U609D> \x8F\xBD\xF6 |0 # <CJK>
+<U609E> \x8F\xBD\xF7 |0 # <CJK>
+<U60A2> \x8F\xBD\xF8 |0 # <CJK>
+<U60A4> \x8F\xBD\xF9 |0 # <CJK>
+<U60A5> \x8F\xBD\xFA |0 # <CJK>
+<U60A8> \x8F\xBD\xFB |0 # <CJK>
+<U60B0> \x8F\xBD\xFC |0 # <CJK>
+<U60B1> \x8F\xBD\xFD |0 # <CJK>
+<U60B7> \x8F\xBD\xFE |0 # <CJK>
+<U60BB> \x8F\xBE\xA1 |0 # <CJK>
+<U60BE> \x8F\xBE\xA2 |0 # <CJK>
+<U60C2> \x8F\xBE\xA3 |0 # <CJK>
+<U60C4> \x8F\xBE\xA4 |0 # <CJK>
+<U60C8> \x8F\xBE\xA5 |0 # <CJK>
+<U60C9> \x8F\xBE\xA6 |0 # <CJK>
+<U60CA> \x8F\xBE\xA7 |0 # <CJK>
+<U60CB> \x8F\xBE\xA8 |0 # <CJK>
+<U60CE> \x8F\xBE\xA9 |0 # <CJK>
+<U60CF> \x8F\xBE\xAA |0 # <CJK>
+<U60D4> \x8F\xBE\xAB |0 # <CJK>
+<U60D5> \x8F\xBE\xAC |0 # <CJK>
+<U60D9> \x8F\xBE\xAD |0 # <CJK>
+<U60DB> \x8F\xBE\xAE |0 # <CJK>
+<U60DD> \x8F\xBE\xAF |0 # <CJK>
+<U60DE> \x8F\xBE\xB0 |0 # <CJK>
+<U60E2> \x8F\xBE\xB1 |0 # <CJK>
+<U60E5> \x8F\xBE\xB2 |0 # <CJK>
+<U60F2> \x8F\xBE\xB3 |0 # <CJK>
+<U60F5> \x8F\xBE\xB4 |0 # <CJK>
+<U60F8> \x8F\xBE\xB5 |0 # <CJK>
+<U60FC> \x8F\xBE\xB6 |0 # <CJK>
+<U60FD> \x8F\xBE\xB7 |0 # <CJK>
+<U6102> \x8F\xBE\xB8 |0 # <CJK>
+<U6107> \x8F\xBE\xB9 |0 # <CJK>
+<U610A> \x8F\xBE\xBA |0 # <CJK>
+<U610C> \x8F\xBE\xBB |0 # <CJK>
+<U6110> \x8F\xBE\xBC |0 # <CJK>
+<U6111> \x8F\xBE\xBD |0 # <CJK>
+<U6112> \x8F\xBE\xBE |0 # <CJK>
+<U6113> \x8F\xBE\xBF |0 # <CJK>
+<U6114> \x8F\xBE\xC0 |0 # <CJK>
+<U6116> \x8F\xBE\xC1 |0 # <CJK>
+<U6117> \x8F\xBE\xC2 |0 # <CJK>
+<U6119> \x8F\xBE\xC3 |0 # <CJK>
+<U611C> \x8F\xBE\xC4 |0 # <CJK>
+<U611E> \x8F\xBE\xC5 |0 # <CJK>
+<U6122> \x8F\xBE\xC6 |0 # <CJK>
+<U612A> \x8F\xBE\xC7 |0 # <CJK>
+<U612B> \x8F\xBE\xC8 |0 # <CJK>
+<U6130> \x8F\xBE\xC9 |0 # <CJK>
+<U6131> \x8F\xBE\xCA |0 # <CJK>
+<U6135> \x8F\xBE\xCB |0 # <CJK>
+<U6136> \x8F\xBE\xCC |0 # <CJK>
+<U6137> \x8F\xBE\xCD |0 # <CJK>
+<U6139> \x8F\xBE\xCE |0 # <CJK>
+<U6141> \x8F\xBE\xCF |0 # <CJK>
+<U6145> \x8F\xBE\xD0 |0 # <CJK>
+<U6146> \x8F\xBE\xD1 |0 # <CJK>
+<U6149> \x8F\xBE\xD2 |0 # <CJK>
+<U615E> \x8F\xBE\xD3 |0 # <CJK>
+<U6160> \x8F\xBE\xD4 |0 # <CJK>
+<U616C> \x8F\xBE\xD5 |0 # <CJK>
+<U6172> \x8F\xBE\xD6 |0 # <CJK>
+<U6178> \x8F\xBE\xD7 |0 # <CJK>
+<U617B> \x8F\xBE\xD8 |0 # <CJK>
+<U617C> \x8F\xBE\xD9 |0 # <CJK>
+<U617F> \x8F\xBE\xDA |0 # <CJK>
+<U6180> \x8F\xBE\xDB |0 # <CJK>
+<U6181> \x8F\xBE\xDC |0 # <CJK>
+<U6183> \x8F\xBE\xDD |0 # <CJK>
+<U6184> \x8F\xBE\xDE |0 # <CJK>
+<U618B> \x8F\xBE\xDF |0 # <CJK>
+<U618D> \x8F\xBE\xE0 |0 # <CJK>
+<U6192> \x8F\xBE\xE1 |0 # <CJK>
+<U6193> \x8F\xBE\xE2 |0 # <CJK>
+<U6197> \x8F\xBE\xE3 |0 # <CJK>
+<U6198> \x8F\xBE\xE4 |0 # <CJK>
+<U619C> \x8F\xBE\xE5 |0 # <CJK>
+<U619D> \x8F\xBE\xE6 |0 # <CJK>
+<U619F> \x8F\xBE\xE7 |0 # <CJK>
+<U61A0> \x8F\xBE\xE8 |0 # <CJK>
+<U61A5> \x8F\xBE\xE9 |0 # <CJK>
+<U61A8> \x8F\xBE\xEA |0 # <CJK>
+<U61AA> \x8F\xBE\xEB |0 # <CJK>
+<U61AD> \x8F\xBE\xEC |0 # <CJK>
+<U61B8> \x8F\xBE\xED |0 # <CJK>
+<U61B9> \x8F\xBE\xEE |0 # <CJK>
+<U61BC> \x8F\xBE\xEF |0 # <CJK>
+<U61C0> \x8F\xBE\xF0 |0 # <CJK>
+<U61C1> \x8F\xBE\xF1 |0 # <CJK>
+<U61C2> \x8F\xBE\xF2 |0 # <CJK>
+<U61CE> \x8F\xBE\xF3 |0 # <CJK>
+<U61CF> \x8F\xBE\xF4 |0 # <CJK>
+<U61D5> \x8F\xBE\xF5 |0 # <CJK>
+<U61DC> \x8F\xBE\xF6 |0 # <CJK>
+<U61DD> \x8F\xBE\xF7 |0 # <CJK>
+<U61DE> \x8F\xBE\xF8 |0 # <CJK>
+<U61DF> \x8F\xBE\xF9 |0 # <CJK>
+<U61E1> \x8F\xBE\xFA |0 # <CJK>
+<U61E2> \x8F\xBE\xFB |0 # <CJK>
+<U61E7> \x8F\xBE\xFC |0 # <CJK>
+<U61E9> \x8F\xBE\xFD |0 # <CJK>
+<U61E5> \x8F\xBE\xFE |0 # <CJK>
+<U61EC> \x8F\xBF\xA1 |0 # <CJK>
+<U61ED> \x8F\xBF\xA2 |0 # <CJK>
+<U61EF> \x8F\xBF\xA3 |0 # <CJK>
+<U6201> \x8F\xBF\xA4 |0 # <CJK>
+<U6203> \x8F\xBF\xA5 |0 # <CJK>
+<U6204> \x8F\xBF\xA6 |0 # <CJK>
+<U6207> \x8F\xBF\xA7 |0 # <CJK>
+<U6213> \x8F\xBF\xA8 |0 # <CJK>
+<U6215> \x8F\xBF\xA9 |0 # <CJK>
+<U621C> \x8F\xBF\xAA |0 # <CJK>
+<U6220> \x8F\xBF\xAB |0 # <CJK>
+<U6222> \x8F\xBF\xAC |0 # <CJK>
+<U6223> \x8F\xBF\xAD |0 # <CJK>
+<U6227> \x8F\xBF\xAE |0 # <CJK>
+<U6229> \x8F\xBF\xAF |0 # <CJK>
+<U622B> \x8F\xBF\xB0 |0 # <CJK>
+<U6239> \x8F\xBF\xB1 |0 # <CJK>
+<U623D> \x8F\xBF\xB2 |0 # <CJK>
+<U6242> \x8F\xBF\xB3 |0 # <CJK>
+<U6243> \x8F\xBF\xB4 |0 # <CJK>
+<U6244> \x8F\xBF\xB5 |0 # <CJK>
+<U6246> \x8F\xBF\xB6 |0 # <CJK>
+<U624C> \x8F\xBF\xB7 |0 # <CJK>
+<U6250> \x8F\xBF\xB8 |0 # <CJK>
+<U6251> \x8F\xBF\xB9 |0 # <CJK>
+<U6252> \x8F\xBF\xBA |0 # <CJK>
+<U6254> \x8F\xBF\xBB |0 # <CJK>
+<U6256> \x8F\xBF\xBC |0 # <CJK>
+<U625A> \x8F\xBF\xBD |0 # <CJK>
+<U625C> \x8F\xBF\xBE |0 # <CJK>
+<U6264> \x8F\xBF\xBF |0 # <CJK>
+<U626D> \x8F\xBF\xC0 |0 # <CJK>
+<U626F> \x8F\xBF\xC1 |0 # <CJK>
+<U6273> \x8F\xBF\xC2 |0 # <CJK>
+<U627A> \x8F\xBF\xC3 |0 # <CJK>
+<U627D> \x8F\xBF\xC4 |0 # <CJK>
+<U628D> \x8F\xBF\xC5 |0 # <CJK>
+<U628E> \x8F\xBF\xC6 |0 # <CJK>
+<U628F> \x8F\xBF\xC7 |0 # <CJK>
+<U6290> \x8F\xBF\xC8 |0 # <CJK>
+<U62A6> \x8F\xBF\xC9 |0 # <CJK>
+<U62A8> \x8F\xBF\xCA |0 # <CJK>
+<U62B3> \x8F\xBF\xCB |0 # <CJK>
+<U62B6> \x8F\xBF\xCC |0 # <CJK>
+<U62B7> \x8F\xBF\xCD |0 # <CJK>
+<U62BA> \x8F\xBF\xCE |0 # <CJK>
+<U62BE> \x8F\xBF\xCF |0 # <CJK>
+<U62BF> \x8F\xBF\xD0 |0 # <CJK>
+<U62C4> \x8F\xBF\xD1 |0 # <CJK>
+<U62CE> \x8F\xBF\xD2 |0 # <CJK>
+<U62D5> \x8F\xBF\xD3 |0 # <CJK>
+<U62D6> \x8F\xBF\xD4 |0 # <CJK>
+<U62DA> \x8F\xBF\xD5 |0 # <CJK>
+<U62EA> \x8F\xBF\xD6 |0 # <CJK>
+<U62F2> \x8F\xBF\xD7 |0 # <CJK>
+<U62F4> \x8F\xBF\xD8 |0 # <CJK>
+<U62FC> \x8F\xBF\xD9 |0 # <CJK>
+<U62FD> \x8F\xBF\xDA |0 # <CJK>
+<U6303> \x8F\xBF\xDB |0 # <CJK>
+<U6304> \x8F\xBF\xDC |0 # <CJK>
+<U630A> \x8F\xBF\xDD |0 # <CJK>
+<U630B> \x8F\xBF\xDE |0 # <CJK>
+<U630D> \x8F\xBF\xDF |0 # <CJK>
+<U6310> \x8F\xBF\xE0 |0 # <CJK>
+<U6313> \x8F\xBF\xE1 |0 # <CJK>
+<U6316> \x8F\xBF\xE2 |0 # <CJK>
+<U6318> \x8F\xBF\xE3 |0 # <CJK>
+<U6329> \x8F\xBF\xE4 |0 # <CJK>
+<U632A> \x8F\xBF\xE5 |0 # <CJK>
+<U632D> \x8F\xBF\xE6 |0 # <CJK>
+<U6335> \x8F\xBF\xE7 |0 # <CJK>
+<U6336> \x8F\xBF\xE8 |0 # <CJK>
+<U6339> \x8F\xBF\xE9 |0 # <CJK>
+<U633C> \x8F\xBF\xEA |0 # <CJK>
+<U6341> \x8F\xBF\xEB |0 # <CJK>
+<U6342> \x8F\xBF\xEC |0 # <CJK>
+<U6343> \x8F\xBF\xED |0 # <CJK>
+<U6344> \x8F\xBF\xEE |0 # <CJK>
+<U6346> \x8F\xBF\xEF |0 # <CJK>
+<U634A> \x8F\xBF\xF0 |0 # <CJK>
+<U634B> \x8F\xBF\xF1 |0 # <CJK>
+<U634E> \x8F\xBF\xF2 |0 # <CJK>
+<U6352> \x8F\xBF\xF3 |0 # <CJK>
+<U6353> \x8F\xBF\xF4 |0 # <CJK>
+<U6354> \x8F\xBF\xF5 |0 # <CJK>
+<U6358> \x8F\xBF\xF6 |0 # <CJK>
+<U635B> \x8F\xBF\xF7 |0 # <CJK>
+<U6365> \x8F\xBF\xF8 |0 # <CJK>
+<U6366> \x8F\xBF\xF9 |0 # <CJK>
+<U636C> \x8F\xBF\xFA |0 # <CJK>
+<U636D> \x8F\xBF\xFB |0 # <CJK>
+<U6371> \x8F\xBF\xFC |0 # <CJK>
+<U6374> \x8F\xBF\xFD |0 # <CJK>
+<U6375> \x8F\xBF\xFE |0 # <CJK>
+<U6378> \x8F\xC0\xA1 |0 # <CJK>
+<U637C> \x8F\xC0\xA2 |0 # <CJK>
+<U637D> \x8F\xC0\xA3 |0 # <CJK>
+<U637F> \x8F\xC0\xA4 |0 # <CJK>
+<U6382> \x8F\xC0\xA5 |0 # <CJK>
+<U6384> \x8F\xC0\xA6 |0 # <CJK>
+<U6387> \x8F\xC0\xA7 |0 # <CJK>
+<U638A> \x8F\xC0\xA8 |0 # <CJK>
+<U6390> \x8F\xC0\xA9 |0 # <CJK>
+<U6394> \x8F\xC0\xAA |0 # <CJK>
+<U6395> \x8F\xC0\xAB |0 # <CJK>
+<U6399> \x8F\xC0\xAC |0 # <CJK>
+<U639A> \x8F\xC0\xAD |0 # <CJK>
+<U639E> \x8F\xC0\xAE |0 # <CJK>
+<U63A4> \x8F\xC0\xAF |0 # <CJK>
+<U63A6> \x8F\xC0\xB0 |0 # <CJK>
+<U63AD> \x8F\xC0\xB1 |0 # <CJK>
+<U63AE> \x8F\xC0\xB2 |0 # <CJK>
+<U63AF> \x8F\xC0\xB3 |0 # <CJK>
+<U63BD> \x8F\xC0\xB4 |0 # <CJK>
+<U63C1> \x8F\xC0\xB5 |0 # <CJK>
+<U63C5> \x8F\xC0\xB6 |0 # <CJK>
+<U63C8> \x8F\xC0\xB7 |0 # <CJK>
+<U63CE> \x8F\xC0\xB8 |0 # <CJK>
+<U63D1> \x8F\xC0\xB9 |0 # <CJK>
+<U63D3> \x8F\xC0\xBA |0 # <CJK>
+<U63D4> \x8F\xC0\xBB |0 # <CJK>
+<U63D5> \x8F\xC0\xBC |0 # <CJK>
+<U63DC> \x8F\xC0\xBD |0 # <CJK>
+<U63E0> \x8F\xC0\xBE |0 # <CJK>
+<U63E5> \x8F\xC0\xBF |0 # <CJK>
+<U63EA> \x8F\xC0\xC0 |0 # <CJK>
+<U63EC> \x8F\xC0\xC1 |0 # <CJK>
+<U63F2> \x8F\xC0\xC2 |0 # <CJK>
+<U63F3> \x8F\xC0\xC3 |0 # <CJK>
+<U63F5> \x8F\xC0\xC4 |0 # <CJK>
+<U63F8> \x8F\xC0\xC5 |0 # <CJK>
+<U63F9> \x8F\xC0\xC6 |0 # <CJK>
+<U6409> \x8F\xC0\xC7 |0 # <CJK>
+<U640A> \x8F\xC0\xC8 |0 # <CJK>
+<U6410> \x8F\xC0\xC9 |0 # <CJK>
+<U6412> \x8F\xC0\xCA |0 # <CJK>
+<U6414> \x8F\xC0\xCB |0 # <CJK>
+<U6418> \x8F\xC0\xCC |0 # <CJK>
+<U641E> \x8F\xC0\xCD |0 # <CJK>
+<U6420> \x8F\xC0\xCE |0 # <CJK>
+<U6422> \x8F\xC0\xCF |0 # <CJK>
+<U6424> \x8F\xC0\xD0 |0 # <CJK>
+<U6425> \x8F\xC0\xD1 |0 # <CJK>
+<U6429> \x8F\xC0\xD2 |0 # <CJK>
+<U642A> \x8F\xC0\xD3 |0 # <CJK>
+<U642F> \x8F\xC0\xD4 |0 # <CJK>
+<U6430> \x8F\xC0\xD5 |0 # <CJK>
+<U6435> \x8F\xC0\xD6 |0 # <CJK>
+<U643D> \x8F\xC0\xD7 |0 # <CJK>
+<U643F> \x8F\xC0\xD8 |0 # <CJK>
+<U644B> \x8F\xC0\xD9 |0 # <CJK>
+<U644F> \x8F\xC0\xDA |0 # <CJK>
+<U6451> \x8F\xC0\xDB |0 # <CJK>
+<U6452> \x8F\xC0\xDC |0 # <CJK>
+<U6453> \x8F\xC0\xDD |0 # <CJK>
+<U6454> \x8F\xC0\xDE |0 # <CJK>
+<U645A> \x8F\xC0\xDF |0 # <CJK>
+<U645B> \x8F\xC0\xE0 |0 # <CJK>
+<U645C> \x8F\xC0\xE1 |0 # <CJK>
+<U645D> \x8F\xC0\xE2 |0 # <CJK>
+<U645F> \x8F\xC0\xE3 |0 # <CJK>
+<U6460> \x8F\xC0\xE4 |0 # <CJK>
+<U6461> \x8F\xC0\xE5 |0 # <CJK>
+<U6463> \x8F\xC0\xE6 |0 # <CJK>
+<U646D> \x8F\xC0\xE7 |0 # <CJK>
+<U6473> \x8F\xC0\xE8 |0 # <CJK>
+<U6474> \x8F\xC0\xE9 |0 # <CJK>
+<U647B> \x8F\xC0\xEA |0 # <CJK>
+<U647D> \x8F\xC0\xEB |0 # <CJK>
+<U6485> \x8F\xC0\xEC |0 # <CJK>
+<U6487> \x8F\xC0\xED |0 # <CJK>
+<U648F> \x8F\xC0\xEE |0 # <CJK>
+<U6490> \x8F\xC0\xEF |0 # <CJK>
+<U6491> \x8F\xC0\xF0 |0 # <CJK>
+<U6498> \x8F\xC0\xF1 |0 # <CJK>
+<U6499> \x8F\xC0\xF2 |0 # <CJK>
+<U649B> \x8F\xC0\xF3 |0 # <CJK>
+<U649D> \x8F\xC0\xF4 |0 # <CJK>
+<U649F> \x8F\xC0\xF5 |0 # <CJK>
+<U64A1> \x8F\xC0\xF6 |0 # <CJK>
+<U64A3> \x8F\xC0\xF7 |0 # <CJK>
+<U64A6> \x8F\xC0\xF8 |0 # <CJK>
+<U64A8> \x8F\xC0\xF9 |0 # <CJK>
+<U64AC> \x8F\xC0\xFA |0 # <CJK>
+<U64B3> \x8F\xC0\xFB |0 # <CJK>
+<U64BD> \x8F\xC0\xFC |0 # <CJK>
+<U64BE> \x8F\xC0\xFD |0 # <CJK>
+<U64BF> \x8F\xC0\xFE |0 # <CJK>
+<U64C4> \x8F\xC1\xA1 |0 # <CJK>
+<U64C9> \x8F\xC1\xA2 |0 # <CJK>
+<U64CA> \x8F\xC1\xA3 |0 # <CJK>
+<U64CB> \x8F\xC1\xA4 |0 # <CJK>
+<U64CC> \x8F\xC1\xA5 |0 # <CJK>
+<U64CE> \x8F\xC1\xA6 |0 # <CJK>
+<U64D0> \x8F\xC1\xA7 |0 # <CJK>
+<U64D1> \x8F\xC1\xA8 |0 # <CJK>
+<U64D5> \x8F\xC1\xA9 |0 # <CJK>
+<U64D7> \x8F\xC1\xAA |0 # <CJK>
+<U64E4> \x8F\xC1\xAB |0 # <CJK>
+<U64E5> \x8F\xC1\xAC |0 # <CJK>
+<U64E9> \x8F\xC1\xAD |0 # <CJK>
+<U64EA> \x8F\xC1\xAE |0 # <CJK>
+<U64ED> \x8F\xC1\xAF |0 # <CJK>
+<U64F0> \x8F\xC1\xB0 |0 # <CJK>
+<U64F5> \x8F\xC1\xB1 |0 # <CJK>
+<U64F7> \x8F\xC1\xB2 |0 # <CJK>
+<U64FB> \x8F\xC1\xB3 |0 # <CJK>
+<U64FF> \x8F\xC1\xB4 |0 # <CJK>
+<U6501> \x8F\xC1\xB5 |0 # <CJK>
+<U6504> \x8F\xC1\xB6 |0 # <CJK>
+<U6508> \x8F\xC1\xB7 |0 # <CJK>
+<U6509> \x8F\xC1\xB8 |0 # <CJK>
+<U650A> \x8F\xC1\xB9 |0 # <CJK>
+<U650F> \x8F\xC1\xBA |0 # <CJK>
+<U6513> \x8F\xC1\xBB |0 # <CJK>
+<U6514> \x8F\xC1\xBC |0 # <CJK>
+<U6516> \x8F\xC1\xBD |0 # <CJK>
+<U6519> \x8F\xC1\xBE |0 # <CJK>
+<U651B> \x8F\xC1\xBF |0 # <CJK>
+<U651E> \x8F\xC1\xC0 |0 # <CJK>
+<U651F> \x8F\xC1\xC1 |0 # <CJK>
+<U6522> \x8F\xC1\xC2 |0 # <CJK>
+<U6526> \x8F\xC1\xC3 |0 # <CJK>
+<U6529> \x8F\xC1\xC4 |0 # <CJK>
+<U652E> \x8F\xC1\xC5 |0 # <CJK>
+<U6531> \x8F\xC1\xC6 |0 # <CJK>
+<U653A> \x8F\xC1\xC7 |0 # <CJK>
+<U653C> \x8F\xC1\xC8 |0 # <CJK>
+<U653D> \x8F\xC1\xC9 |0 # <CJK>
+<U6543> \x8F\xC1\xCA |0 # <CJK>
+<U6547> \x8F\xC1\xCB |0 # <CJK>
+<U6549> \x8F\xC1\xCC |0 # <CJK>
+<U6550> \x8F\xC1\xCD |0 # <CJK>
+<U6552> \x8F\xC1\xCE |0 # <CJK>
+<U6554> \x8F\xC1\xCF |0 # <CJK>
+<U655F> \x8F\xC1\xD0 |0 # <CJK>
+<U6560> \x8F\xC1\xD1 |0 # <CJK>
+<U6567> \x8F\xC1\xD2 |0 # <CJK>
+<U656B> \x8F\xC1\xD3 |0 # <CJK>
+<U657A> \x8F\xC1\xD4 |0 # <CJK>
+<U657D> \x8F\xC1\xD5 |0 # <CJK>
+<U6581> \x8F\xC1\xD6 |0 # <CJK>
+<U6585> \x8F\xC1\xD7 |0 # <CJK>
+<U658A> \x8F\xC1\xD8 |0 # <CJK>
+<U6592> \x8F\xC1\xD9 |0 # <CJK>
+<U6595> \x8F\xC1\xDA |0 # <CJK>
+<U6598> \x8F\xC1\xDB |0 # <CJK>
+<U659D> \x8F\xC1\xDC |0 # <CJK>
+<U65A0> \x8F\xC1\xDD |0 # <CJK>
+<U65A3> \x8F\xC1\xDE |0 # <CJK>
+<U65A6> \x8F\xC1\xDF |0 # <CJK>
+<U65AE> \x8F\xC1\xE0 |0 # <CJK>
+<U65B2> \x8F\xC1\xE1 |0 # <CJK>
+<U65B3> \x8F\xC1\xE2 |0 # <CJK>
+<U65B4> \x8F\xC1\xE3 |0 # <CJK>
+<U65BF> \x8F\xC1\xE4 |0 # <CJK>
+<U65C2> \x8F\xC1\xE5 |0 # <CJK>
+<U65C8> \x8F\xC1\xE6 |0 # <CJK>
+<U65C9> \x8F\xC1\xE7 |0 # <CJK>
+<U65CE> \x8F\xC1\xE8 |0 # <CJK>
+<U65D0> \x8F\xC1\xE9 |0 # <CJK>
+<U65D4> \x8F\xC1\xEA |0 # <CJK>
+<U65D6> \x8F\xC1\xEB |0 # <CJK>
+<U65D8> \x8F\xC1\xEC |0 # <CJK>
+<U65DF> \x8F\xC1\xED |0 # <CJK>
+<U65F0> \x8F\xC1\xEE |0 # <CJK>
+<U65F2> \x8F\xC1\xEF |0 # <CJK>
+<U65F4> \x8F\xC1\xF0 |0 # <CJK>
+<U65F5> \x8F\xC1\xF1 |0 # <CJK>
+<U65F9> \x8F\xC1\xF2 |0 # <CJK>
+<U65FE> \x8F\xC1\xF3 |0 # <CJK>
+<U65FF> \x8F\xC1\xF4 |0 # <CJK>
+<U6600> \x8F\xC1\xF5 |0 # <CJK>
+<U6604> \x8F\xC1\xF6 |0 # <CJK>
+<U6608> \x8F\xC1\xF7 |0 # <CJK>
+<U6609> \x8F\xC1\xF8 |0 # <CJK>
+<U660D> \x8F\xC1\xF9 |0 # <CJK>
+<U6611> \x8F\xC1\xFA |0 # <CJK>
+<U6612> \x8F\xC1\xFB |0 # <CJK>
+<U6615> \x8F\xC1\xFC |0 # <CJK>
+<U6616> \x8F\xC1\xFD |0 # <CJK>
+<U661D> \x8F\xC1\xFE |0 # <CJK>
+<U661E> \x8F\xC2\xA1 |0 # <CJK>
+<U6621> \x8F\xC2\xA2 |0 # <CJK>
+<U6622> \x8F\xC2\xA3 |0 # <CJK>
+<U6623> \x8F\xC2\xA4 |0 # <CJK>
+<U6624> \x8F\xC2\xA5 |0 # <CJK>
+<U6626> \x8F\xC2\xA6 |0 # <CJK>
+<U6629> \x8F\xC2\xA7 |0 # <CJK>
+<U662A> \x8F\xC2\xA8 |0 # <CJK>
+<U662B> \x8F\xC2\xA9 |0 # <CJK>
+<U662C> \x8F\xC2\xAA |0 # <CJK>
+<U662E> \x8F\xC2\xAB |0 # <CJK>
+<U6630> \x8F\xC2\xAC |0 # <CJK>
+<U6631> \x8F\xC2\xAD |0 # <CJK>
+<U6633> \x8F\xC2\xAE |0 # <CJK>
+<U6639> \x8F\xC2\xAF |0 # <CJK>
+<U6637> \x8F\xC2\xB0 |0 # <CJK>
+<U6640> \x8F\xC2\xB1 |0 # <CJK>
+<U6645> \x8F\xC2\xB2 |0 # <CJK>
+<U6646> \x8F\xC2\xB3 |0 # <CJK>
+<U664A> \x8F\xC2\xB4 |0 # <CJK>
+<U664C> \x8F\xC2\xB5 |0 # <CJK>
+<U6651> \x8F\xC2\xB6 |0 # <CJK>
+<U664E> \x8F\xC2\xB7 |0 # <CJK>
+<U6657> \x8F\xC2\xB8 |0 # <CJK>
+<U6658> \x8F\xC2\xB9 |0 # <CJK>
+<U6659> \x8F\xC2\xBA |0 # <CJK>
+<U665B> \x8F\xC2\xBB |0 # <CJK>
+<U665C> \x8F\xC2\xBC |0 # <CJK>
+<U6660> \x8F\xC2\xBD |0 # <CJK>
+<U6661> \x8F\xC2\xBE |0 # <CJK>
+<U66FB> \x8F\xC2\xBF |0 # <CJK>
+<U666A> \x8F\xC2\xC0 |0 # <CJK>
+<U666B> \x8F\xC2\xC1 |0 # <CJK>
+<U666C> \x8F\xC2\xC2 |0 # <CJK>
+<U667E> \x8F\xC2\xC3 |0 # <CJK>
+<U6673> \x8F\xC2\xC4 |0 # <CJK>
+<U6675> \x8F\xC2\xC5 |0 # <CJK>
+<U667F> \x8F\xC2\xC6 |0 # <CJK>
+<U6677> \x8F\xC2\xC7 |0 # <CJK>
+<U6678> \x8F\xC2\xC8 |0 # <CJK>
+<U6679> \x8F\xC2\xC9 |0 # <CJK>
+<U667B> \x8F\xC2\xCA |0 # <CJK>
+<U6680> \x8F\xC2\xCB |0 # <CJK>
+<U667C> \x8F\xC2\xCC |0 # <CJK>
+<U668B> \x8F\xC2\xCD |0 # <CJK>
+<U668C> \x8F\xC2\xCE |0 # <CJK>
+<U668D> \x8F\xC2\xCF |0 # <CJK>
+<U6690> \x8F\xC2\xD0 |0 # <CJK>
+<U6692> \x8F\xC2\xD1 |0 # <CJK>
+<U6699> \x8F\xC2\xD2 |0 # <CJK>
+<U669A> \x8F\xC2\xD3 |0 # <CJK>
+<U669B> \x8F\xC2\xD4 |0 # <CJK>
+<U669C> \x8F\xC2\xD5 |0 # <CJK>
+<U669F> \x8F\xC2\xD6 |0 # <CJK>
+<U66A0> \x8F\xC2\xD7 |0 # <CJK>
+<U66A4> \x8F\xC2\xD8 |0 # <CJK>
+<U66AD> \x8F\xC2\xD9 |0 # <CJK>
+<U66B1> \x8F\xC2\xDA |0 # <CJK>
+<U66B2> \x8F\xC2\xDB |0 # <CJK>
+<U66B5> \x8F\xC2\xDC |0 # <CJK>
+<U66BB> \x8F\xC2\xDD |0 # <CJK>
+<U66BF> \x8F\xC2\xDE |0 # <CJK>
+<U66C0> \x8F\xC2\xDF |0 # <CJK>
+<U66C2> \x8F\xC2\xE0 |0 # <CJK>
+<U66C3> \x8F\xC2\xE1 |0 # <CJK>
+<U66C8> \x8F\xC2\xE2 |0 # <CJK>
+<U66CC> \x8F\xC2\xE3 |0 # <CJK>
+<U66CE> \x8F\xC2\xE4 |0 # <CJK>
+<U66CF> \x8F\xC2\xE5 |0 # <CJK>
+<U66D4> \x8F\xC2\xE6 |0 # <CJK>
+<U66DB> \x8F\xC2\xE7 |0 # <CJK>
+<U66DF> \x8F\xC2\xE8 |0 # <CJK>
+<U66E8> \x8F\xC2\xE9 |0 # <CJK>
+<U66EB> \x8F\xC2\xEA |0 # <CJK>
+<U66EC> \x8F\xC2\xEB |0 # <CJK>
+<U66EE> \x8F\xC2\xEC |0 # <CJK>
+<U66FA> \x8F\xC2\xED |0 # <CJK>
+<U6705> \x8F\xC2\xEE |0 # <CJK>
+<U6707> \x8F\xC2\xEF |0 # <CJK>
+<U670E> \x8F\xC2\xF0 |0 # <CJK>
+<U6713> \x8F\xC2\xF1 |0 # <CJK>
+<U6719> \x8F\xC2\xF2 |0 # <CJK>
+<U671C> \x8F\xC2\xF3 |0 # <CJK>
+<U6720> \x8F\xC2\xF4 |0 # <CJK>
+<U6722> \x8F\xC2\xF5 |0 # <CJK>
+<U6733> \x8F\xC2\xF6 |0 # <CJK>
+<U673E> \x8F\xC2\xF7 |0 # <CJK>
+<U6745> \x8F\xC2\xF8 |0 # <CJK>
+<U6747> \x8F\xC2\xF9 |0 # <CJK>
+<U6748> \x8F\xC2\xFA |0 # <CJK>
+<U674C> \x8F\xC2\xFB |0 # <CJK>
+<U6754> \x8F\xC2\xFC |0 # <CJK>
+<U6755> \x8F\xC2\xFD |0 # <CJK>
+<U675D> \x8F\xC2\xFE |0 # <CJK>
+<U6766> \x8F\xC3\xA1 |0 # <CJK>
+<U676C> \x8F\xC3\xA2 |0 # <CJK>
+<U676E> \x8F\xC3\xA3 |0 # <CJK>
+<U6774> \x8F\xC3\xA4 |0 # <CJK>
+<U6776> \x8F\xC3\xA5 |0 # <CJK>
+<U677B> \x8F\xC3\xA6 |0 # <CJK>
+<U6781> \x8F\xC3\xA7 |0 # <CJK>
+<U6784> \x8F\xC3\xA8 |0 # <CJK>
+<U678E> \x8F\xC3\xA9 |0 # <CJK>
+<U678F> \x8F\xC3\xAA |0 # <CJK>
+<U6791> \x8F\xC3\xAB |0 # <CJK>
+<U6793> \x8F\xC3\xAC |0 # <CJK>
+<U6796> \x8F\xC3\xAD |0 # <CJK>
+<U6798> \x8F\xC3\xAE |0 # <CJK>
+<U6799> \x8F\xC3\xAF |0 # <CJK>
+<U679B> \x8F\xC3\xB0 |0 # <CJK>
+<U67B0> \x8F\xC3\xB1 |0 # <CJK>
+<U67B1> \x8F\xC3\xB2 |0 # <CJK>
+<U67B2> \x8F\xC3\xB3 |0 # <CJK>
+<U67B5> \x8F\xC3\xB4 |0 # <CJK>
+<U67BB> \x8F\xC3\xB5 |0 # <CJK>
+<U67BC> \x8F\xC3\xB6 |0 # <CJK>
+<U67BD> \x8F\xC3\xB7 |0 # <CJK>
+<U67F9> \x8F\xC3\xB8 |0 # <CJK>
+<U67C0> \x8F\xC3\xB9 |0 # <CJK>
+<U67C2> \x8F\xC3\xBA |0 # <CJK>
+<U67C3> \x8F\xC3\xBB |0 # <CJK>
+<U67C5> \x8F\xC3\xBC |0 # <CJK>
+<U67C8> \x8F\xC3\xBD |0 # <CJK>
+<U67C9> \x8F\xC3\xBE |0 # <CJK>
+<U67D2> \x8F\xC3\xBF |0 # <CJK>
+<U67D7> \x8F\xC3\xC0 |0 # <CJK>
+<U67D9> \x8F\xC3\xC1 |0 # <CJK>
+<U67DC> \x8F\xC3\xC2 |0 # <CJK>
+<U67E1> \x8F\xC3\xC3 |0 # <CJK>
+<U67E6> \x8F\xC3\xC4 |0 # <CJK>
+<U67F0> \x8F\xC3\xC5 |0 # <CJK>
+<U67F2> \x8F\xC3\xC6 |0 # <CJK>
+<U67F6> \x8F\xC3\xC7 |0 # <CJK>
+<U67F7> \x8F\xC3\xC8 |0 # <CJK>
+<U6852> \x8F\xC3\xC9 |0 # <CJK>
+<U6814> \x8F\xC3\xCA |0 # <CJK>
+<U6819> \x8F\xC3\xCB |0 # <CJK>
+<U681D> \x8F\xC3\xCC |0 # <CJK>
+<U681F> \x8F\xC3\xCD |0 # <CJK>
+<U6828> \x8F\xC3\xCE |0 # <CJK>
+<U6827> \x8F\xC3\xCF |0 # <CJK>
+<U682C> \x8F\xC3\xD0 |0 # <CJK>
+<U682D> \x8F\xC3\xD1 |0 # <CJK>
+<U682F> \x8F\xC3\xD2 |0 # <CJK>
+<U6830> \x8F\xC3\xD3 |0 # <CJK>
+<U6831> \x8F\xC3\xD4 |0 # <CJK>
+<U6833> \x8F\xC3\xD5 |0 # <CJK>
+<U683B> \x8F\xC3\xD6 |0 # <CJK>
+<U683F> \x8F\xC3\xD7 |0 # <CJK>
+<U6844> \x8F\xC3\xD8 |0 # <CJK>
+<U6845> \x8F\xC3\xD9 |0 # <CJK>
+<U684A> \x8F\xC3\xDA |0 # <CJK>
+<U684C> \x8F\xC3\xDB |0 # <CJK>
+<U6855> \x8F\xC3\xDC |0 # <CJK>
+<U6857> \x8F\xC3\xDD |0 # <CJK>
+<U6858> \x8F\xC3\xDE |0 # <CJK>
+<U685B> \x8F\xC3\xDF |0 # <CJK>
+<U686B> \x8F\xC3\xE0 |0 # <CJK>
+<U686E> \x8F\xC3\xE1 |0 # <CJK>
+<U686F> \x8F\xC3\xE2 |0 # <CJK>
+<U6870> \x8F\xC3\xE3 |0 # <CJK>
+<U6871> \x8F\xC3\xE4 |0 # <CJK>
+<U6872> \x8F\xC3\xE5 |0 # <CJK>
+<U6875> \x8F\xC3\xE6 |0 # <CJK>
+<U6879> \x8F\xC3\xE7 |0 # <CJK>
+<U687A> \x8F\xC3\xE8 |0 # <CJK>
+<U687B> \x8F\xC3\xE9 |0 # <CJK>
+<U687C> \x8F\xC3\xEA |0 # <CJK>
+<U6882> \x8F\xC3\xEB |0 # <CJK>
+<U6884> \x8F\xC3\xEC |0 # <CJK>
+<U6886> \x8F\xC3\xED |0 # <CJK>
+<U6888> \x8F\xC3\xEE |0 # <CJK>
+<U6896> \x8F\xC3\xEF |0 # <CJK>
+<U6898> \x8F\xC3\xF0 |0 # <CJK>
+<U689A> \x8F\xC3\xF1 |0 # <CJK>
+<U689C> \x8F\xC3\xF2 |0 # <CJK>
+<U68A1> \x8F\xC3\xF3 |0 # <CJK>
+<U68A3> \x8F\xC3\xF4 |0 # <CJK>
+<U68A5> \x8F\xC3\xF5 |0 # <CJK>
+<U68A9> \x8F\xC3\xF6 |0 # <CJK>
+<U68AA> \x8F\xC3\xF7 |0 # <CJK>
+<U68AE> \x8F\xC3\xF8 |0 # <CJK>
+<U68B2> \x8F\xC3\xF9 |0 # <CJK>
+<U68BB> \x8F\xC3\xFA |0 # <CJK>
+<U68C5> \x8F\xC3\xFB |0 # <CJK>
+<U68C8> \x8F\xC3\xFC |0 # <CJK>
+<U68CC> \x8F\xC3\xFD |0 # <CJK>
+<U68CF> \x8F\xC3\xFE |0 # <CJK>
+<U68D0> \x8F\xC4\xA1 |0 # <CJK>
+<U68D1> \x8F\xC4\xA2 |0 # <CJK>
+<U68D3> \x8F\xC4\xA3 |0 # <CJK>
+<U68D6> \x8F\xC4\xA4 |0 # <CJK>
+<U68D9> \x8F\xC4\xA5 |0 # <CJK>
+<U68DC> \x8F\xC4\xA6 |0 # <CJK>
+<U68DD> \x8F\xC4\xA7 |0 # <CJK>
+<U68E5> \x8F\xC4\xA8 |0 # <CJK>
+<U68E8> \x8F\xC4\xA9 |0 # <CJK>
+<U68EA> \x8F\xC4\xAA |0 # <CJK>
+<U68EB> \x8F\xC4\xAB |0 # <CJK>
+<U68EC> \x8F\xC4\xAC |0 # <CJK>
+<U68ED> \x8F\xC4\xAD |0 # <CJK>
+<U68F0> \x8F\xC4\xAE |0 # <CJK>
+<U68F1> \x8F\xC4\xAF |0 # <CJK>
+<U68F5> \x8F\xC4\xB0 |0 # <CJK>
+<U68F6> \x8F\xC4\xB1 |0 # <CJK>
+<U68FB> \x8F\xC4\xB2 |0 # <CJK>
+<U68FC> \x8F\xC4\xB3 |0 # <CJK>
+<U68FD> \x8F\xC4\xB4 |0 # <CJK>
+<U6906> \x8F\xC4\xB5 |0 # <CJK>
+<U6909> \x8F\xC4\xB6 |0 # <CJK>
+<U690A> \x8F\xC4\xB7 |0 # <CJK>
+<U6910> \x8F\xC4\xB8 |0 # <CJK>
+<U6911> \x8F\xC4\xB9 |0 # <CJK>
+<U6913> \x8F\xC4\xBA |0 # <CJK>
+<U6916> \x8F\xC4\xBB |0 # <CJK>
+<U6917> \x8F\xC4\xBC |0 # <CJK>
+<U6931> \x8F\xC4\xBD |0 # <CJK>
+<U6933> \x8F\xC4\xBE |0 # <CJK>
+<U6935> \x8F\xC4\xBF |0 # <CJK>
+<U6938> \x8F\xC4\xC0 |0 # <CJK>
+<U693B> \x8F\xC4\xC1 |0 # <CJK>
+<U6942> \x8F\xC4\xC2 |0 # <CJK>
+<U6945> \x8F\xC4\xC3 |0 # <CJK>
+<U6949> \x8F\xC4\xC4 |0 # <CJK>
+<U694E> \x8F\xC4\xC5 |0 # <CJK>
+<U6957> \x8F\xC4\xC6 |0 # <CJK>
+<U695B> \x8F\xC4\xC7 |0 # <CJK>
+<U6963> \x8F\xC4\xC8 |0 # <CJK>
+<U6964> \x8F\xC4\xC9 |0 # <CJK>
+<U6965> \x8F\xC4\xCA |0 # <CJK>
+<U6966> \x8F\xC4\xCB |0 # <CJK>
+<U6968> \x8F\xC4\xCC |0 # <CJK>
+<U6969> \x8F\xC4\xCD |0 # <CJK>
+<U696C> \x8F\xC4\xCE |0 # <CJK>
+<U6970> \x8F\xC4\xCF |0 # <CJK>
+<U6971> \x8F\xC4\xD0 |0 # <CJK>
+<U6972> \x8F\xC4\xD1 |0 # <CJK>
+<U697A> \x8F\xC4\xD2 |0 # <CJK>
+<U697B> \x8F\xC4\xD3 |0 # <CJK>
+<U697F> \x8F\xC4\xD4 |0 # <CJK>
+<U6980> \x8F\xC4\xD5 |0 # <CJK>
+<U698D> \x8F\xC4\xD6 |0 # <CJK>
+<U6992> \x8F\xC4\xD7 |0 # <CJK>
+<U6996> \x8F\xC4\xD8 |0 # <CJK>
+<U6998> \x8F\xC4\xD9 |0 # <CJK>
+<U69A1> \x8F\xC4\xDA |0 # <CJK>
+<U69A5> \x8F\xC4\xDB |0 # <CJK>
+<U69A6> \x8F\xC4\xDC |0 # <CJK>
+<U69A8> \x8F\xC4\xDD |0 # <CJK>
+<U69AB> \x8F\xC4\xDE |0 # <CJK>
+<U69AD> \x8F\xC4\xDF |0 # <CJK>
+<U69AF> \x8F\xC4\xE0 |0 # <CJK>
+<U69B7> \x8F\xC4\xE1 |0 # <CJK>
+<U69B8> \x8F\xC4\xE2 |0 # <CJK>
+<U69BA> \x8F\xC4\xE3 |0 # <CJK>
+<U69BC> \x8F\xC4\xE4 |0 # <CJK>
+<U69C5> \x8F\xC4\xE5 |0 # <CJK>
+<U69C8> \x8F\xC4\xE6 |0 # <CJK>
+<U69D1> \x8F\xC4\xE7 |0 # <CJK>
+<U69D6> \x8F\xC4\xE8 |0 # <CJK>
+<U69D7> \x8F\xC4\xE9 |0 # <CJK>
+<U69E2> \x8F\xC4\xEA |0 # <CJK>
+<U69E5> \x8F\xC4\xEB |0 # <CJK>
+<U69EE> \x8F\xC4\xEC |0 # <CJK>
+<U69EF> \x8F\xC4\xED |0 # <CJK>
+<U69F1> \x8F\xC4\xEE |0 # <CJK>
+<U69F3> \x8F\xC4\xEF |0 # <CJK>
+<U69F5> \x8F\xC4\xF0 |0 # <CJK>
+<U69FE> \x8F\xC4\xF1 |0 # <CJK>
+<U6A00> \x8F\xC4\xF2 |0 # <CJK>
+<U6A01> \x8F\xC4\xF3 |0 # <CJK>
+<U6A03> \x8F\xC4\xF4 |0 # <CJK>
+<U6A0F> \x8F\xC4\xF5 |0 # <CJK>
+<U6A11> \x8F\xC4\xF6 |0 # <CJK>
+<U6A15> \x8F\xC4\xF7 |0 # <CJK>
+<U6A1A> \x8F\xC4\xF8 |0 # <CJK>
+<U6A1D> \x8F\xC4\xF9 |0 # <CJK>
+<U6A20> \x8F\xC4\xFA |0 # <CJK>
+<U6A24> \x8F\xC4\xFB |0 # <CJK>
+<U6A28> \x8F\xC4\xFC |0 # <CJK>
+<U6A30> \x8F\xC4\xFD |0 # <CJK>
+<U6A32> \x8F\xC4\xFE |0 # <CJK>
+<U6A34> \x8F\xC5\xA1 |0 # <CJK>
+<U6A37> \x8F\xC5\xA2 |0 # <CJK>
+<U6A3B> \x8F\xC5\xA3 |0 # <CJK>
+<U6A3E> \x8F\xC5\xA4 |0 # <CJK>
+<U6A3F> \x8F\xC5\xA5 |0 # <CJK>
+<U6A45> \x8F\xC5\xA6 |0 # <CJK>
+<U6A46> \x8F\xC5\xA7 |0 # <CJK>
+<U6A49> \x8F\xC5\xA8 |0 # <CJK>
+<U6A4A> \x8F\xC5\xA9 |0 # <CJK>
+<U6A4E> \x8F\xC5\xAA |0 # <CJK>
+<U6A50> \x8F\xC5\xAB |0 # <CJK>
+<U6A51> \x8F\xC5\xAC |0 # <CJK>
+<U6A52> \x8F\xC5\xAD |0 # <CJK>
+<U6A55> \x8F\xC5\xAE |0 # <CJK>
+<U6A56> \x8F\xC5\xAF |0 # <CJK>
+<U6A5B> \x8F\xC5\xB0 |0 # <CJK>
+<U6A64> \x8F\xC5\xB1 |0 # <CJK>
+<U6A67> \x8F\xC5\xB2 |0 # <CJK>
+<U6A6A> \x8F\xC5\xB3 |0 # <CJK>
+<U6A71> \x8F\xC5\xB4 |0 # <CJK>
+<U6A73> \x8F\xC5\xB5 |0 # <CJK>
+<U6A7E> \x8F\xC5\xB6 |0 # <CJK>
+<U6A81> \x8F\xC5\xB7 |0 # <CJK>
+<U6A83> \x8F\xC5\xB8 |0 # <CJK>
+<U6A86> \x8F\xC5\xB9 |0 # <CJK>
+<U6A87> \x8F\xC5\xBA |0 # <CJK>
+<U6A89> \x8F\xC5\xBB |0 # <CJK>
+<U6A8B> \x8F\xC5\xBC |0 # <CJK>
+<U6A91> \x8F\xC5\xBD |0 # <CJK>
+<U6A9B> \x8F\xC5\xBE |0 # <CJK>
+<U6A9D> \x8F\xC5\xBF |0 # <CJK>
+<U6A9E> \x8F\xC5\xC0 |0 # <CJK>
+<U6A9F> \x8F\xC5\xC1 |0 # <CJK>
+<U6AA5> \x8F\xC5\xC2 |0 # <CJK>
+<U6AAB> \x8F\xC5\xC3 |0 # <CJK>
+<U6AAF> \x8F\xC5\xC4 |0 # <CJK>
+<U6AB0> \x8F\xC5\xC5 |0 # <CJK>
+<U6AB1> \x8F\xC5\xC6 |0 # <CJK>
+<U6AB4> \x8F\xC5\xC7 |0 # <CJK>
+<U6ABD> \x8F\xC5\xC8 |0 # <CJK>
+<U6ABE> \x8F\xC5\xC9 |0 # <CJK>
+<U6ABF> \x8F\xC5\xCA |0 # <CJK>
+<U6AC6> \x8F\xC5\xCB |0 # <CJK>
+<U6AC9> \x8F\xC5\xCC |0 # <CJK>
+<U6AC8> \x8F\xC5\xCD |0 # <CJK>
+<U6ACC> \x8F\xC5\xCE |0 # <CJK>
+<U6AD0> \x8F\xC5\xCF |0 # <CJK>
+<U6AD4> \x8F\xC5\xD0 |0 # <CJK>
+<U6AD5> \x8F\xC5\xD1 |0 # <CJK>
+<U6AD6> \x8F\xC5\xD2 |0 # <CJK>
+<U6ADC> \x8F\xC5\xD3 |0 # <CJK>
+<U6ADD> \x8F\xC5\xD4 |0 # <CJK>
+<U6AE4> \x8F\xC5\xD5 |0 # <CJK>
+<U6AE7> \x8F\xC5\xD6 |0 # <CJK>
+<U6AEC> \x8F\xC5\xD7 |0 # <CJK>
+<U6AF0> \x8F\xC5\xD8 |0 # <CJK>
+<U6AF1> \x8F\xC5\xD9 |0 # <CJK>
+<U6AF2> \x8F\xC5\xDA |0 # <CJK>
+<U6AFC> \x8F\xC5\xDB |0 # <CJK>
+<U6AFD> \x8F\xC5\xDC |0 # <CJK>
+<U6B02> \x8F\xC5\xDD |0 # <CJK>
+<U6B03> \x8F\xC5\xDE |0 # <CJK>
+<U6B06> \x8F\xC5\xDF |0 # <CJK>
+<U6B07> \x8F\xC5\xE0 |0 # <CJK>
+<U6B09> \x8F\xC5\xE1 |0 # <CJK>
+<U6B0F> \x8F\xC5\xE2 |0 # <CJK>
+<U6B10> \x8F\xC5\xE3 |0 # <CJK>
+<U6B11> \x8F\xC5\xE4 |0 # <CJK>
+<U6B17> \x8F\xC5\xE5 |0 # <CJK>
+<U6B1B> \x8F\xC5\xE6 |0 # <CJK>
+<U6B1E> \x8F\xC5\xE7 |0 # <CJK>
+<U6B24> \x8F\xC5\xE8 |0 # <CJK>
+<U6B28> \x8F\xC5\xE9 |0 # <CJK>
+<U6B2B> \x8F\xC5\xEA |0 # <CJK>
+<U6B2C> \x8F\xC5\xEB |0 # <CJK>
+<U6B2F> \x8F\xC5\xEC |0 # <CJK>
+<U6B35> \x8F\xC5\xED |0 # <CJK>
+<U6B36> \x8F\xC5\xEE |0 # <CJK>
+<U6B3B> \x8F\xC5\xEF |0 # <CJK>
+<U6B3F> \x8F\xC5\xF0 |0 # <CJK>
+<U6B46> \x8F\xC5\xF1 |0 # <CJK>
+<U6B4A> \x8F\xC5\xF2 |0 # <CJK>
+<U6B4D> \x8F\xC5\xF3 |0 # <CJK>
+<U6B52> \x8F\xC5\xF4 |0 # <CJK>
+<U6B56> \x8F\xC5\xF5 |0 # <CJK>
+<U6B58> \x8F\xC5\xF6 |0 # <CJK>
+<U6B5D> \x8F\xC5\xF7 |0 # <CJK>
+<U6B60> \x8F\xC5\xF8 |0 # <CJK>
+<U6B67> \x8F\xC5\xF9 |0 # <CJK>
+<U6B6B> \x8F\xC5\xFA |0 # <CJK>
+<U6B6E> \x8F\xC5\xFB |0 # <CJK>
+<U6B70> \x8F\xC5\xFC |0 # <CJK>
+<U6B75> \x8F\xC5\xFD |0 # <CJK>
+<U6B7D> \x8F\xC5\xFE |0 # <CJK>
+<U6B7E> \x8F\xC6\xA1 |0 # <CJK>
+<U6B82> \x8F\xC6\xA2 |0 # <CJK>
+<U6B85> \x8F\xC6\xA3 |0 # <CJK>
+<U6B97> \x8F\xC6\xA4 |0 # <CJK>
+<U6B9B> \x8F\xC6\xA5 |0 # <CJK>
+<U6B9F> \x8F\xC6\xA6 |0 # <CJK>
+<U6BA0> \x8F\xC6\xA7 |0 # <CJK>
+<U6BA2> \x8F\xC6\xA8 |0 # <CJK>
+<U6BA3> \x8F\xC6\xA9 |0 # <CJK>
+<U6BA8> \x8F\xC6\xAA |0 # <CJK>
+<U6BA9> \x8F\xC6\xAB |0 # <CJK>
+<U6BAC> \x8F\xC6\xAC |0 # <CJK>
+<U6BAD> \x8F\xC6\xAD |0 # <CJK>
+<U6BAE> \x8F\xC6\xAE |0 # <CJK>
+<U6BB0> \x8F\xC6\xAF |0 # <CJK>
+<U6BB8> \x8F\xC6\xB0 |0 # <CJK>
+<U6BB9> \x8F\xC6\xB1 |0 # <CJK>
+<U6BBD> \x8F\xC6\xB2 |0 # <CJK>
+<U6BBE> \x8F\xC6\xB3 |0 # <CJK>
+<U6BC3> \x8F\xC6\xB4 |0 # <CJK>
+<U6BC4> \x8F\xC6\xB5 |0 # <CJK>
+<U6BC9> \x8F\xC6\xB6 |0 # <CJK>
+<U6BCC> \x8F\xC6\xB7 |0 # <CJK>
+<U6BD6> \x8F\xC6\xB8 |0 # <CJK>
+<U6BDA> \x8F\xC6\xB9 |0 # <CJK>
+<U6BE1> \x8F\xC6\xBA |0 # <CJK>
+<U6BE3> \x8F\xC6\xBB |0 # <CJK>
+<U6BE6> \x8F\xC6\xBC |0 # <CJK>
+<U6BE7> \x8F\xC6\xBD |0 # <CJK>
+<U6BEE> \x8F\xC6\xBE |0 # <CJK>
+<U6BF1> \x8F\xC6\xBF |0 # <CJK>
+<U6BF7> \x8F\xC6\xC0 |0 # <CJK>
+<U6BF9> \x8F\xC6\xC1 |0 # <CJK>
+<U6BFF> \x8F\xC6\xC2 |0 # <CJK>
+<U6C02> \x8F\xC6\xC3 |0 # <CJK>
+<U6C04> \x8F\xC6\xC4 |0 # <CJK>
+<U6C05> \x8F\xC6\xC5 |0 # <CJK>
+<U6C09> \x8F\xC6\xC6 |0 # <CJK>
+<U6C0D> \x8F\xC6\xC7 |0 # <CJK>
+<U6C0E> \x8F\xC6\xC8 |0 # <CJK>
+<U6C10> \x8F\xC6\xC9 |0 # <CJK>
+<U6C12> \x8F\xC6\xCA |0 # <CJK>
+<U6C19> \x8F\xC6\xCB |0 # <CJK>
+<U6C1F> \x8F\xC6\xCC |0 # <CJK>
+<U6C26> \x8F\xC6\xCD |0 # <CJK>
+<U6C27> \x8F\xC6\xCE |0 # <CJK>
+<U6C28> \x8F\xC6\xCF |0 # <CJK>
+<U6C2C> \x8F\xC6\xD0 |0 # <CJK>
+<U6C2E> \x8F\xC6\xD1 |0 # <CJK>
+<U6C33> \x8F\xC6\xD2 |0 # <CJK>
+<U6C35> \x8F\xC6\xD3 |0 # <CJK>
+<U6C36> \x8F\xC6\xD4 |0 # <CJK>
+<U6C3A> \x8F\xC6\xD5 |0 # <CJK>
+<U6C3B> \x8F\xC6\xD6 |0 # <CJK>
+<U6C3F> \x8F\xC6\xD7 |0 # <CJK>
+<U6C4A> \x8F\xC6\xD8 |0 # <CJK>
+<U6C4B> \x8F\xC6\xD9 |0 # <CJK>
+<U6C4D> \x8F\xC6\xDA |0 # <CJK>
+<U6C4F> \x8F\xC6\xDB |0 # <CJK>
+<U6C52> \x8F\xC6\xDC |0 # <CJK>
+<U6C54> \x8F\xC6\xDD |0 # <CJK>
+<U6C59> \x8F\xC6\xDE |0 # <CJK>
+<U6C5B> \x8F\xC6\xDF |0 # <CJK>
+<U6C5C> \x8F\xC6\xE0 |0 # <CJK>
+<U6C6B> \x8F\xC6\xE1 |0 # <CJK>
+<U6C6D> \x8F\xC6\xE2 |0 # <CJK>
+<U6C6F> \x8F\xC6\xE3 |0 # <CJK>
+<U6C74> \x8F\xC6\xE4 |0 # <CJK>
+<U6C76> \x8F\xC6\xE5 |0 # <CJK>
+<U6C78> \x8F\xC6\xE6 |0 # <CJK>
+<U6C79> \x8F\xC6\xE7 |0 # <CJK>
+<U6C7B> \x8F\xC6\xE8 |0 # <CJK>
+<U6C85> \x8F\xC6\xE9 |0 # <CJK>
+<U6C86> \x8F\xC6\xEA |0 # <CJK>
+<U6C87> \x8F\xC6\xEB |0 # <CJK>
+<U6C89> \x8F\xC6\xEC |0 # <CJK>
+<U6C94> \x8F\xC6\xED |0 # <CJK>
+<U6C95> \x8F\xC6\xEE |0 # <CJK>
+<U6C97> \x8F\xC6\xEF |0 # <CJK>
+<U6C98> \x8F\xC6\xF0 |0 # <CJK>
+<U6C9C> \x8F\xC6\xF1 |0 # <CJK>
+<U6C9F> \x8F\xC6\xF2 |0 # <CJK>
+<U6CB0> \x8F\xC6\xF3 |0 # <CJK>
+<U6CB2> \x8F\xC6\xF4 |0 # <CJK>
+<U6CB4> \x8F\xC6\xF5 |0 # <CJK>
+<U6CC2> \x8F\xC6\xF6 |0 # <CJK>
+<U6CC6> \x8F\xC6\xF7 |0 # <CJK>
+<U6CCD> \x8F\xC6\xF8 |0 # <CJK>
+<U6CCF> \x8F\xC6\xF9 |0 # <CJK>
+<U6CD0> \x8F\xC6\xFA |0 # <CJK>
+<U6CD1> \x8F\xC6\xFB |0 # <CJK>
+<U6CD2> \x8F\xC6\xFC |0 # <CJK>
+<U6CD4> \x8F\xC6\xFD |0 # <CJK>
+<U6CD6> \x8F\xC6\xFE |0 # <CJK>
+<U6CDA> \x8F\xC7\xA1 |0 # <CJK>
+<U6CDC> \x8F\xC7\xA2 |0 # <CJK>
+<U6CE0> \x8F\xC7\xA3 |0 # <CJK>
+<U6CE7> \x8F\xC7\xA4 |0 # <CJK>
+<U6CE9> \x8F\xC7\xA5 |0 # <CJK>
+<U6CEB> \x8F\xC7\xA6 |0 # <CJK>
+<U6CEC> \x8F\xC7\xA7 |0 # <CJK>
+<U6CEE> \x8F\xC7\xA8 |0 # <CJK>
+<U6CF2> \x8F\xC7\xA9 |0 # <CJK>
+<U6CF4> \x8F\xC7\xAA |0 # <CJK>
+<U6D04> \x8F\xC7\xAB |0 # <CJK>
+<U6D07> \x8F\xC7\xAC |0 # <CJK>
+<U6D0A> \x8F\xC7\xAD |0 # <CJK>
+<U6D0E> \x8F\xC7\xAE |0 # <CJK>
+<U6D0F> \x8F\xC7\xAF |0 # <CJK>
+<U6D11> \x8F\xC7\xB0 |0 # <CJK>
+<U6D13> \x8F\xC7\xB1 |0 # <CJK>
+<U6D1A> \x8F\xC7\xB2 |0 # <CJK>
+<U6D26> \x8F\xC7\xB3 |0 # <CJK>
+<U6D27> \x8F\xC7\xB4 |0 # <CJK>
+<U6D28> \x8F\xC7\xB5 |0 # <CJK>
+<U6C67> \x8F\xC7\xB6 |0 # <CJK>
+<U6D2E> \x8F\xC7\xB7 |0 # <CJK>
+<U6D2F> \x8F\xC7\xB8 |0 # <CJK>
+<U6D31> \x8F\xC7\xB9 |0 # <CJK>
+<U6D39> \x8F\xC7\xBA |0 # <CJK>
+<U6D3C> \x8F\xC7\xBB |0 # <CJK>
+<U6D3F> \x8F\xC7\xBC |0 # <CJK>
+<U6D57> \x8F\xC7\xBD |0 # <CJK>
+<U6D5E> \x8F\xC7\xBE |0 # <CJK>
+<U6D5F> \x8F\xC7\xBF |0 # <CJK>
+<U6D61> \x8F\xC7\xC0 |0 # <CJK>
+<U6D65> \x8F\xC7\xC1 |0 # <CJK>
+<U6D67> \x8F\xC7\xC2 |0 # <CJK>
+<U6D6F> \x8F\xC7\xC3 |0 # <CJK>
+<U6D70> \x8F\xC7\xC4 |0 # <CJK>
+<U6D7C> \x8F\xC7\xC5 |0 # <CJK>
+<U6D82> \x8F\xC7\xC6 |0 # <CJK>
+<U6D87> \x8F\xC7\xC7 |0 # <CJK>
+<U6D91> \x8F\xC7\xC8 |0 # <CJK>
+<U6D92> \x8F\xC7\xC9 |0 # <CJK>
+<U6D94> \x8F\xC7\xCA |0 # <CJK>
+<U6D96> \x8F\xC7\xCB |0 # <CJK>
+<U6D97> \x8F\xC7\xCC |0 # <CJK>
+<U6D98> \x8F\xC7\xCD |0 # <CJK>
+<U6DAA> \x8F\xC7\xCE |0 # <CJK>
+<U6DAC> \x8F\xC7\xCF |0 # <CJK>
+<U6DB4> \x8F\xC7\xD0 |0 # <CJK>
+<U6DB7> \x8F\xC7\xD1 |0 # <CJK>
+<U6DB9> \x8F\xC7\xD2 |0 # <CJK>
+<U6DBD> \x8F\xC7\xD3 |0 # <CJK>
+<U6DBF> \x8F\xC7\xD4 |0 # <CJK>
+<U6DC4> \x8F\xC7\xD5 |0 # <CJK>
+<U6DC8> \x8F\xC7\xD6 |0 # <CJK>
+<U6DCA> \x8F\xC7\xD7 |0 # <CJK>
+<U6DCE> \x8F\xC7\xD8 |0 # <CJK>
+<U6DCF> \x8F\xC7\xD9 |0 # <CJK>
+<U6DD6> \x8F\xC7\xDA |0 # <CJK>
+<U6DDB> \x8F\xC7\xDB |0 # <CJK>
+<U6DDD> \x8F\xC7\xDC |0 # <CJK>
+<U6DDF> \x8F\xC7\xDD |0 # <CJK>
+<U6DE0> \x8F\xC7\xDE |0 # <CJK>
+<U6DE2> \x8F\xC7\xDF |0 # <CJK>
+<U6DE5> \x8F\xC7\xE0 |0 # <CJK>
+<U6DE9> \x8F\xC7\xE1 |0 # <CJK>
+<U6DEF> \x8F\xC7\xE2 |0 # <CJK>
+<U6DF0> \x8F\xC7\xE3 |0 # <CJK>
+<U6DF4> \x8F\xC7\xE4 |0 # <CJK>
+<U6DF6> \x8F\xC7\xE5 |0 # <CJK>
+<U6DFC> \x8F\xC7\xE6 |0 # <CJK>
+<U6E00> \x8F\xC7\xE7 |0 # <CJK>
+<U6E04> \x8F\xC7\xE8 |0 # <CJK>
+<U6E1E> \x8F\xC7\xE9 |0 # <CJK>
+<U6E22> \x8F\xC7\xEA |0 # <CJK>
+<U6E27> \x8F\xC7\xEB |0 # <CJK>
+<U6E32> \x8F\xC7\xEC |0 # <CJK>
+<U6E36> \x8F\xC7\xED |0 # <CJK>
+<U6E39> \x8F\xC7\xEE |0 # <CJK>
+<U6E3B> \x8F\xC7\xEF |0 # <CJK>
+<U6E3C> \x8F\xC7\xF0 |0 # <CJK>
+<U6E44> \x8F\xC7\xF1 |0 # <CJK>
+<U6E45> \x8F\xC7\xF2 |0 # <CJK>
+<U6E48> \x8F\xC7\xF3 |0 # <CJK>
+<U6E49> \x8F\xC7\xF4 |0 # <CJK>
+<U6E4B> \x8F\xC7\xF5 |0 # <CJK>
+<U6E4F> \x8F\xC7\xF6 |0 # <CJK>
+<U6E51> \x8F\xC7\xF7 |0 # <CJK>
+<U6E52> \x8F\xC7\xF8 |0 # <CJK>
+<U6E53> \x8F\xC7\xF9 |0 # <CJK>
+<U6E54> \x8F\xC7\xFA |0 # <CJK>
+<U6E57> \x8F\xC7\xFB |0 # <CJK>
+<U6E5C> \x8F\xC7\xFC |0 # <CJK>
+<U6E5D> \x8F\xC7\xFD |0 # <CJK>
+<U6E5E> \x8F\xC7\xFE |0 # <CJK>
+<U6E62> \x8F\xC8\xA1 |0 # <CJK>
+<U6E63> \x8F\xC8\xA2 |0 # <CJK>
+<U6E68> \x8F\xC8\xA3 |0 # <CJK>
+<U6E73> \x8F\xC8\xA4 |0 # <CJK>
+<U6E7B> \x8F\xC8\xA5 |0 # <CJK>
+<U6E7D> \x8F\xC8\xA6 |0 # <CJK>
+<U6E8D> \x8F\xC8\xA7 |0 # <CJK>
+<U6E93> \x8F\xC8\xA8 |0 # <CJK>
+<U6E99> \x8F\xC8\xA9 |0 # <CJK>
+<U6EA0> \x8F\xC8\xAA |0 # <CJK>
+<U6EA7> \x8F\xC8\xAB |0 # <CJK>
+<U6EAD> \x8F\xC8\xAC |0 # <CJK>
+<U6EAE> \x8F\xC8\xAD |0 # <CJK>
+<U6EB1> \x8F\xC8\xAE |0 # <CJK>
+<U6EB3> \x8F\xC8\xAF |0 # <CJK>
+<U6EBB> \x8F\xC8\xB0 |0 # <CJK>
+<U6EBF> \x8F\xC8\xB1 |0 # <CJK>
+<U6EC0> \x8F\xC8\xB2 |0 # <CJK>
+<U6EC1> \x8F\xC8\xB3 |0 # <CJK>
+<U6EC3> \x8F\xC8\xB4 |0 # <CJK>
+<U6EC7> \x8F\xC8\xB5 |0 # <CJK>
+<U6EC8> \x8F\xC8\xB6 |0 # <CJK>
+<U6ECA> \x8F\xC8\xB7 |0 # <CJK>
+<U6ECD> \x8F\xC8\xB8 |0 # <CJK>
+<U6ECE> \x8F\xC8\xB9 |0 # <CJK>
+<U6ECF> \x8F\xC8\xBA |0 # <CJK>
+<U6EEB> \x8F\xC8\xBB |0 # <CJK>
+<U6EED> \x8F\xC8\xBC |0 # <CJK>
+<U6EEE> \x8F\xC8\xBD |0 # <CJK>
+<U6EF9> \x8F\xC8\xBE |0 # <CJK>
+<U6EFB> \x8F\xC8\xBF |0 # <CJK>
+<U6EFD> \x8F\xC8\xC0 |0 # <CJK>
+<U6F04> \x8F\xC8\xC1 |0 # <CJK>
+<U6F08> \x8F\xC8\xC2 |0 # <CJK>
+<U6F0A> \x8F\xC8\xC3 |0 # <CJK>
+<U6F0C> \x8F\xC8\xC4 |0 # <CJK>
+<U6F0D> \x8F\xC8\xC5 |0 # <CJK>
+<U6F16> \x8F\xC8\xC6 |0 # <CJK>
+<U6F18> \x8F\xC8\xC7 |0 # <CJK>
+<U6F1A> \x8F\xC8\xC8 |0 # <CJK>
+<U6F1B> \x8F\xC8\xC9 |0 # <CJK>
+<U6F26> \x8F\xC8\xCA |0 # <CJK>
+<U6F29> \x8F\xC8\xCB |0 # <CJK>
+<U6F2A> \x8F\xC8\xCC |0 # <CJK>
+<U6F2F> \x8F\xC8\xCD |0 # <CJK>
+<U6F30> \x8F\xC8\xCE |0 # <CJK>
+<U6F33> \x8F\xC8\xCF |0 # <CJK>
+<U6F36> \x8F\xC8\xD0 |0 # <CJK>
+<U6F3B> \x8F\xC8\xD1 |0 # <CJK>
+<U6F3C> \x8F\xC8\xD2 |0 # <CJK>
+<U6F2D> \x8F\xC8\xD3 |0 # <CJK>
+<U6F4F> \x8F\xC8\xD4 |0 # <CJK>
+<U6F51> \x8F\xC8\xD5 |0 # <CJK>
+<U6F52> \x8F\xC8\xD6 |0 # <CJK>
+<U6F53> \x8F\xC8\xD7 |0 # <CJK>
+<U6F57> \x8F\xC8\xD8 |0 # <CJK>
+<U6F59> \x8F\xC8\xD9 |0 # <CJK>
+<U6F5A> \x8F\xC8\xDA |0 # <CJK>
+<U6F5D> \x8F\xC8\xDB |0 # <CJK>
+<U6F5E> \x8F\xC8\xDC |0 # <CJK>
+<U6F61> \x8F\xC8\xDD |0 # <CJK>
+<U6F62> \x8F\xC8\xDE |0 # <CJK>
+<U6F68> \x8F\xC8\xDF |0 # <CJK>
+<U6F6C> \x8F\xC8\xE0 |0 # <CJK>
+<U6F7D> \x8F\xC8\xE1 |0 # <CJK>
+<U6F7E> \x8F\xC8\xE2 |0 # <CJK>
+<U6F83> \x8F\xC8\xE3 |0 # <CJK>
+<U6F87> \x8F\xC8\xE4 |0 # <CJK>
+<U6F88> \x8F\xC8\xE5 |0 # <CJK>
+<U6F8B> \x8F\xC8\xE6 |0 # <CJK>
+<U6F8C> \x8F\xC8\xE7 |0 # <CJK>
+<U6F8D> \x8F\xC8\xE8 |0 # <CJK>
+<U6F90> \x8F\xC8\xE9 |0 # <CJK>
+<U6F92> \x8F\xC8\xEA |0 # <CJK>
+<U6F93> \x8F\xC8\xEB |0 # <CJK>
+<U6F94> \x8F\xC8\xEC |0 # <CJK>
+<U6F96> \x8F\xC8\xED |0 # <CJK>
+<U6F9A> \x8F\xC8\xEE |0 # <CJK>
+<U6F9F> \x8F\xC8\xEF |0 # <CJK>
+<U6FA0> \x8F\xC8\xF0 |0 # <CJK>
+<U6FA5> \x8F\xC8\xF1 |0 # <CJK>
+<U6FA6> \x8F\xC8\xF2 |0 # <CJK>
+<U6FA7> \x8F\xC8\xF3 |0 # <CJK>
+<U6FA8> \x8F\xC8\xF4 |0 # <CJK>
+<U6FAE> \x8F\xC8\xF5 |0 # <CJK>
+<U6FAF> \x8F\xC8\xF6 |0 # <CJK>
+<U6FB0> \x8F\xC8\xF7 |0 # <CJK>
+<U6FB5> \x8F\xC8\xF8 |0 # <CJK>
+<U6FB6> \x8F\xC8\xF9 |0 # <CJK>
+<U6FBC> \x8F\xC8\xFA |0 # <CJK>
+<U6FC5> \x8F\xC8\xFB |0 # <CJK>
+<U6FC7> \x8F\xC8\xFC |0 # <CJK>
+<U6FC8> \x8F\xC8\xFD |0 # <CJK>
+<U6FCA> \x8F\xC8\xFE |0 # <CJK>
+<U6FDA> \x8F\xC9\xA1 |0 # <CJK>
+<U6FDE> \x8F\xC9\xA2 |0 # <CJK>
+<U6FE8> \x8F\xC9\xA3 |0 # <CJK>
+<U6FE9> \x8F\xC9\xA4 |0 # <CJK>
+<U6FF0> \x8F\xC9\xA5 |0 # <CJK>
+<U6FF5> \x8F\xC9\xA6 |0 # <CJK>
+<U6FF9> \x8F\xC9\xA7 |0 # <CJK>
+<U6FFC> \x8F\xC9\xA8 |0 # <CJK>
+<U6FFD> \x8F\xC9\xA9 |0 # <CJK>
+<U7000> \x8F\xC9\xAA |0 # <CJK>
+<U7005> \x8F\xC9\xAB |0 # <CJK>
+<U7006> \x8F\xC9\xAC |0 # <CJK>
+<U7007> \x8F\xC9\xAD |0 # <CJK>
+<U700D> \x8F\xC9\xAE |0 # <CJK>
+<U7017> \x8F\xC9\xAF |0 # <CJK>
+<U7020> \x8F\xC9\xB0 |0 # <CJK>
+<U7023> \x8F\xC9\xB1 |0 # <CJK>
+<U702F> \x8F\xC9\xB2 |0 # <CJK>
+<U7034> \x8F\xC9\xB3 |0 # <CJK>
+<U7037> \x8F\xC9\xB4 |0 # <CJK>
+<U7039> \x8F\xC9\xB5 |0 # <CJK>
+<U703C> \x8F\xC9\xB6 |0 # <CJK>
+<U7043> \x8F\xC9\xB7 |0 # <CJK>
+<U7044> \x8F\xC9\xB8 |0 # <CJK>
+<U7048> \x8F\xC9\xB9 |0 # <CJK>
+<U7049> \x8F\xC9\xBA |0 # <CJK>
+<U704A> \x8F\xC9\xBB |0 # <CJK>
+<U704B> \x8F\xC9\xBC |0 # <CJK>
+<U7054> \x8F\xC9\xBD |0 # <CJK>
+<U7055> \x8F\xC9\xBE |0 # <CJK>
+<U705D> \x8F\xC9\xBF |0 # <CJK>
+<U705E> \x8F\xC9\xC0 |0 # <CJK>
+<U704E> \x8F\xC9\xC1 |0 # <CJK>
+<U7064> \x8F\xC9\xC2 |0 # <CJK>
+<U7065> \x8F\xC9\xC3 |0 # <CJK>
+<U706C> \x8F\xC9\xC4 |0 # <CJK>
+<U706E> \x8F\xC9\xC5 |0 # <CJK>
+<U7075> \x8F\xC9\xC6 |0 # <CJK>
+<U7076> \x8F\xC9\xC7 |0 # <CJK>
+<U707E> \x8F\xC9\xC8 |0 # <CJK>
+<U7081> \x8F\xC9\xC9 |0 # <CJK>
+<U7085> \x8F\xC9\xCA |0 # <CJK>
+<U7086> \x8F\xC9\xCB |0 # <CJK>
+<U7094> \x8F\xC9\xCC |0 # <CJK>
+<U7095> \x8F\xC9\xCD |0 # <CJK>
+<U7096> \x8F\xC9\xCE |0 # <CJK>
+<U7097> \x8F\xC9\xCF |0 # <CJK>
+<U7098> \x8F\xC9\xD0 |0 # <CJK>
+<U709B> \x8F\xC9\xD1 |0 # <CJK>
+<U70A4> \x8F\xC9\xD2 |0 # <CJK>
+<U70AB> \x8F\xC9\xD3 |0 # <CJK>
+<U70B0> \x8F\xC9\xD4 |0 # <CJK>
+<U70B1> \x8F\xC9\xD5 |0 # <CJK>
+<U70B4> \x8F\xC9\xD6 |0 # <CJK>
+<U70B7> \x8F\xC9\xD7 |0 # <CJK>
+<U70CA> \x8F\xC9\xD8 |0 # <CJK>
+<U70D1> \x8F\xC9\xD9 |0 # <CJK>
+<U70D3> \x8F\xC9\xDA |0 # <CJK>
+<U70D4> \x8F\xC9\xDB |0 # <CJK>
+<U70D5> \x8F\xC9\xDC |0 # <CJK>
+<U70D6> \x8F\xC9\xDD |0 # <CJK>
+<U70D8> \x8F\xC9\xDE |0 # <CJK>
+<U70DC> \x8F\xC9\xDF |0 # <CJK>
+<U70E4> \x8F\xC9\xE0 |0 # <CJK>
+<U70FA> \x8F\xC9\xE1 |0 # <CJK>
+<U7103> \x8F\xC9\xE2 |0 # <CJK>
+<U7104> \x8F\xC9\xE3 |0 # <CJK>
+<U7105> \x8F\xC9\xE4 |0 # <CJK>
+<U7106> \x8F\xC9\xE5 |0 # <CJK>
+<U7107> \x8F\xC9\xE6 |0 # <CJK>
+<U710B> \x8F\xC9\xE7 |0 # <CJK>
+<U710C> \x8F\xC9\xE8 |0 # <CJK>
+<U710F> \x8F\xC9\xE9 |0 # <CJK>
+<U711E> \x8F\xC9\xEA |0 # <CJK>
+<U7120> \x8F\xC9\xEB |0 # <CJK>
+<U712B> \x8F\xC9\xEC |0 # <CJK>
+<U712D> \x8F\xC9\xED |0 # <CJK>
+<U712F> \x8F\xC9\xEE |0 # <CJK>
+<U7130> \x8F\xC9\xEF |0 # <CJK>
+<U7131> \x8F\xC9\xF0 |0 # <CJK>
+<U7138> \x8F\xC9\xF1 |0 # <CJK>
+<U7141> \x8F\xC9\xF2 |0 # <CJK>
+<U7145> \x8F\xC9\xF3 |0 # <CJK>
+<U7146> \x8F\xC9\xF4 |0 # <CJK>
+<U7147> \x8F\xC9\xF5 |0 # <CJK>
+<U714A> \x8F\xC9\xF6 |0 # <CJK>
+<U714B> \x8F\xC9\xF7 |0 # <CJK>
+<U7150> \x8F\xC9\xF8 |0 # <CJK>
+<U7152> \x8F\xC9\xF9 |0 # <CJK>
+<U7157> \x8F\xC9\xFA |0 # <CJK>
+<U715A> \x8F\xC9\xFB |0 # <CJK>
+<U715C> \x8F\xC9\xFC |0 # <CJK>
+<U715E> \x8F\xC9\xFD |0 # <CJK>
+<U7160> \x8F\xC9\xFE |0 # <CJK>
+<U7168> \x8F\xCA\xA1 |0 # <CJK>
+<U7179> \x8F\xCA\xA2 |0 # <CJK>
+<U7180> \x8F\xCA\xA3 |0 # <CJK>
+<U7185> \x8F\xCA\xA4 |0 # <CJK>
+<U7187> \x8F\xCA\xA5 |0 # <CJK>
+<U718C> \x8F\xCA\xA6 |0 # <CJK>
+<U7192> \x8F\xCA\xA7 |0 # <CJK>
+<U719A> \x8F\xCA\xA8 |0 # <CJK>
+<U719B> \x8F\xCA\xA9 |0 # <CJK>
+<U71A0> \x8F\xCA\xAA |0 # <CJK>
+<U71A2> \x8F\xCA\xAB |0 # <CJK>
+<U71AF> \x8F\xCA\xAC |0 # <CJK>
+<U71B0> \x8F\xCA\xAD |0 # <CJK>
+<U71B2> \x8F\xCA\xAE |0 # <CJK>
+<U71B3> \x8F\xCA\xAF |0 # <CJK>
+<U71BA> \x8F\xCA\xB0 |0 # <CJK>
+<U71BF> \x8F\xCA\xB1 |0 # <CJK>
+<U71C0> \x8F\xCA\xB2 |0 # <CJK>
+<U71C1> \x8F\xCA\xB3 |0 # <CJK>
+<U71C4> \x8F\xCA\xB4 |0 # <CJK>
+<U71CB> \x8F\xCA\xB5 |0 # <CJK>
+<U71CC> \x8F\xCA\xB6 |0 # <CJK>
+<U71D3> \x8F\xCA\xB7 |0 # <CJK>
+<U71D6> \x8F\xCA\xB8 |0 # <CJK>
+<U71D9> \x8F\xCA\xB9 |0 # <CJK>
+<U71DA> \x8F\xCA\xBA |0 # <CJK>
+<U71DC> \x8F\xCA\xBB |0 # <CJK>
+<U71F8> \x8F\xCA\xBC |0 # <CJK>
+<U71FE> \x8F\xCA\xBD |0 # <CJK>
+<U7200> \x8F\xCA\xBE |0 # <CJK>
+<U7207> \x8F\xCA\xBF |0 # <CJK>
+<U7208> \x8F\xCA\xC0 |0 # <CJK>
+<U7209> \x8F\xCA\xC1 |0 # <CJK>
+<U7213> \x8F\xCA\xC2 |0 # <CJK>
+<U7217> \x8F\xCA\xC3 |0 # <CJK>
+<U721A> \x8F\xCA\xC4 |0 # <CJK>
+<U721D> \x8F\xCA\xC5 |0 # <CJK>
+<U721F> \x8F\xCA\xC6 |0 # <CJK>
+<U7224> \x8F\xCA\xC7 |0 # <CJK>
+<U722B> \x8F\xCA\xC8 |0 # <CJK>
+<U722F> \x8F\xCA\xC9 |0 # <CJK>
+<U7234> \x8F\xCA\xCA |0 # <CJK>
+<U7238> \x8F\xCA\xCB |0 # <CJK>
+<U7239> \x8F\xCA\xCC |0 # <CJK>
+<U7241> \x8F\xCA\xCD |0 # <CJK>
+<U7242> \x8F\xCA\xCE |0 # <CJK>
+<U7243> \x8F\xCA\xCF |0 # <CJK>
+<U7245> \x8F\xCA\xD0 |0 # <CJK>
+<U724E> \x8F\xCA\xD1 |0 # <CJK>
+<U724F> \x8F\xCA\xD2 |0 # <CJK>
+<U7250> \x8F\xCA\xD3 |0 # <CJK>
+<U7253> \x8F\xCA\xD4 |0 # <CJK>
+<U7255> \x8F\xCA\xD5 |0 # <CJK>
+<U7256> \x8F\xCA\xD6 |0 # <CJK>
+<U725A> \x8F\xCA\xD7 |0 # <CJK>
+<U725C> \x8F\xCA\xD8 |0 # <CJK>
+<U725E> \x8F\xCA\xD9 |0 # <CJK>
+<U7260> \x8F\xCA\xDA |0 # <CJK>
+<U7263> \x8F\xCA\xDB |0 # <CJK>
+<U7268> \x8F\xCA\xDC |0 # <CJK>
+<U726B> \x8F\xCA\xDD |0 # <CJK>
+<U726E> \x8F\xCA\xDE |0 # <CJK>
+<U726F> \x8F\xCA\xDF |0 # <CJK>
+<U7271> \x8F\xCA\xE0 |0 # <CJK>
+<U7277> \x8F\xCA\xE1 |0 # <CJK>
+<U7278> \x8F\xCA\xE2 |0 # <CJK>
+<U727B> \x8F\xCA\xE3 |0 # <CJK>
+<U727C> \x8F\xCA\xE4 |0 # <CJK>
+<U727F> \x8F\xCA\xE5 |0 # <CJK>
+<U7284> \x8F\xCA\xE6 |0 # <CJK>
+<U7289> \x8F\xCA\xE7 |0 # <CJK>
+<U728D> \x8F\xCA\xE8 |0 # <CJK>
+<U728E> \x8F\xCA\xE9 |0 # <CJK>
+<U7293> \x8F\xCA\xEA |0 # <CJK>
+<U729B> \x8F\xCA\xEB |0 # <CJK>
+<U72A8> \x8F\xCA\xEC |0 # <CJK>
+<U72AD> \x8F\xCA\xED |0 # <CJK>
+<U72AE> \x8F\xCA\xEE |0 # <CJK>
+<U72B1> \x8F\xCA\xEF |0 # <CJK>
+<U72B4> \x8F\xCA\xF0 |0 # <CJK>
+<U72BE> \x8F\xCA\xF1 |0 # <CJK>
+<U72C1> \x8F\xCA\xF2 |0 # <CJK>
+<U72C7> \x8F\xCA\xF3 |0 # <CJK>
+<U72C9> \x8F\xCA\xF4 |0 # <CJK>
+<U72CC> \x8F\xCA\xF5 |0 # <CJK>
+<U72D5> \x8F\xCA\xF6 |0 # <CJK>
+<U72D6> \x8F\xCA\xF7 |0 # <CJK>
+<U72D8> \x8F\xCA\xF8 |0 # <CJK>
+<U72DF> \x8F\xCA\xF9 |0 # <CJK>
+<U72E5> \x8F\xCA\xFA |0 # <CJK>
+<U72F3> \x8F\xCA\xFB |0 # <CJK>
+<U72F4> \x8F\xCA\xFC |0 # <CJK>
+<U72FA> \x8F\xCA\xFD |0 # <CJK>
+<U72FB> \x8F\xCA\xFE |0 # <CJK>
+<U72FE> \x8F\xCB\xA1 |0 # <CJK>
+<U7302> \x8F\xCB\xA2 |0 # <CJK>
+<U7304> \x8F\xCB\xA3 |0 # <CJK>
+<U7305> \x8F\xCB\xA4 |0 # <CJK>
+<U7307> \x8F\xCB\xA5 |0 # <CJK>
+<U730B> \x8F\xCB\xA6 |0 # <CJK>
+<U730D> \x8F\xCB\xA7 |0 # <CJK>
+<U7312> \x8F\xCB\xA8 |0 # <CJK>
+<U7313> \x8F\xCB\xA9 |0 # <CJK>
+<U7318> \x8F\xCB\xAA |0 # <CJK>
+<U7319> \x8F\xCB\xAB |0 # <CJK>
+<U731E> \x8F\xCB\xAC |0 # <CJK>
+<U7322> \x8F\xCB\xAD |0 # <CJK>
+<U7324> \x8F\xCB\xAE |0 # <CJK>
+<U7327> \x8F\xCB\xAF |0 # <CJK>
+<U7328> \x8F\xCB\xB0 |0 # <CJK>
+<U732C> \x8F\xCB\xB1 |0 # <CJK>
+<U7331> \x8F\xCB\xB2 |0 # <CJK>
+<U7332> \x8F\xCB\xB3 |0 # <CJK>
+<U7335> \x8F\xCB\xB4 |0 # <CJK>
+<U733A> \x8F\xCB\xB5 |0 # <CJK>
+<U733B> \x8F\xCB\xB6 |0 # <CJK>
+<U733D> \x8F\xCB\xB7 |0 # <CJK>
+<U7343> \x8F\xCB\xB8 |0 # <CJK>
+<U734D> \x8F\xCB\xB9 |0 # <CJK>
+<U7350> \x8F\xCB\xBA |0 # <CJK>
+<U7352> \x8F\xCB\xBB |0 # <CJK>
+<U7356> \x8F\xCB\xBC |0 # <CJK>
+<U7358> \x8F\xCB\xBD |0 # <CJK>
+<U735D> \x8F\xCB\xBE |0 # <CJK>
+<U735E> \x8F\xCB\xBF |0 # <CJK>
+<U735F> \x8F\xCB\xC0 |0 # <CJK>
+<U7360> \x8F\xCB\xC1 |0 # <CJK>
+<U7366> \x8F\xCB\xC2 |0 # <CJK>
+<U7367> \x8F\xCB\xC3 |0 # <CJK>
+<U7369> \x8F\xCB\xC4 |0 # <CJK>
+<U736B> \x8F\xCB\xC5 |0 # <CJK>
+<U736C> \x8F\xCB\xC6 |0 # <CJK>
+<U736E> \x8F\xCB\xC7 |0 # <CJK>
+<U736F> \x8F\xCB\xC8 |0 # <CJK>
+<U7371> \x8F\xCB\xC9 |0 # <CJK>
+<U7377> \x8F\xCB\xCA |0 # <CJK>
+<U7379> \x8F\xCB\xCB |0 # <CJK>
+<U737C> \x8F\xCB\xCC |0 # <CJK>
+<U7380> \x8F\xCB\xCD |0 # <CJK>
+<U7381> \x8F\xCB\xCE |0 # <CJK>
+<U7383> \x8F\xCB\xCF |0 # <CJK>
+<U7385> \x8F\xCB\xD0 |0 # <CJK>
+<U7386> \x8F\xCB\xD1 |0 # <CJK>
+<U738E> \x8F\xCB\xD2 |0 # <CJK>
+<U7390> \x8F\xCB\xD3 |0 # <CJK>
+<U7393> \x8F\xCB\xD4 |0 # <CJK>
+<U7395> \x8F\xCB\xD5 |0 # <CJK>
+<U7397> \x8F\xCB\xD6 |0 # <CJK>
+<U7398> \x8F\xCB\xD7 |0 # <CJK>
+<U739C> \x8F\xCB\xD8 |0 # <CJK>
+<U739E> \x8F\xCB\xD9 |0 # <CJK>
+<U739F> \x8F\xCB\xDA |0 # <CJK>
+<U73A0> \x8F\xCB\xDB |0 # <CJK>
+<U73A2> \x8F\xCB\xDC |0 # <CJK>
+<U73A5> \x8F\xCB\xDD |0 # <CJK>
+<U73A6> \x8F\xCB\xDE |0 # <CJK>
+<U73AA> \x8F\xCB\xDF |0 # <CJK>
+<U73AB> \x8F\xCB\xE0 |0 # <CJK>
+<U73AD> \x8F\xCB\xE1 |0 # <CJK>
+<U73B5> \x8F\xCB\xE2 |0 # <CJK>
+<U73B7> \x8F\xCB\xE3 |0 # <CJK>
+<U73B9> \x8F\xCB\xE4 |0 # <CJK>
+<U73BC> \x8F\xCB\xE5 |0 # <CJK>
+<U73BD> \x8F\xCB\xE6 |0 # <CJK>
+<U73BF> \x8F\xCB\xE7 |0 # <CJK>
+<U73C5> \x8F\xCB\xE8 |0 # <CJK>
+<U73C6> \x8F\xCB\xE9 |0 # <CJK>
+<U73C9> \x8F\xCB\xEA |0 # <CJK>
+<U73CB> \x8F\xCB\xEB |0 # <CJK>
+<U73CC> \x8F\xCB\xEC |0 # <CJK>
+<U73CF> \x8F\xCB\xED |0 # <CJK>
+<U73D2> \x8F\xCB\xEE |0 # <CJK>
+<U73D3> \x8F\xCB\xEF |0 # <CJK>
+<U73D6> \x8F\xCB\xF0 |0 # <CJK>
+<U73D9> \x8F\xCB\xF1 |0 # <CJK>
+<U73DD> \x8F\xCB\xF2 |0 # <CJK>
+<U73E1> \x8F\xCB\xF3 |0 # <CJK>
+<U73E3> \x8F\xCB\xF4 |0 # <CJK>
+<U73E6> \x8F\xCB\xF5 |0 # <CJK>
+<U73E7> \x8F\xCB\xF6 |0 # <CJK>
+<U73E9> \x8F\xCB\xF7 |0 # <CJK>
+<U73F4> \x8F\xCB\xF8 |0 # <CJK>
+<U73F5> \x8F\xCB\xF9 |0 # <CJK>
+<U73F7> \x8F\xCB\xFA |0 # <CJK>
+<U73F9> \x8F\xCB\xFB |0 # <CJK>
+<U73FA> \x8F\xCB\xFC |0 # <CJK>
+<U73FB> \x8F\xCB\xFD |0 # <CJK>
+<U73FD> \x8F\xCB\xFE |0 # <CJK>
+<U73FF> \x8F\xCC\xA1 |0 # <CJK>
+<U7400> \x8F\xCC\xA2 |0 # <CJK>
+<U7401> \x8F\xCC\xA3 |0 # <CJK>
+<U7404> \x8F\xCC\xA4 |0 # <CJK>
+<U7407> \x8F\xCC\xA5 |0 # <CJK>
+<U740A> \x8F\xCC\xA6 |0 # <CJK>
+<U7411> \x8F\xCC\xA7 |0 # <CJK>
+<U741A> \x8F\xCC\xA8 |0 # <CJK>
+<U741B> \x8F\xCC\xA9 |0 # <CJK>
+<U7424> \x8F\xCC\xAA |0 # <CJK>
+<U7426> \x8F\xCC\xAB |0 # <CJK>
+<U7428> \x8F\xCC\xAC |0 # <CJK>
+<U7429> \x8F\xCC\xAD |0 # <CJK>
+<U742A> \x8F\xCC\xAE |0 # <CJK>
+<U742B> \x8F\xCC\xAF |0 # <CJK>
+<U742C> \x8F\xCC\xB0 |0 # <CJK>
+<U742D> \x8F\xCC\xB1 |0 # <CJK>
+<U742E> \x8F\xCC\xB2 |0 # <CJK>
+<U742F> \x8F\xCC\xB3 |0 # <CJK>
+<U7430> \x8F\xCC\xB4 |0 # <CJK>
+<U7431> \x8F\xCC\xB5 |0 # <CJK>
+<U7439> \x8F\xCC\xB6 |0 # <CJK>
+<U7440> \x8F\xCC\xB7 |0 # <CJK>
+<U7443> \x8F\xCC\xB8 |0 # <CJK>
+<U7444> \x8F\xCC\xB9 |0 # <CJK>
+<U7446> \x8F\xCC\xBA |0 # <CJK>
+<U7447> \x8F\xCC\xBB |0 # <CJK>
+<U744B> \x8F\xCC\xBC |0 # <CJK>
+<U744D> \x8F\xCC\xBD |0 # <CJK>
+<U7451> \x8F\xCC\xBE |0 # <CJK>
+<U7452> \x8F\xCC\xBF |0 # <CJK>
+<U7457> \x8F\xCC\xC0 |0 # <CJK>
+<U745D> \x8F\xCC\xC1 |0 # <CJK>
+<U7462> \x8F\xCC\xC2 |0 # <CJK>
+<U7466> \x8F\xCC\xC3 |0 # <CJK>
+<U7467> \x8F\xCC\xC4 |0 # <CJK>
+<U7468> \x8F\xCC\xC5 |0 # <CJK>
+<U746B> \x8F\xCC\xC6 |0 # <CJK>
+<U746D> \x8F\xCC\xC7 |0 # <CJK>
+<U746E> \x8F\xCC\xC8 |0 # <CJK>
+<U7471> \x8F\xCC\xC9 |0 # <CJK>
+<U7472> \x8F\xCC\xCA |0 # <CJK>
+<U7480> \x8F\xCC\xCB |0 # <CJK>
+<U7481> \x8F\xCC\xCC |0 # <CJK>
+<U7485> \x8F\xCC\xCD |0 # <CJK>
+<U7486> \x8F\xCC\xCE |0 # <CJK>
+<U7487> \x8F\xCC\xCF |0 # <CJK>
+<U7489> \x8F\xCC\xD0 |0 # <CJK>
+<U748F> \x8F\xCC\xD1 |0 # <CJK>
+<U7490> \x8F\xCC\xD2 |0 # <CJK>
+<U7491> \x8F\xCC\xD3 |0 # <CJK>
+<U7492> \x8F\xCC\xD4 |0 # <CJK>
+<U7498> \x8F\xCC\xD5 |0 # <CJK>
+<U7499> \x8F\xCC\xD6 |0 # <CJK>
+<U749A> \x8F\xCC\xD7 |0 # <CJK>
+<U749C> \x8F\xCC\xD8 |0 # <CJK>
+<U749F> \x8F\xCC\xD9 |0 # <CJK>
+<U74A0> \x8F\xCC\xDA |0 # <CJK>
+<U74A1> \x8F\xCC\xDB |0 # <CJK>
+<U74A3> \x8F\xCC\xDC |0 # <CJK>
+<U74A6> \x8F\xCC\xDD |0 # <CJK>
+<U74A8> \x8F\xCC\xDE |0 # <CJK>
+<U74A9> \x8F\xCC\xDF |0 # <CJK>
+<U74AA> \x8F\xCC\xE0 |0 # <CJK>
+<U74AB> \x8F\xCC\xE1 |0 # <CJK>
+<U74AE> \x8F\xCC\xE2 |0 # <CJK>
+<U74AF> \x8F\xCC\xE3 |0 # <CJK>
+<U74B1> \x8F\xCC\xE4 |0 # <CJK>
+<U74B2> \x8F\xCC\xE5 |0 # <CJK>
+<U74B5> \x8F\xCC\xE6 |0 # <CJK>
+<U74B9> \x8F\xCC\xE7 |0 # <CJK>
+<U74BB> \x8F\xCC\xE8 |0 # <CJK>
+<U74BF> \x8F\xCC\xE9 |0 # <CJK>
+<U74C8> \x8F\xCC\xEA |0 # <CJK>
+<U74C9> \x8F\xCC\xEB |0 # <CJK>
+<U74CC> \x8F\xCC\xEC |0 # <CJK>
+<U74D0> \x8F\xCC\xED |0 # <CJK>
+<U74D3> \x8F\xCC\xEE |0 # <CJK>
+<U74D8> \x8F\xCC\xEF |0 # <CJK>
+<U74DA> \x8F\xCC\xF0 |0 # <CJK>
+<U74DB> \x8F\xCC\xF1 |0 # <CJK>
+<U74DE> \x8F\xCC\xF2 |0 # <CJK>
+<U74DF> \x8F\xCC\xF3 |0 # <CJK>
+<U74E4> \x8F\xCC\xF4 |0 # <CJK>
+<U74E8> \x8F\xCC\xF5 |0 # <CJK>
+<U74EA> \x8F\xCC\xF6 |0 # <CJK>
+<U74EB> \x8F\xCC\xF7 |0 # <CJK>
+<U74EF> \x8F\xCC\xF8 |0 # <CJK>
+<U74F4> \x8F\xCC\xF9 |0 # <CJK>
+<U74FA> \x8F\xCC\xFA |0 # <CJK>
+<U74FB> \x8F\xCC\xFB |0 # <CJK>
+<U74FC> \x8F\xCC\xFC |0 # <CJK>
+<U74FF> \x8F\xCC\xFD |0 # <CJK>
+<U7506> \x8F\xCC\xFE |0 # <CJK>
+<U7512> \x8F\xCD\xA1 |0 # <CJK>
+<U7516> \x8F\xCD\xA2 |0 # <CJK>
+<U7517> \x8F\xCD\xA3 |0 # <CJK>
+<U7520> \x8F\xCD\xA4 |0 # <CJK>
+<U7521> \x8F\xCD\xA5 |0 # <CJK>
+<U7524> \x8F\xCD\xA6 |0 # <CJK>
+<U7527> \x8F\xCD\xA7 |0 # <CJK>
+<U7529> \x8F\xCD\xA8 |0 # <CJK>
+<U752A> \x8F\xCD\xA9 |0 # <CJK>
+<U752F> \x8F\xCD\xAA |0 # <CJK>
+<U7536> \x8F\xCD\xAB |0 # <CJK>
+<U7539> \x8F\xCD\xAC |0 # <CJK>
+<U753D> \x8F\xCD\xAD |0 # <CJK>
+<U753E> \x8F\xCD\xAE |0 # <CJK>
+<U753F> \x8F\xCD\xAF |0 # <CJK>
+<U7540> \x8F\xCD\xB0 |0 # <CJK>
+<U7543> \x8F\xCD\xB1 |0 # <CJK>
+<U7547> \x8F\xCD\xB2 |0 # <CJK>
+<U7548> \x8F\xCD\xB3 |0 # <CJK>
+<U754E> \x8F\xCD\xB4 |0 # <CJK>
+<U7550> \x8F\xCD\xB5 |0 # <CJK>
+<U7552> \x8F\xCD\xB6 |0 # <CJK>
+<U7557> \x8F\xCD\xB7 |0 # <CJK>
+<U755E> \x8F\xCD\xB8 |0 # <CJK>
+<U755F> \x8F\xCD\xB9 |0 # <CJK>
+<U7561> \x8F\xCD\xBA |0 # <CJK>
+<U756F> \x8F\xCD\xBB |0 # <CJK>
+<U7571> \x8F\xCD\xBC |0 # <CJK>
+<U7579> \x8F\xCD\xBD |0 # <CJK>
+<U757A> \x8F\xCD\xBE |0 # <CJK>
+<U757B> \x8F\xCD\xBF |0 # <CJK>
+<U757C> \x8F\xCD\xC0 |0 # <CJK>
+<U757D> \x8F\xCD\xC1 |0 # <CJK>
+<U757E> \x8F\xCD\xC2 |0 # <CJK>
+<U7581> \x8F\xCD\xC3 |0 # <CJK>
+<U7585> \x8F\xCD\xC4 |0 # <CJK>
+<U7590> \x8F\xCD\xC5 |0 # <CJK>
+<U7592> \x8F\xCD\xC6 |0 # <CJK>
+<U7593> \x8F\xCD\xC7 |0 # <CJK>
+<U7595> \x8F\xCD\xC8 |0 # <CJK>
+<U7599> \x8F\xCD\xC9 |0 # <CJK>
+<U759C> \x8F\xCD\xCA |0 # <CJK>
+<U75A2> \x8F\xCD\xCB |0 # <CJK>
+<U75A4> \x8F\xCD\xCC |0 # <CJK>
+<U75B4> \x8F\xCD\xCD |0 # <CJK>
+<U75BA> \x8F\xCD\xCE |0 # <CJK>
+<U75BF> \x8F\xCD\xCF |0 # <CJK>
+<U75C0> \x8F\xCD\xD0 |0 # <CJK>
+<U75C1> \x8F\xCD\xD1 |0 # <CJK>
+<U75C4> \x8F\xCD\xD2 |0 # <CJK>
+<U75C6> \x8F\xCD\xD3 |0 # <CJK>
+<U75CC> \x8F\xCD\xD4 |0 # <CJK>
+<U75CE> \x8F\xCD\xD5 |0 # <CJK>
+<U75CF> \x8F\xCD\xD6 |0 # <CJK>
+<U75D7> \x8F\xCD\xD7 |0 # <CJK>
+<U75DC> \x8F\xCD\xD8 |0 # <CJK>
+<U75DF> \x8F\xCD\xD9 |0 # <CJK>
+<U75E0> \x8F\xCD\xDA |0 # <CJK>
+<U75E1> \x8F\xCD\xDB |0 # <CJK>
+<U75E4> \x8F\xCD\xDC |0 # <CJK>
+<U75E7> \x8F\xCD\xDD |0 # <CJK>
+<U75EC> \x8F\xCD\xDE |0 # <CJK>
+<U75EE> \x8F\xCD\xDF |0 # <CJK>
+<U75EF> \x8F\xCD\xE0 |0 # <CJK>
+<U75F1> \x8F\xCD\xE1 |0 # <CJK>
+<U75F9> \x8F\xCD\xE2 |0 # <CJK>
+<U7600> \x8F\xCD\xE3 |0 # <CJK>
+<U7602> \x8F\xCD\xE4 |0 # <CJK>
+<U7603> \x8F\xCD\xE5 |0 # <CJK>
+<U7604> \x8F\xCD\xE6 |0 # <CJK>
+<U7607> \x8F\xCD\xE7 |0 # <CJK>
+<U7608> \x8F\xCD\xE8 |0 # <CJK>
+<U760A> \x8F\xCD\xE9 |0 # <CJK>
+<U760C> \x8F\xCD\xEA |0 # <CJK>
+<U760F> \x8F\xCD\xEB |0 # <CJK>
+<U7612> \x8F\xCD\xEC |0 # <CJK>
+<U7613> \x8F\xCD\xED |0 # <CJK>
+<U7615> \x8F\xCD\xEE |0 # <CJK>
+<U7616> \x8F\xCD\xEF |0 # <CJK>
+<U7619> \x8F\xCD\xF0 |0 # <CJK>
+<U761B> \x8F\xCD\xF1 |0 # <CJK>
+<U761C> \x8F\xCD\xF2 |0 # <CJK>
+<U761D> \x8F\xCD\xF3 |0 # <CJK>
+<U761E> \x8F\xCD\xF4 |0 # <CJK>
+<U7623> \x8F\xCD\xF5 |0 # <CJK>
+<U7625> \x8F\xCD\xF6 |0 # <CJK>
+<U7626> \x8F\xCD\xF7 |0 # <CJK>
+<U7629> \x8F\xCD\xF8 |0 # <CJK>
+<U762D> \x8F\xCD\xF9 |0 # <CJK>
+<U7632> \x8F\xCD\xFA |0 # <CJK>
+<U7633> \x8F\xCD\xFB |0 # <CJK>
+<U7635> \x8F\xCD\xFC |0 # <CJK>
+<U7638> \x8F\xCD\xFD |0 # <CJK>
+<U7639> \x8F\xCD\xFE |0 # <CJK>
+<U763A> \x8F\xCE\xA1 |0 # <CJK>
+<U763C> \x8F\xCE\xA2 |0 # <CJK>
+<U764A> \x8F\xCE\xA3 |0 # <CJK>
+<U7640> \x8F\xCE\xA4 |0 # <CJK>
+<U7641> \x8F\xCE\xA5 |0 # <CJK>
+<U7643> \x8F\xCE\xA6 |0 # <CJK>
+<U7644> \x8F\xCE\xA7 |0 # <CJK>
+<U7645> \x8F\xCE\xA8 |0 # <CJK>
+<U7649> \x8F\xCE\xA9 |0 # <CJK>
+<U764B> \x8F\xCE\xAA |0 # <CJK>
+<U7655> \x8F\xCE\xAB |0 # <CJK>
+<U7659> \x8F\xCE\xAC |0 # <CJK>
+<U765F> \x8F\xCE\xAD |0 # <CJK>
+<U7664> \x8F\xCE\xAE |0 # <CJK>
+<U7665> \x8F\xCE\xAF |0 # <CJK>
+<U766D> \x8F\xCE\xB0 |0 # <CJK>
+<U766E> \x8F\xCE\xB1 |0 # <CJK>
+<U766F> \x8F\xCE\xB2 |0 # <CJK>
+<U7671> \x8F\xCE\xB3 |0 # <CJK>
+<U7674> \x8F\xCE\xB4 |0 # <CJK>
+<U7681> \x8F\xCE\xB5 |0 # <CJK>
+<U7685> \x8F\xCE\xB6 |0 # <CJK>
+<U768C> \x8F\xCE\xB7 |0 # <CJK>
+<U768D> \x8F\xCE\xB8 |0 # <CJK>
+<U7695> \x8F\xCE\xB9 |0 # <CJK>
+<U769B> \x8F\xCE\xBA |0 # <CJK>
+<U769C> \x8F\xCE\xBB |0 # <CJK>
+<U769D> \x8F\xCE\xBC |0 # <CJK>
+<U769F> \x8F\xCE\xBD |0 # <CJK>
+<U76A0> \x8F\xCE\xBE |0 # <CJK>
+<U76A2> \x8F\xCE\xBF |0 # <CJK>
+<U76A3> \x8F\xCE\xC0 |0 # <CJK>
+<U76A4> \x8F\xCE\xC1 |0 # <CJK>
+<U76A5> \x8F\xCE\xC2 |0 # <CJK>
+<U76A6> \x8F\xCE\xC3 |0 # <CJK>
+<U76A7> \x8F\xCE\xC4 |0 # <CJK>
+<U76A8> \x8F\xCE\xC5 |0 # <CJK>
+<U76AA> \x8F\xCE\xC6 |0 # <CJK>
+<U76AD> \x8F\xCE\xC7 |0 # <CJK>
+<U76BD> \x8F\xCE\xC8 |0 # <CJK>
+<U76C1> \x8F\xCE\xC9 |0 # <CJK>
+<U76C5> \x8F\xCE\xCA |0 # <CJK>
+<U76C9> \x8F\xCE\xCB |0 # <CJK>
+<U76CB> \x8F\xCE\xCC |0 # <CJK>
+<U76CC> \x8F\xCE\xCD |0 # <CJK>
+<U76CE> \x8F\xCE\xCE |0 # <CJK>
+<U76D4> \x8F\xCE\xCF |0 # <CJK>
+<U76D9> \x8F\xCE\xD0 |0 # <CJK>
+<U76E0> \x8F\xCE\xD1 |0 # <CJK>
+<U76E6> \x8F\xCE\xD2 |0 # <CJK>
+<U76E8> \x8F\xCE\xD3 |0 # <CJK>
+<U76EC> \x8F\xCE\xD4 |0 # <CJK>
+<U76F0> \x8F\xCE\xD5 |0 # <CJK>
+<U76F1> \x8F\xCE\xD6 |0 # <CJK>
+<U76F6> \x8F\xCE\xD7 |0 # <CJK>
+<U76F9> \x8F\xCE\xD8 |0 # <CJK>
+<U76FC> \x8F\xCE\xD9 |0 # <CJK>
+<U7700> \x8F\xCE\xDA |0 # <CJK>
+<U7706> \x8F\xCE\xDB |0 # <CJK>
+<U770A> \x8F\xCE\xDC |0 # <CJK>
+<U770E> \x8F\xCE\xDD |0 # <CJK>
+<U7712> \x8F\xCE\xDE |0 # <CJK>
+<U7714> \x8F\xCE\xDF |0 # <CJK>
+<U7715> \x8F\xCE\xE0 |0 # <CJK>
+<U7717> \x8F\xCE\xE1 |0 # <CJK>
+<U7719> \x8F\xCE\xE2 |0 # <CJK>
+<U771A> \x8F\xCE\xE3 |0 # <CJK>
+<U771C> \x8F\xCE\xE4 |0 # <CJK>
+<U7722> \x8F\xCE\xE5 |0 # <CJK>
+<U7728> \x8F\xCE\xE6 |0 # <CJK>
+<U772D> \x8F\xCE\xE7 |0 # <CJK>
+<U772E> \x8F\xCE\xE8 |0 # <CJK>
+<U772F> \x8F\xCE\xE9 |0 # <CJK>
+<U7734> \x8F\xCE\xEA |0 # <CJK>
+<U7735> \x8F\xCE\xEB |0 # <CJK>
+<U7736> \x8F\xCE\xEC |0 # <CJK>
+<U7739> \x8F\xCE\xED |0 # <CJK>
+<U773D> \x8F\xCE\xEE |0 # <CJK>
+<U773E> \x8F\xCE\xEF |0 # <CJK>
+<U7742> \x8F\xCE\xF0 |0 # <CJK>
+<U7745> \x8F\xCE\xF1 |0 # <CJK>
+<U7746> \x8F\xCE\xF2 |0 # <CJK>
+<U774A> \x8F\xCE\xF3 |0 # <CJK>
+<U774D> \x8F\xCE\xF4 |0 # <CJK>
+<U774E> \x8F\xCE\xF5 |0 # <CJK>
+<U774F> \x8F\xCE\xF6 |0 # <CJK>
+<U7752> \x8F\xCE\xF7 |0 # <CJK>
+<U7756> \x8F\xCE\xF8 |0 # <CJK>
+<U7757> \x8F\xCE\xF9 |0 # <CJK>
+<U775C> \x8F\xCE\xFA |0 # <CJK>
+<U775E> \x8F\xCE\xFB |0 # <CJK>
+<U775F> \x8F\xCE\xFC |0 # <CJK>
+<U7760> \x8F\xCE\xFD |0 # <CJK>
+<U7762> \x8F\xCE\xFE |0 # <CJK>
+<U7764> \x8F\xCF\xA1 |0 # <CJK>
+<U7767> \x8F\xCF\xA2 |0 # <CJK>
+<U776A> \x8F\xCF\xA3 |0 # <CJK>
+<U776C> \x8F\xCF\xA4 |0 # <CJK>
+<U7770> \x8F\xCF\xA5 |0 # <CJK>
+<U7772> \x8F\xCF\xA6 |0 # <CJK>
+<U7773> \x8F\xCF\xA7 |0 # <CJK>
+<U7774> \x8F\xCF\xA8 |0 # <CJK>
+<U777A> \x8F\xCF\xA9 |0 # <CJK>
+<U777D> \x8F\xCF\xAA |0 # <CJK>
+<U7780> \x8F\xCF\xAB |0 # <CJK>
+<U7784> \x8F\xCF\xAC |0 # <CJK>
+<U778C> \x8F\xCF\xAD |0 # <CJK>
+<U778D> \x8F\xCF\xAE |0 # <CJK>
+<U7794> \x8F\xCF\xAF |0 # <CJK>
+<U7795> \x8F\xCF\xB0 |0 # <CJK>
+<U7796> \x8F\xCF\xB1 |0 # <CJK>
+<U779A> \x8F\xCF\xB2 |0 # <CJK>
+<U779F> \x8F\xCF\xB3 |0 # <CJK>
+<U77A2> \x8F\xCF\xB4 |0 # <CJK>
+<U77A7> \x8F\xCF\xB5 |0 # <CJK>
+<U77AA> \x8F\xCF\xB6 |0 # <CJK>
+<U77AE> \x8F\xCF\xB7 |0 # <CJK>
+<U77AF> \x8F\xCF\xB8 |0 # <CJK>
+<U77B1> \x8F\xCF\xB9 |0 # <CJK>
+<U77B5> \x8F\xCF\xBA |0 # <CJK>
+<U77BE> \x8F\xCF\xBB |0 # <CJK>
+<U77C3> \x8F\xCF\xBC |0 # <CJK>
+<U77C9> \x8F\xCF\xBD |0 # <CJK>
+<U77D1> \x8F\xCF\xBE |0 # <CJK>
+<U77D2> \x8F\xCF\xBF |0 # <CJK>
+<U77D5> \x8F\xCF\xC0 |0 # <CJK>
+<U77D9> \x8F\xCF\xC1 |0 # <CJK>
+<U77DE> \x8F\xCF\xC2 |0 # <CJK>
+<U77DF> \x8F\xCF\xC3 |0 # <CJK>
+<U77E0> \x8F\xCF\xC4 |0 # <CJK>
+<U77E4> \x8F\xCF\xC5 |0 # <CJK>
+<U77E6> \x8F\xCF\xC6 |0 # <CJK>
+<U77EA> \x8F\xCF\xC7 |0 # <CJK>
+<U77EC> \x8F\xCF\xC8 |0 # <CJK>
+<U77F0> \x8F\xCF\xC9 |0 # <CJK>
+<U77F1> \x8F\xCF\xCA |0 # <CJK>
+<U77F4> \x8F\xCF\xCB |0 # <CJK>
+<U77F8> \x8F\xCF\xCC |0 # <CJK>
+<U77FB> \x8F\xCF\xCD |0 # <CJK>
+<U7805> \x8F\xCF\xCE |0 # <CJK>
+<U7806> \x8F\xCF\xCF |0 # <CJK>
+<U7809> \x8F\xCF\xD0 |0 # <CJK>
+<U780D> \x8F\xCF\xD1 |0 # <CJK>
+<U780E> \x8F\xCF\xD2 |0 # <CJK>
+<U7811> \x8F\xCF\xD3 |0 # <CJK>
+<U781D> \x8F\xCF\xD4 |0 # <CJK>
+<U7821> \x8F\xCF\xD5 |0 # <CJK>
+<U7822> \x8F\xCF\xD6 |0 # <CJK>
+<U7823> \x8F\xCF\xD7 |0 # <CJK>
+<U782D> \x8F\xCF\xD8 |0 # <CJK>
+<U782E> \x8F\xCF\xD9 |0 # <CJK>
+<U7830> \x8F\xCF\xDA |0 # <CJK>
+<U7835> \x8F\xCF\xDB |0 # <CJK>
+<U7837> \x8F\xCF\xDC |0 # <CJK>
+<U7843> \x8F\xCF\xDD |0 # <CJK>
+<U7844> \x8F\xCF\xDE |0 # <CJK>
+<U7847> \x8F\xCF\xDF |0 # <CJK>
+<U7848> \x8F\xCF\xE0 |0 # <CJK>
+<U784C> \x8F\xCF\xE1 |0 # <CJK>
+<U784E> \x8F\xCF\xE2 |0 # <CJK>
+<U7852> \x8F\xCF\xE3 |0 # <CJK>
+<U785C> \x8F\xCF\xE4 |0 # <CJK>
+<U785E> \x8F\xCF\xE5 |0 # <CJK>
+<U7860> \x8F\xCF\xE6 |0 # <CJK>
+<U7861> \x8F\xCF\xE7 |0 # <CJK>
+<U7863> \x8F\xCF\xE8 |0 # <CJK>
+<U7864> \x8F\xCF\xE9 |0 # <CJK>
+<U7868> \x8F\xCF\xEA |0 # <CJK>
+<U786A> \x8F\xCF\xEB |0 # <CJK>
+<U786E> \x8F\xCF\xEC |0 # <CJK>
+<U787A> \x8F\xCF\xED |0 # <CJK>
+<U787E> \x8F\xCF\xEE |0 # <CJK>
+<U788A> \x8F\xCF\xEF |0 # <CJK>
+<U788F> \x8F\xCF\xF0 |0 # <CJK>
+<U7894> \x8F\xCF\xF1 |0 # <CJK>
+<U7898> \x8F\xCF\xF2 |0 # <CJK>
+<U78A1> \x8F\xCF\xF3 |0 # <CJK>
+<U789D> \x8F\xCF\xF4 |0 # <CJK>
+<U789E> \x8F\xCF\xF5 |0 # <CJK>
+<U789F> \x8F\xCF\xF6 |0 # <CJK>
+<U78A4> \x8F\xCF\xF7 |0 # <CJK>
+<U78A8> \x8F\xCF\xF8 |0 # <CJK>
+<U78AC> \x8F\xCF\xF9 |0 # <CJK>
+<U78AD> \x8F\xCF\xFA |0 # <CJK>
+<U78B0> \x8F\xCF\xFB |0 # <CJK>
+<U78B1> \x8F\xCF\xFC |0 # <CJK>
+<U78B2> \x8F\xCF\xFD |0 # <CJK>
+<U78B3> \x8F\xCF\xFE |0 # <CJK>
+<U78BB> \x8F\xD0\xA1 |0 # <CJK>
+<U78BD> \x8F\xD0\xA2 |0 # <CJK>
+<U78BF> \x8F\xD0\xA3 |0 # <CJK>
+<U78C7> \x8F\xD0\xA4 |0 # <CJK>
+<U78C8> \x8F\xD0\xA5 |0 # <CJK>
+<U78C9> \x8F\xD0\xA6 |0 # <CJK>
+<U78CC> \x8F\xD0\xA7 |0 # <CJK>
+<U78CE> \x8F\xD0\xA8 |0 # <CJK>
+<U78D2> \x8F\xD0\xA9 |0 # <CJK>
+<U78D3> \x8F\xD0\xAA |0 # <CJK>
+<U78D5> \x8F\xD0\xAB |0 # <CJK>
+<U78D6> \x8F\xD0\xAC |0 # <CJK>
+<U78E4> \x8F\xD0\xAD |0 # <CJK>
+<U78DB> \x8F\xD0\xAE |0 # <CJK>
+<U78DF> \x8F\xD0\xAF |0 # <CJK>
+<U78E0> \x8F\xD0\xB0 |0 # <CJK>
+<U78E1> \x8F\xD0\xB1 |0 # <CJK>
+<U78E6> \x8F\xD0\xB2 |0 # <CJK>
+<U78EA> \x8F\xD0\xB3 |0 # <CJK>
+<U78F2> \x8F\xD0\xB4 |0 # <CJK>
+<U78F3> \x8F\xD0\xB5 |0 # <CJK>
+<U7900> \x8F\xD0\xB6 |0 # <CJK>
+<U78F6> \x8F\xD0\xB7 |0 # <CJK>
+<U78F7> \x8F\xD0\xB8 |0 # <CJK>
+<U78FA> \x8F\xD0\xB9 |0 # <CJK>
+<U78FB> \x8F\xD0\xBA |0 # <CJK>
+<U78FF> \x8F\xD0\xBB |0 # <CJK>
+<U7906> \x8F\xD0\xBC |0 # <CJK>
+<U790C> \x8F\xD0\xBD |0 # <CJK>
+<U7910> \x8F\xD0\xBE |0 # <CJK>
+<U791A> \x8F\xD0\xBF |0 # <CJK>
+<U791C> \x8F\xD0\xC0 |0 # <CJK>
+<U791E> \x8F\xD0\xC1 |0 # <CJK>
+<U791F> \x8F\xD0\xC2 |0 # <CJK>
+<U7920> \x8F\xD0\xC3 |0 # <CJK>
+<U7925> \x8F\xD0\xC4 |0 # <CJK>
+<U7927> \x8F\xD0\xC5 |0 # <CJK>
+<U7929> \x8F\xD0\xC6 |0 # <CJK>
+<U792D> \x8F\xD0\xC7 |0 # <CJK>
+<U7931> \x8F\xD0\xC8 |0 # <CJK>
+<U7934> \x8F\xD0\xC9 |0 # <CJK>
+<U7935> \x8F\xD0\xCA |0 # <CJK>
+<U793B> \x8F\xD0\xCB |0 # <CJK>
+<U793D> \x8F\xD0\xCC |0 # <CJK>
+<U793F> \x8F\xD0\xCD |0 # <CJK>
+<U7944> \x8F\xD0\xCE |0 # <CJK>
+<U7945> \x8F\xD0\xCF |0 # <CJK>
+<U7946> \x8F\xD0\xD0 |0 # <CJK>
+<U794A> \x8F\xD0\xD1 |0 # <CJK>
+<U794B> \x8F\xD0\xD2 |0 # <CJK>
+<U794F> \x8F\xD0\xD3 |0 # <CJK>
+<U7951> \x8F\xD0\xD4 |0 # <CJK>
+<U7954> \x8F\xD0\xD5 |0 # <CJK>
+<U7958> \x8F\xD0\xD6 |0 # <CJK>
+<U795B> \x8F\xD0\xD7 |0 # <CJK>
+<U795C> \x8F\xD0\xD8 |0 # <CJK>
+<U7967> \x8F\xD0\xD9 |0 # <CJK>
+<U7969> \x8F\xD0\xDA |0 # <CJK>
+<U796B> \x8F\xD0\xDB |0 # <CJK>
+<U7972> \x8F\xD0\xDC |0 # <CJK>
+<U7979> \x8F\xD0\xDD |0 # <CJK>
+<U797B> \x8F\xD0\xDE |0 # <CJK>
+<U797C> \x8F\xD0\xDF |0 # <CJK>
+<U797E> \x8F\xD0\xE0 |0 # <CJK>
+<U798B> \x8F\xD0\xE1 |0 # <CJK>
+<U798C> \x8F\xD0\xE2 |0 # <CJK>
+<U7991> \x8F\xD0\xE3 |0 # <CJK>
+<U7993> \x8F\xD0\xE4 |0 # <CJK>
+<U7994> \x8F\xD0\xE5 |0 # <CJK>
+<U7995> \x8F\xD0\xE6 |0 # <CJK>
+<U7996> \x8F\xD0\xE7 |0 # <CJK>
+<U7998> \x8F\xD0\xE8 |0 # <CJK>
+<U799B> \x8F\xD0\xE9 |0 # <CJK>
+<U799C> \x8F\xD0\xEA |0 # <CJK>
+<U79A1> \x8F\xD0\xEB |0 # <CJK>
+<U79A8> \x8F\xD0\xEC |0 # <CJK>
+<U79A9> \x8F\xD0\xED |0 # <CJK>
+<U79AB> \x8F\xD0\xEE |0 # <CJK>
+<U79AF> \x8F\xD0\xEF |0 # <CJK>
+<U79B1> \x8F\xD0\xF0 |0 # <CJK>
+<U79B4> \x8F\xD0\xF1 |0 # <CJK>
+<U79B8> \x8F\xD0\xF2 |0 # <CJK>
+<U79BB> \x8F\xD0\xF3 |0 # <CJK>
+<U79C2> \x8F\xD0\xF4 |0 # <CJK>
+<U79C4> \x8F\xD0\xF5 |0 # <CJK>
+<U79C7> \x8F\xD0\xF6 |0 # <CJK>
+<U79C8> \x8F\xD0\xF7 |0 # <CJK>
+<U79CA> \x8F\xD0\xF8 |0 # <CJK>
+<U79CF> \x8F\xD0\xF9 |0 # <CJK>
+<U79D4> \x8F\xD0\xFA |0 # <CJK>
+<U79D6> \x8F\xD0\xFB |0 # <CJK>
+<U79DA> \x8F\xD0\xFC |0 # <CJK>
+<U79DD> \x8F\xD0\xFD |0 # <CJK>
+<U79DE> \x8F\xD0\xFE |0 # <CJK>
+<U79E0> \x8F\xD1\xA1 |0 # <CJK>
+<U79E2> \x8F\xD1\xA2 |0 # <CJK>
+<U79E5> \x8F\xD1\xA3 |0 # <CJK>
+<U79EA> \x8F\xD1\xA4 |0 # <CJK>
+<U79EB> \x8F\xD1\xA5 |0 # <CJK>
+<U79ED> \x8F\xD1\xA6 |0 # <CJK>
+<U79F1> \x8F\xD1\xA7 |0 # <CJK>
+<U79F8> \x8F\xD1\xA8 |0 # <CJK>
+<U79FC> \x8F\xD1\xA9 |0 # <CJK>
+<U7A02> \x8F\xD1\xAA |0 # <CJK>
+<U7A03> \x8F\xD1\xAB |0 # <CJK>
+<U7A07> \x8F\xD1\xAC |0 # <CJK>
+<U7A09> \x8F\xD1\xAD |0 # <CJK>
+<U7A0A> \x8F\xD1\xAE |0 # <CJK>
+<U7A0C> \x8F\xD1\xAF |0 # <CJK>
+<U7A11> \x8F\xD1\xB0 |0 # <CJK>
+<U7A15> \x8F\xD1\xB1 |0 # <CJK>
+<U7A1B> \x8F\xD1\xB2 |0 # <CJK>
+<U7A1E> \x8F\xD1\xB3 |0 # <CJK>
+<U7A21> \x8F\xD1\xB4 |0 # <CJK>
+<U7A27> \x8F\xD1\xB5 |0 # <CJK>
+<U7A2B> \x8F\xD1\xB6 |0 # <CJK>
+<U7A2D> \x8F\xD1\xB7 |0 # <CJK>
+<U7A2F> \x8F\xD1\xB8 |0 # <CJK>
+<U7A30> \x8F\xD1\xB9 |0 # <CJK>
+<U7A34> \x8F\xD1\xBA |0 # <CJK>
+<U7A35> \x8F\xD1\xBB |0 # <CJK>
+<U7A38> \x8F\xD1\xBC |0 # <CJK>
+<U7A39> \x8F\xD1\xBD |0 # <CJK>
+<U7A3A> \x8F\xD1\xBE |0 # <CJK>
+<U7A44> \x8F\xD1\xBF |0 # <CJK>
+<U7A45> \x8F\xD1\xC0 |0 # <CJK>
+<U7A47> \x8F\xD1\xC1 |0 # <CJK>
+<U7A48> \x8F\xD1\xC2 |0 # <CJK>
+<U7A4C> \x8F\xD1\xC3 |0 # <CJK>
+<U7A55> \x8F\xD1\xC4 |0 # <CJK>
+<U7A56> \x8F\xD1\xC5 |0 # <CJK>
+<U7A59> \x8F\xD1\xC6 |0 # <CJK>
+<U7A5C> \x8F\xD1\xC7 |0 # <CJK>
+<U7A5D> \x8F\xD1\xC8 |0 # <CJK>
+<U7A5F> \x8F\xD1\xC9 |0 # <CJK>
+<U7A60> \x8F\xD1\xCA |0 # <CJK>
+<U7A65> \x8F\xD1\xCB |0 # <CJK>
+<U7A67> \x8F\xD1\xCC |0 # <CJK>
+<U7A6A> \x8F\xD1\xCD |0 # <CJK>
+<U7A6D> \x8F\xD1\xCE |0 # <CJK>
+<U7A75> \x8F\xD1\xCF |0 # <CJK>
+<U7A78> \x8F\xD1\xD0 |0 # <CJK>
+<U7A7E> \x8F\xD1\xD1 |0 # <CJK>
+<U7A80> \x8F\xD1\xD2 |0 # <CJK>
+<U7A82> \x8F\xD1\xD3 |0 # <CJK>
+<U7A85> \x8F\xD1\xD4 |0 # <CJK>
+<U7A86> \x8F\xD1\xD5 |0 # <CJK>
+<U7A8A> \x8F\xD1\xD6 |0 # <CJK>
+<U7A8B> \x8F\xD1\xD7 |0 # <CJK>
+<U7A90> \x8F\xD1\xD8 |0 # <CJK>
+<U7A91> \x8F\xD1\xD9 |0 # <CJK>
+<U7A94> \x8F\xD1\xDA |0 # <CJK>
+<U7A9E> \x8F\xD1\xDB |0 # <CJK>
+<U7AA0> \x8F\xD1\xDC |0 # <CJK>
+<U7AA3> \x8F\xD1\xDD |0 # <CJK>
+<U7AAC> \x8F\xD1\xDE |0 # <CJK>
+<U7AB3> \x8F\xD1\xDF |0 # <CJK>
+<U7AB5> \x8F\xD1\xE0 |0 # <CJK>
+<U7AB9> \x8F\xD1\xE1 |0 # <CJK>
+<U7ABB> \x8F\xD1\xE2 |0 # <CJK>
+<U7ABC> \x8F\xD1\xE3 |0 # <CJK>
+<U7AC6> \x8F\xD1\xE4 |0 # <CJK>
+<U7AC9> \x8F\xD1\xE5 |0 # <CJK>
+<U7ACC> \x8F\xD1\xE6 |0 # <CJK>
+<U7ACE> \x8F\xD1\xE7 |0 # <CJK>
+<U7AD1> \x8F\xD1\xE8 |0 # <CJK>
+<U7ADB> \x8F\xD1\xE9 |0 # <CJK>
+<U7AE8> \x8F\xD1\xEA |0 # <CJK>
+<U7AE9> \x8F\xD1\xEB |0 # <CJK>
+<U7AEB> \x8F\xD1\xEC |0 # <CJK>
+<U7AEC> \x8F\xD1\xED |0 # <CJK>
+<U7AF1> \x8F\xD1\xEE |0 # <CJK>
+<U7AF4> \x8F\xD1\xEF |0 # <CJK>
+<U7AFB> \x8F\xD1\xF0 |0 # <CJK>
+<U7AFD> \x8F\xD1\xF1 |0 # <CJK>
+<U7AFE> \x8F\xD1\xF2 |0 # <CJK>
+<U7B07> \x8F\xD1\xF3 |0 # <CJK>
+<U7B14> \x8F\xD1\xF4 |0 # <CJK>
+<U7B1F> \x8F\xD1\xF5 |0 # <CJK>
+<U7B23> \x8F\xD1\xF6 |0 # <CJK>
+<U7B27> \x8F\xD1\xF7 |0 # <CJK>
+<U7B29> \x8F\xD1\xF8 |0 # <CJK>
+<U7B2A> \x8F\xD1\xF9 |0 # <CJK>
+<U7B2B> \x8F\xD1\xFA |0 # <CJK>
+<U7B2D> \x8F\xD1\xFB |0 # <CJK>
+<U7B2E> \x8F\xD1\xFC |0 # <CJK>
+<U7B2F> \x8F\xD1\xFD |0 # <CJK>
+<U7B30> \x8F\xD1\xFE |0 # <CJK>
+<U7B31> \x8F\xD2\xA1 |0 # <CJK>
+<U7B34> \x8F\xD2\xA2 |0 # <CJK>
+<U7B3D> \x8F\xD2\xA3 |0 # <CJK>
+<U7B3F> \x8F\xD2\xA4 |0 # <CJK>
+<U7B40> \x8F\xD2\xA5 |0 # <CJK>
+<U7B41> \x8F\xD2\xA6 |0 # <CJK>
+<U7B47> \x8F\xD2\xA7 |0 # <CJK>
+<U7B4E> \x8F\xD2\xA8 |0 # <CJK>
+<U7B55> \x8F\xD2\xA9 |0 # <CJK>
+<U7B60> \x8F\xD2\xAA |0 # <CJK>
+<U7B64> \x8F\xD2\xAB |0 # <CJK>
+<U7B66> \x8F\xD2\xAC |0 # <CJK>
+<U7B69> \x8F\xD2\xAD |0 # <CJK>
+<U7B6A> \x8F\xD2\xAE |0 # <CJK>
+<U7B6D> \x8F\xD2\xAF |0 # <CJK>
+<U7B6F> \x8F\xD2\xB0 |0 # <CJK>
+<U7B72> \x8F\xD2\xB1 |0 # <CJK>
+<U7B73> \x8F\xD2\xB2 |0 # <CJK>
+<U7B77> \x8F\xD2\xB3 |0 # <CJK>
+<U7B84> \x8F\xD2\xB4 |0 # <CJK>
+<U7B89> \x8F\xD2\xB5 |0 # <CJK>
+<U7B8E> \x8F\xD2\xB6 |0 # <CJK>
+<U7B90> \x8F\xD2\xB7 |0 # <CJK>
+<U7B91> \x8F\xD2\xB8 |0 # <CJK>
+<U7B96> \x8F\xD2\xB9 |0 # <CJK>
+<U7B9B> \x8F\xD2\xBA |0 # <CJK>
+<U7B9E> \x8F\xD2\xBB |0 # <CJK>
+<U7BA0> \x8F\xD2\xBC |0 # <CJK>
+<U7BA5> \x8F\xD2\xBD |0 # <CJK>
+<U7BAC> \x8F\xD2\xBE |0 # <CJK>
+<U7BAF> \x8F\xD2\xBF |0 # <CJK>
+<U7BB0> \x8F\xD2\xC0 |0 # <CJK>
+<U7BB2> \x8F\xD2\xC1 |0 # <CJK>
+<U7BB5> \x8F\xD2\xC2 |0 # <CJK>
+<U7BB6> \x8F\xD2\xC3 |0 # <CJK>
+<U7BBA> \x8F\xD2\xC4 |0 # <CJK>
+<U7BBB> \x8F\xD2\xC5 |0 # <CJK>
+<U7BBC> \x8F\xD2\xC6 |0 # <CJK>
+<U7BBD> \x8F\xD2\xC7 |0 # <CJK>
+<U7BC2> \x8F\xD2\xC8 |0 # <CJK>
+<U7BC5> \x8F\xD2\xC9 |0 # <CJK>
+<U7BC8> \x8F\xD2\xCA |0 # <CJK>
+<U7BCA> \x8F\xD2\xCB |0 # <CJK>
+<U7BD4> \x8F\xD2\xCC |0 # <CJK>
+<U7BD6> \x8F\xD2\xCD |0 # <CJK>
+<U7BD7> \x8F\xD2\xCE |0 # <CJK>
+<U7BD9> \x8F\xD2\xCF |0 # <CJK>
+<U7BDA> \x8F\xD2\xD0 |0 # <CJK>
+<U7BDB> \x8F\xD2\xD1 |0 # <CJK>
+<U7BE8> \x8F\xD2\xD2 |0 # <CJK>
+<U7BEA> \x8F\xD2\xD3 |0 # <CJK>
+<U7BF2> \x8F\xD2\xD4 |0 # <CJK>
+<U7BF4> \x8F\xD2\xD5 |0 # <CJK>
+<U7BF5> \x8F\xD2\xD6 |0 # <CJK>
+<U7BF8> \x8F\xD2\xD7 |0 # <CJK>
+<U7BF9> \x8F\xD2\xD8 |0 # <CJK>
+<U7BFA> \x8F\xD2\xD9 |0 # <CJK>
+<U7BFC> \x8F\xD2\xDA |0 # <CJK>
+<U7BFE> \x8F\xD2\xDB |0 # <CJK>
+<U7C01> \x8F\xD2\xDC |0 # <CJK>
+<U7C02> \x8F\xD2\xDD |0 # <CJK>
+<U7C03> \x8F\xD2\xDE |0 # <CJK>
+<U7C04> \x8F\xD2\xDF |0 # <CJK>
+<U7C06> \x8F\xD2\xE0 |0 # <CJK>
+<U7C09> \x8F\xD2\xE1 |0 # <CJK>
+<U7C0B> \x8F\xD2\xE2 |0 # <CJK>
+<U7C0C> \x8F\xD2\xE3 |0 # <CJK>
+<U7C0E> \x8F\xD2\xE4 |0 # <CJK>
+<U7C0F> \x8F\xD2\xE5 |0 # <CJK>
+<U7C19> \x8F\xD2\xE6 |0 # <CJK>
+<U7C1B> \x8F\xD2\xE7 |0 # <CJK>
+<U7C20> \x8F\xD2\xE8 |0 # <CJK>
+<U7C25> \x8F\xD2\xE9 |0 # <CJK>
+<U7C26> \x8F\xD2\xEA |0 # <CJK>
+<U7C28> \x8F\xD2\xEB |0 # <CJK>
+<U7C2C> \x8F\xD2\xEC |0 # <CJK>
+<U7C31> \x8F\xD2\xED |0 # <CJK>
+<U7C33> \x8F\xD2\xEE |0 # <CJK>
+<U7C34> \x8F\xD2\xEF |0 # <CJK>
+<U7C36> \x8F\xD2\xF0 |0 # <CJK>
+<U7C39> \x8F\xD2\xF1 |0 # <CJK>
+<U7C3A> \x8F\xD2\xF2 |0 # <CJK>
+<U7C46> \x8F\xD2\xF3 |0 # <CJK>
+<U7C4A> \x8F\xD2\xF4 |0 # <CJK>
+<U7C55> \x8F\xD2\xF5 |0 # <CJK>
+<U7C51> \x8F\xD2\xF6 |0 # <CJK>
+<U7C52> \x8F\xD2\xF7 |0 # <CJK>
+<U7C53> \x8F\xD2\xF8 |0 # <CJK>
+<U7C59> \x8F\xD2\xF9 |0 # <CJK>
+<U7C5A> \x8F\xD2\xFA |0 # <CJK>
+<U7C5B> \x8F\xD2\xFB |0 # <CJK>
+<U7C5C> \x8F\xD2\xFC |0 # <CJK>
+<U7C5D> \x8F\xD2\xFD |0 # <CJK>
+<U7C5E> \x8F\xD2\xFE |0 # <CJK>
+<U7C61> \x8F\xD3\xA1 |0 # <CJK>
+<U7C63> \x8F\xD3\xA2 |0 # <CJK>
+<U7C67> \x8F\xD3\xA3 |0 # <CJK>
+<U7C69> \x8F\xD3\xA4 |0 # <CJK>
+<U7C6D> \x8F\xD3\xA5 |0 # <CJK>
+<U7C6E> \x8F\xD3\xA6 |0 # <CJK>
+<U7C70> \x8F\xD3\xA7 |0 # <CJK>
+<U7C72> \x8F\xD3\xA8 |0 # <CJK>
+<U7C79> \x8F\xD3\xA9 |0 # <CJK>
+<U7C7C> \x8F\xD3\xAA |0 # <CJK>
+<U7C7D> \x8F\xD3\xAB |0 # <CJK>
+<U7C86> \x8F\xD3\xAC |0 # <CJK>
+<U7C87> \x8F\xD3\xAD |0 # <CJK>
+<U7C8F> \x8F\xD3\xAE |0 # <CJK>
+<U7C94> \x8F\xD3\xAF |0 # <CJK>
+<U7C9E> \x8F\xD3\xB0 |0 # <CJK>
+<U7CA0> \x8F\xD3\xB1 |0 # <CJK>
+<U7CA6> \x8F\xD3\xB2 |0 # <CJK>
+<U7CB0> \x8F\xD3\xB3 |0 # <CJK>
+<U7CB6> \x8F\xD3\xB4 |0 # <CJK>
+<U7CB7> \x8F\xD3\xB5 |0 # <CJK>
+<U7CBA> \x8F\xD3\xB6 |0 # <CJK>
+<U7CBB> \x8F\xD3\xB7 |0 # <CJK>
+<U7CBC> \x8F\xD3\xB8 |0 # <CJK>
+<U7CBF> \x8F\xD3\xB9 |0 # <CJK>
+<U7CC4> \x8F\xD3\xBA |0 # <CJK>
+<U7CC7> \x8F\xD3\xBB |0 # <CJK>
+<U7CC8> \x8F\xD3\xBC |0 # <CJK>
+<U7CC9> \x8F\xD3\xBD |0 # <CJK>
+<U7CCD> \x8F\xD3\xBE |0 # <CJK>
+<U7CCF> \x8F\xD3\xBF |0 # <CJK>
+<U7CD3> \x8F\xD3\xC0 |0 # <CJK>
+<U7CD4> \x8F\xD3\xC1 |0 # <CJK>
+<U7CD5> \x8F\xD3\xC2 |0 # <CJK>
+<U7CD7> \x8F\xD3\xC3 |0 # <CJK>
+<U7CD9> \x8F\xD3\xC4 |0 # <CJK>
+<U7CDA> \x8F\xD3\xC5 |0 # <CJK>
+<U7CDD> \x8F\xD3\xC6 |0 # <CJK>
+<U7CE6> \x8F\xD3\xC7 |0 # <CJK>
+<U7CE9> \x8F\xD3\xC8 |0 # <CJK>
+<U7CEB> \x8F\xD3\xC9 |0 # <CJK>
+<U7CF5> \x8F\xD3\xCA |0 # <CJK>
+<U7D03> \x8F\xD3\xCB |0 # <CJK>
+<U7D07> \x8F\xD3\xCC |0 # <CJK>
+<U7D08> \x8F\xD3\xCD |0 # <CJK>
+<U7D09> \x8F\xD3\xCE |0 # <CJK>
+<U7D0F> \x8F\xD3\xCF |0 # <CJK>
+<U7D11> \x8F\xD3\xD0 |0 # <CJK>
+<U7D12> \x8F\xD3\xD1 |0 # <CJK>
+<U7D13> \x8F\xD3\xD2 |0 # <CJK>
+<U7D16> \x8F\xD3\xD3 |0 # <CJK>
+<U7D1D> \x8F\xD3\xD4 |0 # <CJK>
+<U7D1E> \x8F\xD3\xD5 |0 # <CJK>
+<U7D23> \x8F\xD3\xD6 |0 # <CJK>
+<U7D26> \x8F\xD3\xD7 |0 # <CJK>
+<U7D2A> \x8F\xD3\xD8 |0 # <CJK>
+<U7D2D> \x8F\xD3\xD9 |0 # <CJK>
+<U7D31> \x8F\xD3\xDA |0 # <CJK>
+<U7D3C> \x8F\xD3\xDB |0 # <CJK>
+<U7D3D> \x8F\xD3\xDC |0 # <CJK>
+<U7D3E> \x8F\xD3\xDD |0 # <CJK>
+<U7D40> \x8F\xD3\xDE |0 # <CJK>
+<U7D41> \x8F\xD3\xDF |0 # <CJK>
+<U7D47> \x8F\xD3\xE0 |0 # <CJK>
+<U7D48> \x8F\xD3\xE1 |0 # <CJK>
+<U7D4D> \x8F\xD3\xE2 |0 # <CJK>
+<U7D51> \x8F\xD3\xE3 |0 # <CJK>
+<U7D53> \x8F\xD3\xE4 |0 # <CJK>
+<U7D57> \x8F\xD3\xE5 |0 # <CJK>
+<U7D59> \x8F\xD3\xE6 |0 # <CJK>
+<U7D5A> \x8F\xD3\xE7 |0 # <CJK>
+<U7D5C> \x8F\xD3\xE8 |0 # <CJK>
+<U7D5D> \x8F\xD3\xE9 |0 # <CJK>
+<U7D65> \x8F\xD3\xEA |0 # <CJK>
+<U7D67> \x8F\xD3\xEB |0 # <CJK>
+<U7D6A> \x8F\xD3\xEC |0 # <CJK>
+<U7D70> \x8F\xD3\xED |0 # <CJK>
+<U7D78> \x8F\xD3\xEE |0 # <CJK>
+<U7D7A> \x8F\xD3\xEF |0 # <CJK>
+<U7D7B> \x8F\xD3\xF0 |0 # <CJK>
+<U7D7F> \x8F\xD3\xF1 |0 # <CJK>
+<U7D81> \x8F\xD3\xF2 |0 # <CJK>
+<U7D82> \x8F\xD3\xF3 |0 # <CJK>
+<U7D83> \x8F\xD3\xF4 |0 # <CJK>
+<U7D85> \x8F\xD3\xF5 |0 # <CJK>
+<U7D86> \x8F\xD3\xF6 |0 # <CJK>
+<U7D88> \x8F\xD3\xF7 |0 # <CJK>
+<U7D8B> \x8F\xD3\xF8 |0 # <CJK>
+<U7D8C> \x8F\xD3\xF9 |0 # <CJK>
+<U7D8D> \x8F\xD3\xFA |0 # <CJK>
+<U7D91> \x8F\xD3\xFB |0 # <CJK>
+<U7D96> \x8F\xD3\xFC |0 # <CJK>
+<U7D97> \x8F\xD3\xFD |0 # <CJK>
+<U7D9D> \x8F\xD3\xFE |0 # <CJK>
+<U7D9E> \x8F\xD4\xA1 |0 # <CJK>
+<U7DA6> \x8F\xD4\xA2 |0 # <CJK>
+<U7DA7> \x8F\xD4\xA3 |0 # <CJK>
+<U7DAA> \x8F\xD4\xA4 |0 # <CJK>
+<U7DB3> \x8F\xD4\xA5 |0 # <CJK>
+<U7DB6> \x8F\xD4\xA6 |0 # <CJK>
+<U7DB7> \x8F\xD4\xA7 |0 # <CJK>
+<U7DB9> \x8F\xD4\xA8 |0 # <CJK>
+<U7DC2> \x8F\xD4\xA9 |0 # <CJK>
+<U7DC3> \x8F\xD4\xAA |0 # <CJK>
+<U7DC4> \x8F\xD4\xAB |0 # <CJK>
+<U7DC5> \x8F\xD4\xAC |0 # <CJK>
+<U7DC6> \x8F\xD4\xAD |0 # <CJK>
+<U7DCC> \x8F\xD4\xAE |0 # <CJK>
+<U7DCD> \x8F\xD4\xAF |0 # <CJK>
+<U7DCE> \x8F\xD4\xB0 |0 # <CJK>
+<U7DD7> \x8F\xD4\xB1 |0 # <CJK>
+<U7DD9> \x8F\xD4\xB2 |0 # <CJK>
+<U7E00> \x8F\xD4\xB3 |0 # <CJK>
+<U7DE2> \x8F\xD4\xB4 |0 # <CJK>
+<U7DE5> \x8F\xD4\xB5 |0 # <CJK>
+<U7DE6> \x8F\xD4\xB6 |0 # <CJK>
+<U7DEA> \x8F\xD4\xB7 |0 # <CJK>
+<U7DEB> \x8F\xD4\xB8 |0 # <CJK>
+<U7DED> \x8F\xD4\xB9 |0 # <CJK>
+<U7DF1> \x8F\xD4\xBA |0 # <CJK>
+<U7DF5> \x8F\xD4\xBB |0 # <CJK>
+<U7DF6> \x8F\xD4\xBC |0 # <CJK>
+<U7DF9> \x8F\xD4\xBD |0 # <CJK>
+<U7DFA> \x8F\xD4\xBE |0 # <CJK>
+<U7E08> \x8F\xD4\xBF |0 # <CJK>
+<U7E10> \x8F\xD4\xC0 |0 # <CJK>
+<U7E11> \x8F\xD4\xC1 |0 # <CJK>
+<U7E15> \x8F\xD4\xC2 |0 # <CJK>
+<U7E17> \x8F\xD4\xC3 |0 # <CJK>
+<U7E1C> \x8F\xD4\xC4 |0 # <CJK>
+<U7E1D> \x8F\xD4\xC5 |0 # <CJK>
+<U7E20> \x8F\xD4\xC6 |0 # <CJK>
+<U7E27> \x8F\xD4\xC7 |0 # <CJK>
+<U7E28> \x8F\xD4\xC8 |0 # <CJK>
+<U7E2C> \x8F\xD4\xC9 |0 # <CJK>
+<U7E2D> \x8F\xD4\xCA |0 # <CJK>
+<U7E2F> \x8F\xD4\xCB |0 # <CJK>
+<U7E33> \x8F\xD4\xCC |0 # <CJK>
+<U7E36> \x8F\xD4\xCD |0 # <CJK>
+<U7E3F> \x8F\xD4\xCE |0 # <CJK>
+<U7E44> \x8F\xD4\xCF |0 # <CJK>
+<U7E45> \x8F\xD4\xD0 |0 # <CJK>
+<U7E47> \x8F\xD4\xD1 |0 # <CJK>
+<U7E4E> \x8F\xD4\xD2 |0 # <CJK>
+<U7E50> \x8F\xD4\xD3 |0 # <CJK>
+<U7E52> \x8F\xD4\xD4 |0 # <CJK>
+<U7E58> \x8F\xD4\xD5 |0 # <CJK>
+<U7E5F> \x8F\xD4\xD6 |0 # <CJK>
+<U7E61> \x8F\xD4\xD7 |0 # <CJK>
+<U7E62> \x8F\xD4\xD8 |0 # <CJK>
+<U7E65> \x8F\xD4\xD9 |0 # <CJK>
+<U7E6B> \x8F\xD4\xDA |0 # <CJK>
+<U7E6E> \x8F\xD4\xDB |0 # <CJK>
+<U7E6F> \x8F\xD4\xDC |0 # <CJK>
+<U7E73> \x8F\xD4\xDD |0 # <CJK>
+<U7E78> \x8F\xD4\xDE |0 # <CJK>
+<U7E7E> \x8F\xD4\xDF |0 # <CJK>
+<U7E81> \x8F\xD4\xE0 |0 # <CJK>
+<U7E86> \x8F\xD4\xE1 |0 # <CJK>
+<U7E87> \x8F\xD4\xE2 |0 # <CJK>
+<U7E8A> \x8F\xD4\xE3 |0 # <CJK>
+<U7E8D> \x8F\xD4\xE4 |0 # <CJK>
+<U7E91> \x8F\xD4\xE5 |0 # <CJK>
+<U7E95> \x8F\xD4\xE6 |0 # <CJK>
+<U7E98> \x8F\xD4\xE7 |0 # <CJK>
+<U7E9A> \x8F\xD4\xE8 |0 # <CJK>
+<U7E9D> \x8F\xD4\xE9 |0 # <CJK>
+<U7E9E> \x8F\xD4\xEA |0 # <CJK>
+<U7F3C> \x8F\xD4\xEB |0 # <CJK>
+<U7F3B> \x8F\xD4\xEC |0 # <CJK>
+<U7F3D> \x8F\xD4\xED |0 # <CJK>
+<U7F3E> \x8F\xD4\xEE |0 # <CJK>
+<U7F3F> \x8F\xD4\xEF |0 # <CJK>
+<U7F43> \x8F\xD4\xF0 |0 # <CJK>
+<U7F44> \x8F\xD4\xF1 |0 # <CJK>
+<U7F47> \x8F\xD4\xF2 |0 # <CJK>
+<U7F4F> \x8F\xD4\xF3 |0 # <CJK>
+<U7F52> \x8F\xD4\xF4 |0 # <CJK>
+<U7F53> \x8F\xD4\xF5 |0 # <CJK>
+<U7F5B> \x8F\xD4\xF6 |0 # <CJK>
+<U7F5C> \x8F\xD4\xF7 |0 # <CJK>
+<U7F5D> \x8F\xD4\xF8 |0 # <CJK>
+<U7F61> \x8F\xD4\xF9 |0 # <CJK>
+<U7F63> \x8F\xD4\xFA |0 # <CJK>
+<U7F64> \x8F\xD4\xFB |0 # <CJK>
+<U7F65> \x8F\xD4\xFC |0 # <CJK>
+<U7F66> \x8F\xD4\xFD |0 # <CJK>
+<U7F6D> \x8F\xD4\xFE |0 # <CJK>
+<U7F71> \x8F\xD5\xA1 |0 # <CJK>
+<U7F7D> \x8F\xD5\xA2 |0 # <CJK>
+<U7F7E> \x8F\xD5\xA3 |0 # <CJK>
+<U7F7F> \x8F\xD5\xA4 |0 # <CJK>
+<U7F80> \x8F\xD5\xA5 |0 # <CJK>
+<U7F8B> \x8F\xD5\xA6 |0 # <CJK>
+<U7F8D> \x8F\xD5\xA7 |0 # <CJK>
+<U7F8F> \x8F\xD5\xA8 |0 # <CJK>
+<U7F90> \x8F\xD5\xA9 |0 # <CJK>
+<U7F91> \x8F\xD5\xAA |0 # <CJK>
+<U7F96> \x8F\xD5\xAB |0 # <CJK>
+<U7F97> \x8F\xD5\xAC |0 # <CJK>
+<U7F9C> \x8F\xD5\xAD |0 # <CJK>
+<U7FA1> \x8F\xD5\xAE |0 # <CJK>
+<U7FA2> \x8F\xD5\xAF |0 # <CJK>
+<U7FA6> \x8F\xD5\xB0 |0 # <CJK>
+<U7FAA> \x8F\xD5\xB1 |0 # <CJK>
+<U7FAD> \x8F\xD5\xB2 |0 # <CJK>
+<U7FB4> \x8F\xD5\xB3 |0 # <CJK>
+<U7FBC> \x8F\xD5\xB4 |0 # <CJK>
+<U7FBF> \x8F\xD5\xB5 |0 # <CJK>
+<U7FC0> \x8F\xD5\xB6 |0 # <CJK>
+<U7FC3> \x8F\xD5\xB7 |0 # <CJK>
+<U7FC8> \x8F\xD5\xB8 |0 # <CJK>
+<U7FCE> \x8F\xD5\xB9 |0 # <CJK>
+<U7FCF> \x8F\xD5\xBA |0 # <CJK>
+<U7FDB> \x8F\xD5\xBB |0 # <CJK>
+<U7FDF> \x8F\xD5\xBC |0 # <CJK>
+<U7FE3> \x8F\xD5\xBD |0 # <CJK>
+<U7FE5> \x8F\xD5\xBE |0 # <CJK>
+<U7FE8> \x8F\xD5\xBF |0 # <CJK>
+<U7FEC> \x8F\xD5\xC0 |0 # <CJK>
+<U7FEE> \x8F\xD5\xC1 |0 # <CJK>
+<U7FEF> \x8F\xD5\xC2 |0 # <CJK>
+<U7FF2> \x8F\xD5\xC3 |0 # <CJK>
+<U7FFA> \x8F\xD5\xC4 |0 # <CJK>
+<U7FFD> \x8F\xD5\xC5 |0 # <CJK>
+<U7FFE> \x8F\xD5\xC6 |0 # <CJK>
+<U7FFF> \x8F\xD5\xC7 |0 # <CJK>
+<U8007> \x8F\xD5\xC8 |0 # <CJK>
+<U8008> \x8F\xD5\xC9 |0 # <CJK>
+<U800A> \x8F\xD5\xCA |0 # <CJK>
+<U800D> \x8F\xD5\xCB |0 # <CJK>
+<U800E> \x8F\xD5\xCC |0 # <CJK>
+<U800F> \x8F\xD5\xCD |0 # <CJK>
+<U8011> \x8F\xD5\xCE |0 # <CJK>
+<U8013> \x8F\xD5\xCF |0 # <CJK>
+<U8014> \x8F\xD5\xD0 |0 # <CJK>
+<U8016> \x8F\xD5\xD1 |0 # <CJK>
+<U801D> \x8F\xD5\xD2 |0 # <CJK>
+<U801E> \x8F\xD5\xD3 |0 # <CJK>
+<U801F> \x8F\xD5\xD4 |0 # <CJK>
+<U8020> \x8F\xD5\xD5 |0 # <CJK>
+<U8024> \x8F\xD5\xD6 |0 # <CJK>
+<U8026> \x8F\xD5\xD7 |0 # <CJK>
+<U802C> \x8F\xD5\xD8 |0 # <CJK>
+<U802E> \x8F\xD5\xD9 |0 # <CJK>
+<U8030> \x8F\xD5\xDA |0 # <CJK>
+<U8034> \x8F\xD5\xDB |0 # <CJK>
+<U8035> \x8F\xD5\xDC |0 # <CJK>
+<U8037> \x8F\xD5\xDD |0 # <CJK>
+<U8039> \x8F\xD5\xDE |0 # <CJK>
+<U803A> \x8F\xD5\xDF |0 # <CJK>
+<U803C> \x8F\xD5\xE0 |0 # <CJK>
+<U803E> \x8F\xD5\xE1 |0 # <CJK>
+<U8040> \x8F\xD5\xE2 |0 # <CJK>
+<U8044> \x8F\xD5\xE3 |0 # <CJK>
+<U8060> \x8F\xD5\xE4 |0 # <CJK>
+<U8064> \x8F\xD5\xE5 |0 # <CJK>
+<U8066> \x8F\xD5\xE6 |0 # <CJK>
+<U806D> \x8F\xD5\xE7 |0 # <CJK>
+<U8071> \x8F\xD5\xE8 |0 # <CJK>
+<U8075> \x8F\xD5\xE9 |0 # <CJK>
+<U8081> \x8F\xD5\xEA |0 # <CJK>
+<U8088> \x8F\xD5\xEB |0 # <CJK>
+<U808E> \x8F\xD5\xEC |0 # <CJK>
+<U809C> \x8F\xD5\xED |0 # <CJK>
+<U809E> \x8F\xD5\xEE |0 # <CJK>
+<U80A6> \x8F\xD5\xEF |0 # <CJK>
+<U80A7> \x8F\xD5\xF0 |0 # <CJK>
+<U80AB> \x8F\xD5\xF1 |0 # <CJK>
+<U80B8> \x8F\xD5\xF2 |0 # <CJK>
+<U80B9> \x8F\xD5\xF3 |0 # <CJK>
+<U80C8> \x8F\xD5\xF4 |0 # <CJK>
+<U80CD> \x8F\xD5\xF5 |0 # <CJK>
+<U80CF> \x8F\xD5\xF6 |0 # <CJK>
+<U80D2> \x8F\xD5\xF7 |0 # <CJK>
+<U80D4> \x8F\xD5\xF8 |0 # <CJK>
+<U80D5> \x8F\xD5\xF9 |0 # <CJK>
+<U80D7> \x8F\xD5\xFA |0 # <CJK>
+<U80D8> \x8F\xD5\xFB |0 # <CJK>
+<U80E0> \x8F\xD5\xFC |0 # <CJK>
+<U80ED> \x8F\xD5\xFD |0 # <CJK>
+<U80EE> \x8F\xD5\xFE |0 # <CJK>
+<U80F0> \x8F\xD6\xA1 |0 # <CJK>
+<U80F2> \x8F\xD6\xA2 |0 # <CJK>
+<U80F3> \x8F\xD6\xA3 |0 # <CJK>
+<U80F6> \x8F\xD6\xA4 |0 # <CJK>
+<U80F9> \x8F\xD6\xA5 |0 # <CJK>
+<U80FA> \x8F\xD6\xA6 |0 # <CJK>
+<U80FE> \x8F\xD6\xA7 |0 # <CJK>
+<U8103> \x8F\xD6\xA8 |0 # <CJK>
+<U810B> \x8F\xD6\xA9 |0 # <CJK>
+<U8116> \x8F\xD6\xAA |0 # <CJK>
+<U8117> \x8F\xD6\xAB |0 # <CJK>
+<U8118> \x8F\xD6\xAC |0 # <CJK>
+<U811C> \x8F\xD6\xAD |0 # <CJK>
+<U811E> \x8F\xD6\xAE |0 # <CJK>
+<U8120> \x8F\xD6\xAF |0 # <CJK>
+<U8124> \x8F\xD6\xB0 |0 # <CJK>
+<U8127> \x8F\xD6\xB1 |0 # <CJK>
+<U812C> \x8F\xD6\xB2 |0 # <CJK>
+<U8130> \x8F\xD6\xB3 |0 # <CJK>
+<U8135> \x8F\xD6\xB4 |0 # <CJK>
+<U813A> \x8F\xD6\xB5 |0 # <CJK>
+<U813C> \x8F\xD6\xB6 |0 # <CJK>
+<U8145> \x8F\xD6\xB7 |0 # <CJK>
+<U8147> \x8F\xD6\xB8 |0 # <CJK>
+<U814A> \x8F\xD6\xB9 |0 # <CJK>
+<U814C> \x8F\xD6\xBA |0 # <CJK>
+<U8152> \x8F\xD6\xBB |0 # <CJK>
+<U8157> \x8F\xD6\xBC |0 # <CJK>
+<U8160> \x8F\xD6\xBD |0 # <CJK>
+<U8161> \x8F\xD6\xBE |0 # <CJK>
+<U8167> \x8F\xD6\xBF |0 # <CJK>
+<U8168> \x8F\xD6\xC0 |0 # <CJK>
+<U8169> \x8F\xD6\xC1 |0 # <CJK>
+<U816D> \x8F\xD6\xC2 |0 # <CJK>
+<U816F> \x8F\xD6\xC3 |0 # <CJK>
+<U8177> \x8F\xD6\xC4 |0 # <CJK>
+<U8181> \x8F\xD6\xC5 |0 # <CJK>
+<U8190> \x8F\xD6\xC6 |0 # <CJK>
+<U8184> \x8F\xD6\xC7 |0 # <CJK>
+<U8185> \x8F\xD6\xC8 |0 # <CJK>
+<U8186> \x8F\xD6\xC9 |0 # <CJK>
+<U818B> \x8F\xD6\xCA |0 # <CJK>
+<U818E> \x8F\xD6\xCB |0 # <CJK>
+<U8196> \x8F\xD6\xCC |0 # <CJK>
+<U8198> \x8F\xD6\xCD |0 # <CJK>
+<U819B> \x8F\xD6\xCE |0 # <CJK>
+<U819E> \x8F\xD6\xCF |0 # <CJK>
+<U81A2> \x8F\xD6\xD0 |0 # <CJK>
+<U81AE> \x8F\xD6\xD1 |0 # <CJK>
+<U81B2> \x8F\xD6\xD2 |0 # <CJK>
+<U81B4> \x8F\xD6\xD3 |0 # <CJK>
+<U81BB> \x8F\xD6\xD4 |0 # <CJK>
+<U81CB> \x8F\xD6\xD5 |0 # <CJK>
+<U81C3> \x8F\xD6\xD6 |0 # <CJK>
+<U81C5> \x8F\xD6\xD7 |0 # <CJK>
+<U81CA> \x8F\xD6\xD8 |0 # <CJK>
+<U81CE> \x8F\xD6\xD9 |0 # <CJK>
+<U81CF> \x8F\xD6\xDA |0 # <CJK>
+<U81D5> \x8F\xD6\xDB |0 # <CJK>
+<U81D7> \x8F\xD6\xDC |0 # <CJK>
+<U81DB> \x8F\xD6\xDD |0 # <CJK>
+<U81DD> \x8F\xD6\xDE |0 # <CJK>
+<U81DE> \x8F\xD6\xDF |0 # <CJK>
+<U81E1> \x8F\xD6\xE0 |0 # <CJK>
+<U81E4> \x8F\xD6\xE1 |0 # <CJK>
+<U81EB> \x8F\xD6\xE2 |0 # <CJK>
+<U81EC> \x8F\xD6\xE3 |0 # <CJK>
+<U81F0> \x8F\xD6\xE4 |0 # <CJK>
+<U81F1> \x8F\xD6\xE5 |0 # <CJK>
+<U81F2> \x8F\xD6\xE6 |0 # <CJK>
+<U81F5> \x8F\xD6\xE7 |0 # <CJK>
+<U81F6> \x8F\xD6\xE8 |0 # <CJK>
+<U81F8> \x8F\xD6\xE9 |0 # <CJK>
+<U81F9> \x8F\xD6\xEA |0 # <CJK>
+<U81FD> \x8F\xD6\xEB |0 # <CJK>
+<U81FF> \x8F\xD6\xEC |0 # <CJK>
+<U8200> \x8F\xD6\xED |0 # <CJK>
+<U8203> \x8F\xD6\xEE |0 # <CJK>
+<U820F> \x8F\xD6\xEF |0 # <CJK>
+<U8213> \x8F\xD6\xF0 |0 # <CJK>
+<U8214> \x8F\xD6\xF1 |0 # <CJK>
+<U8219> \x8F\xD6\xF2 |0 # <CJK>
+<U821A> \x8F\xD6\xF3 |0 # <CJK>
+<U821D> \x8F\xD6\xF4 |0 # <CJK>
+<U8221> \x8F\xD6\xF5 |0 # <CJK>
+<U8222> \x8F\xD6\xF6 |0 # <CJK>
+<U8228> \x8F\xD6\xF7 |0 # <CJK>
+<U8232> \x8F\xD6\xF8 |0 # <CJK>
+<U8234> \x8F\xD6\xF9 |0 # <CJK>
+<U823A> \x8F\xD6\xFA |0 # <CJK>
+<U8243> \x8F\xD6\xFB |0 # <CJK>
+<U8244> \x8F\xD6\xFC |0 # <CJK>
+<U8245> \x8F\xD6\xFD |0 # <CJK>
+<U8246> \x8F\xD6\xFE |0 # <CJK>
+<U824B> \x8F\xD7\xA1 |0 # <CJK>
+<U824E> \x8F\xD7\xA2 |0 # <CJK>
+<U824F> \x8F\xD7\xA3 |0 # <CJK>
+<U8251> \x8F\xD7\xA4 |0 # <CJK>
+<U8256> \x8F\xD7\xA5 |0 # <CJK>
+<U825C> \x8F\xD7\xA6 |0 # <CJK>
+<U8260> \x8F\xD7\xA7 |0 # <CJK>
+<U8263> \x8F\xD7\xA8 |0 # <CJK>
+<U8267> \x8F\xD7\xA9 |0 # <CJK>
+<U826D> \x8F\xD7\xAA |0 # <CJK>
+<U8274> \x8F\xD7\xAB |0 # <CJK>
+<U827B> \x8F\xD7\xAC |0 # <CJK>
+<U827D> \x8F\xD7\xAD |0 # <CJK>
+<U827F> \x8F\xD7\xAE |0 # <CJK>
+<U8280> \x8F\xD7\xAF |0 # <CJK>
+<U8281> \x8F\xD7\xB0 |0 # <CJK>
+<U8283> \x8F\xD7\xB1 |0 # <CJK>
+<U8284> \x8F\xD7\xB2 |0 # <CJK>
+<U8287> \x8F\xD7\xB3 |0 # <CJK>
+<U8289> \x8F\xD7\xB4 |0 # <CJK>
+<U828A> \x8F\xD7\xB5 |0 # <CJK>
+<U828E> \x8F\xD7\xB6 |0 # <CJK>
+<U8291> \x8F\xD7\xB7 |0 # <CJK>
+<U8294> \x8F\xD7\xB8 |0 # <CJK>
+<U8296> \x8F\xD7\xB9 |0 # <CJK>
+<U8298> \x8F\xD7\xBA |0 # <CJK>
+<U829A> \x8F\xD7\xBB |0 # <CJK>
+<U829B> \x8F\xD7\xBC |0 # <CJK>
+<U82A0> \x8F\xD7\xBD |0 # <CJK>
+<U82A1> \x8F\xD7\xBE |0 # <CJK>
+<U82A3> \x8F\xD7\xBF |0 # <CJK>
+<U82A4> \x8F\xD7\xC0 |0 # <CJK>
+<U82A7> \x8F\xD7\xC1 |0 # <CJK>
+<U82A8> \x8F\xD7\xC2 |0 # <CJK>
+<U82A9> \x8F\xD7\xC3 |0 # <CJK>
+<U82AA> \x8F\xD7\xC4 |0 # <CJK>
+<U82AE> \x8F\xD7\xC5 |0 # <CJK>
+<U82B0> \x8F\xD7\xC6 |0 # <CJK>
+<U82B2> \x8F\xD7\xC7 |0 # <CJK>
+<U82B4> \x8F\xD7\xC8 |0 # <CJK>
+<U82B7> \x8F\xD7\xC9 |0 # <CJK>
+<U82BA> \x8F\xD7\xCA |0 # <CJK>
+<U82BC> \x8F\xD7\xCB |0 # <CJK>
+<U82BE> \x8F\xD7\xCC |0 # <CJK>
+<U82BF> \x8F\xD7\xCD |0 # <CJK>
+<U82C6> \x8F\xD7\xCE |0 # <CJK>
+<U82D0> \x8F\xD7\xCF |0 # <CJK>
+<U82D5> \x8F\xD7\xD0 |0 # <CJK>
+<U82DA> \x8F\xD7\xD1 |0 # <CJK>
+<U82E0> \x8F\xD7\xD2 |0 # <CJK>
+<U82E2> \x8F\xD7\xD3 |0 # <CJK>
+<U82E4> \x8F\xD7\xD4 |0 # <CJK>
+<U82E8> \x8F\xD7\xD5 |0 # <CJK>
+<U82EA> \x8F\xD7\xD6 |0 # <CJK>
+<U82ED> \x8F\xD7\xD7 |0 # <CJK>
+<U82EF> \x8F\xD7\xD8 |0 # <CJK>
+<U82F6> \x8F\xD7\xD9 |0 # <CJK>
+<U82F7> \x8F\xD7\xDA |0 # <CJK>
+<U82FD> \x8F\xD7\xDB |0 # <CJK>
+<U82FE> \x8F\xD7\xDC |0 # <CJK>
+<U8300> \x8F\xD7\xDD |0 # <CJK>
+<U8301> \x8F\xD7\xDE |0 # <CJK>
+<U8307> \x8F\xD7\xDF |0 # <CJK>
+<U8308> \x8F\xD7\xE0 |0 # <CJK>
+<U830A> \x8F\xD7\xE1 |0 # <CJK>
+<U830B> \x8F\xD7\xE2 |0 # <CJK>
+<U8354> \x8F\xD7\xE3 |0 # <CJK>
+<U831B> \x8F\xD7\xE4 |0 # <CJK>
+<U831D> \x8F\xD7\xE5 |0 # <CJK>
+<U831E> \x8F\xD7\xE6 |0 # <CJK>
+<U831F> \x8F\xD7\xE7 |0 # <CJK>
+<U8321> \x8F\xD7\xE8 |0 # <CJK>
+<U8322> \x8F\xD7\xE9 |0 # <CJK>
+<U832C> \x8F\xD7\xEA |0 # <CJK>
+<U832D> \x8F\xD7\xEB |0 # <CJK>
+<U832E> \x8F\xD7\xEC |0 # <CJK>
+<U8330> \x8F\xD7\xED |0 # <CJK>
+<U8333> \x8F\xD7\xEE |0 # <CJK>
+<U8337> \x8F\xD7\xEF |0 # <CJK>
+<U833A> \x8F\xD7\xF0 |0 # <CJK>
+<U833C> \x8F\xD7\xF1 |0 # <CJK>
+<U833D> \x8F\xD7\xF2 |0 # <CJK>
+<U8342> \x8F\xD7\xF3 |0 # <CJK>
+<U8343> \x8F\xD7\xF4 |0 # <CJK>
+<U8344> \x8F\xD7\xF5 |0 # <CJK>
+<U8347> \x8F\xD7\xF6 |0 # <CJK>
+<U834D> \x8F\xD7\xF7 |0 # <CJK>
+<U834E> \x8F\xD7\xF8 |0 # <CJK>
+<U8351> \x8F\xD7\xF9 |0 # <CJK>
+<U8355> \x8F\xD7\xFA |0 # <CJK>
+<U8356> \x8F\xD7\xFB |0 # <CJK>
+<U8357> \x8F\xD7\xFC |0 # <CJK>
+<U8370> \x8F\xD7\xFD |0 # <CJK>
+<U8378> \x8F\xD7\xFE |0 # <CJK>
+<U837D> \x8F\xD8\xA1 |0 # <CJK>
+<U837F> \x8F\xD8\xA2 |0 # <CJK>
+<U8380> \x8F\xD8\xA3 |0 # <CJK>
+<U8382> \x8F\xD8\xA4 |0 # <CJK>
+<U8384> \x8F\xD8\xA5 |0 # <CJK>
+<U8386> \x8F\xD8\xA6 |0 # <CJK>
+<U838D> \x8F\xD8\xA7 |0 # <CJK>
+<U8392> \x8F\xD8\xA8 |0 # <CJK>
+<U8394> \x8F\xD8\xA9 |0 # <CJK>
+<U8395> \x8F\xD8\xAA |0 # <CJK>
+<U8398> \x8F\xD8\xAB |0 # <CJK>
+<U8399> \x8F\xD8\xAC |0 # <CJK>
+<U839B> \x8F\xD8\xAD |0 # <CJK>
+<U839C> \x8F\xD8\xAE |0 # <CJK>
+<U839D> \x8F\xD8\xAF |0 # <CJK>
+<U83A6> \x8F\xD8\xB0 |0 # <CJK>
+<U83A7> \x8F\xD8\xB1 |0 # <CJK>
+<U83A9> \x8F\xD8\xB2 |0 # <CJK>
+<U83AC> \x8F\xD8\xB3 |0 # <CJK>
+<U83BE> \x8F\xD8\xB4 |0 # <CJK>
+<U83BF> \x8F\xD8\xB5 |0 # <CJK>
+<U83C0> \x8F\xD8\xB6 |0 # <CJK>
+<U83C7> \x8F\xD8\xB7 |0 # <CJK>
+<U83C9> \x8F\xD8\xB8 |0 # <CJK>
+<U83CF> \x8F\xD8\xB9 |0 # <CJK>
+<U83D0> \x8F\xD8\xBA |0 # <CJK>
+<U83D1> \x8F\xD8\xBB |0 # <CJK>
+<U83D4> \x8F\xD8\xBC |0 # <CJK>
+<U83DD> \x8F\xD8\xBD |0 # <CJK>
+<U8353> \x8F\xD8\xBE |0 # <CJK>
+<U83E8> \x8F\xD8\xBF |0 # <CJK>
+<U83EA> \x8F\xD8\xC0 |0 # <CJK>
+<U83F6> \x8F\xD8\xC1 |0 # <CJK>
+<U83F8> \x8F\xD8\xC2 |0 # <CJK>
+<U83F9> \x8F\xD8\xC3 |0 # <CJK>
+<U83FC> \x8F\xD8\xC4 |0 # <CJK>
+<U8401> \x8F\xD8\xC5 |0 # <CJK>
+<U8406> \x8F\xD8\xC6 |0 # <CJK>
+<U840A> \x8F\xD8\xC7 |0 # <CJK>
+<U840F> \x8F\xD8\xC8 |0 # <CJK>
+<U8411> \x8F\xD8\xC9 |0 # <CJK>
+<U8415> \x8F\xD8\xCA |0 # <CJK>
+<U8419> \x8F\xD8\xCB |0 # <CJK>
+<U83AD> \x8F\xD8\xCC |0 # <CJK>
+<U842F> \x8F\xD8\xCD |0 # <CJK>
+<U8439> \x8F\xD8\xCE |0 # <CJK>
+<U8445> \x8F\xD8\xCF |0 # <CJK>
+<U8447> \x8F\xD8\xD0 |0 # <CJK>
+<U8448> \x8F\xD8\xD1 |0 # <CJK>
+<U844A> \x8F\xD8\xD2 |0 # <CJK>
+<U844D> \x8F\xD8\xD3 |0 # <CJK>
+<U844F> \x8F\xD8\xD4 |0 # <CJK>
+<U8451> \x8F\xD8\xD5 |0 # <CJK>
+<U8452> \x8F\xD8\xD6 |0 # <CJK>
+<U8456> \x8F\xD8\xD7 |0 # <CJK>
+<U8458> \x8F\xD8\xD8 |0 # <CJK>
+<U8459> \x8F\xD8\xD9 |0 # <CJK>
+<U845A> \x8F\xD8\xDA |0 # <CJK>
+<U845C> \x8F\xD8\xDB |0 # <CJK>
+<U8460> \x8F\xD8\xDC |0 # <CJK>
+<U8464> \x8F\xD8\xDD |0 # <CJK>
+<U8465> \x8F\xD8\xDE |0 # <CJK>
+<U8467> \x8F\xD8\xDF |0 # <CJK>
+<U846A> \x8F\xD8\xE0 |0 # <CJK>
+<U8470> \x8F\xD8\xE1 |0 # <CJK>
+<U8473> \x8F\xD8\xE2 |0 # <CJK>
+<U8474> \x8F\xD8\xE3 |0 # <CJK>
+<U8476> \x8F\xD8\xE4 |0 # <CJK>
+<U8478> \x8F\xD8\xE5 |0 # <CJK>
+<U847C> \x8F\xD8\xE6 |0 # <CJK>
+<U847D> \x8F\xD8\xE7 |0 # <CJK>
+<U8481> \x8F\xD8\xE8 |0 # <CJK>
+<U8485> \x8F\xD8\xE9 |0 # <CJK>
+<U8492> \x8F\xD8\xEA |0 # <CJK>
+<U8493> \x8F\xD8\xEB |0 # <CJK>
+<U8495> \x8F\xD8\xEC |0 # <CJK>
+<U849E> \x8F\xD8\xED |0 # <CJK>
+<U84A6> \x8F\xD8\xEE |0 # <CJK>
+<U84A8> \x8F\xD8\xEF |0 # <CJK>
+<U84A9> \x8F\xD8\xF0 |0 # <CJK>
+<U84AA> \x8F\xD8\xF1 |0 # <CJK>
+<U84AF> \x8F\xD8\xF2 |0 # <CJK>
+<U84B1> \x8F\xD8\xF3 |0 # <CJK>
+<U84B4> \x8F\xD8\xF4 |0 # <CJK>
+<U84BA> \x8F\xD8\xF5 |0 # <CJK>
+<U84BD> \x8F\xD8\xF6 |0 # <CJK>
+<U84BE> \x8F\xD8\xF7 |0 # <CJK>
+<U84C0> \x8F\xD8\xF8 |0 # <CJK>
+<U84C2> \x8F\xD8\xF9 |0 # <CJK>
+<U84C7> \x8F\xD8\xFA |0 # <CJK>
+<U84C8> \x8F\xD8\xFB |0 # <CJK>
+<U84CC> \x8F\xD8\xFC |0 # <CJK>
+<U84CF> \x8F\xD8\xFD |0 # <CJK>
+<U84D3> \x8F\xD8\xFE |0 # <CJK>
+<U84DC> \x8F\xD9\xA1 |0 # <CJK>
+<U84E7> \x8F\xD9\xA2 |0 # <CJK>
+<U84EA> \x8F\xD9\xA3 |0 # <CJK>
+<U84EF> \x8F\xD9\xA4 |0 # <CJK>
+<U84F0> \x8F\xD9\xA5 |0 # <CJK>
+<U84F1> \x8F\xD9\xA6 |0 # <CJK>
+<U84F2> \x8F\xD9\xA7 |0 # <CJK>
+<U84F7> \x8F\xD9\xA8 |0 # <CJK>
+<U8532> \x8F\xD9\xA9 |0 # <CJK>
+<U84FA> \x8F\xD9\xAA |0 # <CJK>
+<U84FB> \x8F\xD9\xAB |0 # <CJK>
+<U84FD> \x8F\xD9\xAC |0 # <CJK>
+<U8502> \x8F\xD9\xAD |0 # <CJK>
+<U8503> \x8F\xD9\xAE |0 # <CJK>
+<U8507> \x8F\xD9\xAF |0 # <CJK>
+<U850C> \x8F\xD9\xB0 |0 # <CJK>
+<U850E> \x8F\xD9\xB1 |0 # <CJK>
+<U8510> \x8F\xD9\xB2 |0 # <CJK>
+<U851C> \x8F\xD9\xB3 |0 # <CJK>
+<U851E> \x8F\xD9\xB4 |0 # <CJK>
+<U8522> \x8F\xD9\xB5 |0 # <CJK>
+<U8523> \x8F\xD9\xB6 |0 # <CJK>
+<U8524> \x8F\xD9\xB7 |0 # <CJK>
+<U8525> \x8F\xD9\xB8 |0 # <CJK>
+<U8527> \x8F\xD9\xB9 |0 # <CJK>
+<U852A> \x8F\xD9\xBA |0 # <CJK>
+<U852B> \x8F\xD9\xBB |0 # <CJK>
+<U852F> \x8F\xD9\xBC |0 # <CJK>
+<U8533> \x8F\xD9\xBD |0 # <CJK>
+<U8534> \x8F\xD9\xBE |0 # <CJK>
+<U8536> \x8F\xD9\xBF |0 # <CJK>
+<U853F> \x8F\xD9\xC0 |0 # <CJK>
+<U8546> \x8F\xD9\xC1 |0 # <CJK>
+<U854F> \x8F\xD9\xC2 |0 # <CJK>
+<U8550> \x8F\xD9\xC3 |0 # <CJK>
+<U8551> \x8F\xD9\xC4 |0 # <CJK>
+<U8552> \x8F\xD9\xC5 |0 # <CJK>
+<U8553> \x8F\xD9\xC6 |0 # <CJK>
+<U8556> \x8F\xD9\xC7 |0 # <CJK>
+<U8559> \x8F\xD9\xC8 |0 # <CJK>
+<U855C> \x8F\xD9\xC9 |0 # <CJK>
+<U855D> \x8F\xD9\xCA |0 # <CJK>
+<U855E> \x8F\xD9\xCB |0 # <CJK>
+<U855F> \x8F\xD9\xCC |0 # <CJK>
+<U8560> \x8F\xD9\xCD |0 # <CJK>
+<U8561> \x8F\xD9\xCE |0 # <CJK>
+<U8562> \x8F\xD9\xCF |0 # <CJK>
+<U8564> \x8F\xD9\xD0 |0 # <CJK>
+<U856B> \x8F\xD9\xD1 |0 # <CJK>
+<U856F> \x8F\xD9\xD2 |0 # <CJK>
+<U8579> \x8F\xD9\xD3 |0 # <CJK>
+<U857A> \x8F\xD9\xD4 |0 # <CJK>
+<U857B> \x8F\xD9\xD5 |0 # <CJK>
+<U857D> \x8F\xD9\xD6 |0 # <CJK>
+<U857F> \x8F\xD9\xD7 |0 # <CJK>
+<U8581> \x8F\xD9\xD8 |0 # <CJK>
+<U8585> \x8F\xD9\xD9 |0 # <CJK>
+<U8586> \x8F\xD9\xDA |0 # <CJK>
+<U8589> \x8F\xD9\xDB |0 # <CJK>
+<U858B> \x8F\xD9\xDC |0 # <CJK>
+<U858C> \x8F\xD9\xDD |0 # <CJK>
+<U858F> \x8F\xD9\xDE |0 # <CJK>
+<U8593> \x8F\xD9\xDF |0 # <CJK>
+<U8598> \x8F\xD9\xE0 |0 # <CJK>
+<U859D> \x8F\xD9\xE1 |0 # <CJK>
+<U859F> \x8F\xD9\xE2 |0 # <CJK>
+<U85A0> \x8F\xD9\xE3 |0 # <CJK>
+<U85A2> \x8F\xD9\xE4 |0 # <CJK>
+<U85A5> \x8F\xD9\xE5 |0 # <CJK>
+<U85A7> \x8F\xD9\xE6 |0 # <CJK>
+<U85B4> \x8F\xD9\xE7 |0 # <CJK>
+<U85B6> \x8F\xD9\xE8 |0 # <CJK>
+<U85B7> \x8F\xD9\xE9 |0 # <CJK>
+<U85B8> \x8F\xD9\xEA |0 # <CJK>
+<U85BC> \x8F\xD9\xEB |0 # <CJK>
+<U85BD> \x8F\xD9\xEC |0 # <CJK>
+<U85BE> \x8F\xD9\xED |0 # <CJK>
+<U85BF> \x8F\xD9\xEE |0 # <CJK>
+<U85C2> \x8F\xD9\xEF |0 # <CJK>
+<U85C7> \x8F\xD9\xF0 |0 # <CJK>
+<U85CA> \x8F\xD9\xF1 |0 # <CJK>
+<U85CB> \x8F\xD9\xF2 |0 # <CJK>
+<U85CE> \x8F\xD9\xF3 |0 # <CJK>
+<U85AD> \x8F\xD9\xF4 |0 # <CJK>
+<U85D8> \x8F\xD9\xF5 |0 # <CJK>
+<U85DA> \x8F\xD9\xF6 |0 # <CJK>
+<U85DF> \x8F\xD9\xF7 |0 # <CJK>
+<U85E0> \x8F\xD9\xF8 |0 # <CJK>
+<U85E6> \x8F\xD9\xF9 |0 # <CJK>
+<U85E8> \x8F\xD9\xFA |0 # <CJK>
+<U85ED> \x8F\xD9\xFB |0 # <CJK>
+<U85F3> \x8F\xD9\xFC |0 # <CJK>
+<U85F6> \x8F\xD9\xFD |0 # <CJK>
+<U85FC> \x8F\xD9\xFE |0 # <CJK>
+<U85FF> \x8F\xDA\xA1 |0 # <CJK>
+<U8600> \x8F\xDA\xA2 |0 # <CJK>
+<U8604> \x8F\xDA\xA3 |0 # <CJK>
+<U8605> \x8F\xDA\xA4 |0 # <CJK>
+<U860D> \x8F\xDA\xA5 |0 # <CJK>
+<U860E> \x8F\xDA\xA6 |0 # <CJK>
+<U8610> \x8F\xDA\xA7 |0 # <CJK>
+<U8611> \x8F\xDA\xA8 |0 # <CJK>
+<U8612> \x8F\xDA\xA9 |0 # <CJK>
+<U8618> \x8F\xDA\xAA |0 # <CJK>
+<U8619> \x8F\xDA\xAB |0 # <CJK>
+<U861B> \x8F\xDA\xAC |0 # <CJK>
+<U861E> \x8F\xDA\xAD |0 # <CJK>
+<U8621> \x8F\xDA\xAE |0 # <CJK>
+<U8627> \x8F\xDA\xAF |0 # <CJK>
+<U8629> \x8F\xDA\xB0 |0 # <CJK>
+<U8636> \x8F\xDA\xB1 |0 # <CJK>
+<U8638> \x8F\xDA\xB2 |0 # <CJK>
+<U863A> \x8F\xDA\xB3 |0 # <CJK>
+<U863C> \x8F\xDA\xB4 |0 # <CJK>
+<U863D> \x8F\xDA\xB5 |0 # <CJK>
+<U8640> \x8F\xDA\xB6 |0 # <CJK>
+<U8642> \x8F\xDA\xB7 |0 # <CJK>
+<U8646> \x8F\xDA\xB8 |0 # <CJK>
+<U8652> \x8F\xDA\xB9 |0 # <CJK>
+<U8653> \x8F\xDA\xBA |0 # <CJK>
+<U8656> \x8F\xDA\xBB |0 # <CJK>
+<U8657> \x8F\xDA\xBC |0 # <CJK>
+<U8658> \x8F\xDA\xBD |0 # <CJK>
+<U8659> \x8F\xDA\xBE |0 # <CJK>
+<U865D> \x8F\xDA\xBF |0 # <CJK>
+<U8660> \x8F\xDA\xC0 |0 # <CJK>
+<U8661> \x8F\xDA\xC1 |0 # <CJK>
+<U8662> \x8F\xDA\xC2 |0 # <CJK>
+<U8663> \x8F\xDA\xC3 |0 # <CJK>
+<U8664> \x8F\xDA\xC4 |0 # <CJK>
+<U8669> \x8F\xDA\xC5 |0 # <CJK>
+<U866C> \x8F\xDA\xC6 |0 # <CJK>
+<U866F> \x8F\xDA\xC7 |0 # <CJK>
+<U8675> \x8F\xDA\xC8 |0 # <CJK>
+<U8676> \x8F\xDA\xC9 |0 # <CJK>
+<U8677> \x8F\xDA\xCA |0 # <CJK>
+<U867A> \x8F\xDA\xCB |0 # <CJK>
+<U868D> \x8F\xDA\xCC |0 # <CJK>
+<U8691> \x8F\xDA\xCD |0 # <CJK>
+<U8696> \x8F\xDA\xCE |0 # <CJK>
+<U8698> \x8F\xDA\xCF |0 # <CJK>
+<U869A> \x8F\xDA\xD0 |0 # <CJK>
+<U869C> \x8F\xDA\xD1 |0 # <CJK>
+<U86A1> \x8F\xDA\xD2 |0 # <CJK>
+<U86A6> \x8F\xDA\xD3 |0 # <CJK>
+<U86A7> \x8F\xDA\xD4 |0 # <CJK>
+<U86A8> \x8F\xDA\xD5 |0 # <CJK>
+<U86AD> \x8F\xDA\xD6 |0 # <CJK>
+<U86B1> \x8F\xDA\xD7 |0 # <CJK>
+<U86B3> \x8F\xDA\xD8 |0 # <CJK>
+<U86B4> \x8F\xDA\xD9 |0 # <CJK>
+<U86B5> \x8F\xDA\xDA |0 # <CJK>
+<U86B7> \x8F\xDA\xDB |0 # <CJK>
+<U86B8> \x8F\xDA\xDC |0 # <CJK>
+<U86B9> \x8F\xDA\xDD |0 # <CJK>
+<U86BF> \x8F\xDA\xDE |0 # <CJK>
+<U86C0> \x8F\xDA\xDF |0 # <CJK>
+<U86C1> \x8F\xDA\xE0 |0 # <CJK>
+<U86C3> \x8F\xDA\xE1 |0 # <CJK>
+<U86C5> \x8F\xDA\xE2 |0 # <CJK>
+<U86D1> \x8F\xDA\xE3 |0 # <CJK>
+<U86D2> \x8F\xDA\xE4 |0 # <CJK>
+<U86D5> \x8F\xDA\xE5 |0 # <CJK>
+<U86D7> \x8F\xDA\xE6 |0 # <CJK>
+<U86DA> \x8F\xDA\xE7 |0 # <CJK>
+<U86DC> \x8F\xDA\xE8 |0 # <CJK>
+<U86E0> \x8F\xDA\xE9 |0 # <CJK>
+<U86E3> \x8F\xDA\xEA |0 # <CJK>
+<U86E5> \x8F\xDA\xEB |0 # <CJK>
+<U86E7> \x8F\xDA\xEC |0 # <CJK>
+<U8688> \x8F\xDA\xED |0 # <CJK>
+<U86FA> \x8F\xDA\xEE |0 # <CJK>
+<U86FC> \x8F\xDA\xEF |0 # <CJK>
+<U86FD> \x8F\xDA\xF0 |0 # <CJK>
+<U8704> \x8F\xDA\xF1 |0 # <CJK>
+<U8705> \x8F\xDA\xF2 |0 # <CJK>
+<U8707> \x8F\xDA\xF3 |0 # <CJK>
+<U870B> \x8F\xDA\xF4 |0 # <CJK>
+<U870E> \x8F\xDA\xF5 |0 # <CJK>
+<U870F> \x8F\xDA\xF6 |0 # <CJK>
+<U8710> \x8F\xDA\xF7 |0 # <CJK>
+<U8713> \x8F\xDA\xF8 |0 # <CJK>
+<U8714> \x8F\xDA\xF9 |0 # <CJK>
+<U8719> \x8F\xDA\xFA |0 # <CJK>
+<U871E> \x8F\xDA\xFB |0 # <CJK>
+<U871F> \x8F\xDA\xFC |0 # <CJK>
+<U8721> \x8F\xDA\xFD |0 # <CJK>
+<U8723> \x8F\xDA\xFE |0 # <CJK>
+<U8728> \x8F\xDB\xA1 |0 # <CJK>
+<U872E> \x8F\xDB\xA2 |0 # <CJK>
+<U872F> \x8F\xDB\xA3 |0 # <CJK>
+<U8731> \x8F\xDB\xA4 |0 # <CJK>
+<U8732> \x8F\xDB\xA5 |0 # <CJK>
+<U8739> \x8F\xDB\xA6 |0 # <CJK>
+<U873A> \x8F\xDB\xA7 |0 # <CJK>
+<U873C> \x8F\xDB\xA8 |0 # <CJK>
+<U873D> \x8F\xDB\xA9 |0 # <CJK>
+<U873E> \x8F\xDB\xAA |0 # <CJK>
+<U8740> \x8F\xDB\xAB |0 # <CJK>
+<U8743> \x8F\xDB\xAC |0 # <CJK>
+<U8745> \x8F\xDB\xAD |0 # <CJK>
+<U874D> \x8F\xDB\xAE |0 # <CJK>
+<U8758> \x8F\xDB\xAF |0 # <CJK>
+<U875D> \x8F\xDB\xB0 |0 # <CJK>
+<U8761> \x8F\xDB\xB1 |0 # <CJK>
+<U8764> \x8F\xDB\xB2 |0 # <CJK>
+<U8765> \x8F\xDB\xB3 |0 # <CJK>
+<U876F> \x8F\xDB\xB4 |0 # <CJK>
+<U8771> \x8F\xDB\xB5 |0 # <CJK>
+<U8772> \x8F\xDB\xB6 |0 # <CJK>
+<U877B> \x8F\xDB\xB7 |0 # <CJK>
+<U8783> \x8F\xDB\xB8 |0 # <CJK>
+<U8784> \x8F\xDB\xB9 |0 # <CJK>
+<U8785> \x8F\xDB\xBA |0 # <CJK>
+<U8786> \x8F\xDB\xBB |0 # <CJK>
+<U8787> \x8F\xDB\xBC |0 # <CJK>
+<U8788> \x8F\xDB\xBD |0 # <CJK>
+<U8789> \x8F\xDB\xBE |0 # <CJK>
+<U878B> \x8F\xDB\xBF |0 # <CJK>
+<U878C> \x8F\xDB\xC0 |0 # <CJK>
+<U8790> \x8F\xDB\xC1 |0 # <CJK>
+<U8793> \x8F\xDB\xC2 |0 # <CJK>
+<U8795> \x8F\xDB\xC3 |0 # <CJK>
+<U8797> \x8F\xDB\xC4 |0 # <CJK>
+<U8798> \x8F\xDB\xC5 |0 # <CJK>
+<U8799> \x8F\xDB\xC6 |0 # <CJK>
+<U879E> \x8F\xDB\xC7 |0 # <CJK>
+<U87A0> \x8F\xDB\xC8 |0 # <CJK>
+<U87A3> \x8F\xDB\xC9 |0 # <CJK>
+<U87A7> \x8F\xDB\xCA |0 # <CJK>
+<U87AC> \x8F\xDB\xCB |0 # <CJK>
+<U87AD> \x8F\xDB\xCC |0 # <CJK>
+<U87AE> \x8F\xDB\xCD |0 # <CJK>
+<U87B1> \x8F\xDB\xCE |0 # <CJK>
+<U87B5> \x8F\xDB\xCF |0 # <CJK>
+<U87BE> \x8F\xDB\xD0 |0 # <CJK>
+<U87BF> \x8F\xDB\xD1 |0 # <CJK>
+<U87C1> \x8F\xDB\xD2 |0 # <CJK>
+<U87C8> \x8F\xDB\xD3 |0 # <CJK>
+<U87C9> \x8F\xDB\xD4 |0 # <CJK>
+<U87CA> \x8F\xDB\xD5 |0 # <CJK>
+<U87CE> \x8F\xDB\xD6 |0 # <CJK>
+<U87D5> \x8F\xDB\xD7 |0 # <CJK>
+<U87D6> \x8F\xDB\xD8 |0 # <CJK>
+<U87D9> \x8F\xDB\xD9 |0 # <CJK>
+<U87DA> \x8F\xDB\xDA |0 # <CJK>
+<U87DC> \x8F\xDB\xDB |0 # <CJK>
+<U87DF> \x8F\xDB\xDC |0 # <CJK>
+<U87E2> \x8F\xDB\xDD |0 # <CJK>
+<U87E3> \x8F\xDB\xDE |0 # <CJK>
+<U87E4> \x8F\xDB\xDF |0 # <CJK>
+<U87EA> \x8F\xDB\xE0 |0 # <CJK>
+<U87EB> \x8F\xDB\xE1 |0 # <CJK>
+<U87ED> \x8F\xDB\xE2 |0 # <CJK>
+<U87F1> \x8F\xDB\xE3 |0 # <CJK>
+<U87F3> \x8F\xDB\xE4 |0 # <CJK>
+<U87F8> \x8F\xDB\xE5 |0 # <CJK>
+<U87FA> \x8F\xDB\xE6 |0 # <CJK>
+<U87FF> \x8F\xDB\xE7 |0 # <CJK>
+<U8801> \x8F\xDB\xE8 |0 # <CJK>
+<U8803> \x8F\xDB\xE9 |0 # <CJK>
+<U8806> \x8F\xDB\xEA |0 # <CJK>
+<U8809> \x8F\xDB\xEB |0 # <CJK>
+<U880A> \x8F\xDB\xEC |0 # <CJK>
+<U880B> \x8F\xDB\xED |0 # <CJK>
+<U8810> \x8F\xDB\xEE |0 # <CJK>
+<U8819> \x8F\xDB\xEF |0 # <CJK>
+<U8812> \x8F\xDB\xF0 |0 # <CJK>
+<U8813> \x8F\xDB\xF1 |0 # <CJK>
+<U8814> \x8F\xDB\xF2 |0 # <CJK>
+<U8818> \x8F\xDB\xF3 |0 # <CJK>
+<U881A> \x8F\xDB\xF4 |0 # <CJK>
+<U881B> \x8F\xDB\xF5 |0 # <CJK>
+<U881C> \x8F\xDB\xF6 |0 # <CJK>
+<U881E> \x8F\xDB\xF7 |0 # <CJK>
+<U881F> \x8F\xDB\xF8 |0 # <CJK>
+<U8828> \x8F\xDB\xF9 |0 # <CJK>
+<U882D> \x8F\xDB\xFA |0 # <CJK>
+<U882E> \x8F\xDB\xFB |0 # <CJK>
+<U8830> \x8F\xDB\xFC |0 # <CJK>
+<U8832> \x8F\xDB\xFD |0 # <CJK>
+<U8835> \x8F\xDB\xFE |0 # <CJK>
+<U883A> \x8F\xDC\xA1 |0 # <CJK>
+<U883C> \x8F\xDC\xA2 |0 # <CJK>
+<U8841> \x8F\xDC\xA3 |0 # <CJK>
+<U8843> \x8F\xDC\xA4 |0 # <CJK>
+<U8845> \x8F\xDC\xA5 |0 # <CJK>
+<U8848> \x8F\xDC\xA6 |0 # <CJK>
+<U8849> \x8F\xDC\xA7 |0 # <CJK>
+<U884A> \x8F\xDC\xA8 |0 # <CJK>
+<U884B> \x8F\xDC\xA9 |0 # <CJK>
+<U884E> \x8F\xDC\xAA |0 # <CJK>
+<U8851> \x8F\xDC\xAB |0 # <CJK>
+<U8855> \x8F\xDC\xAC |0 # <CJK>
+<U8856> \x8F\xDC\xAD |0 # <CJK>
+<U8858> \x8F\xDC\xAE |0 # <CJK>
+<U885A> \x8F\xDC\xAF |0 # <CJK>
+<U885C> \x8F\xDC\xB0 |0 # <CJK>
+<U885F> \x8F\xDC\xB1 |0 # <CJK>
+<U8860> \x8F\xDC\xB2 |0 # <CJK>
+<U8864> \x8F\xDC\xB3 |0 # <CJK>
+<U8869> \x8F\xDC\xB4 |0 # <CJK>
+<U8871> \x8F\xDC\xB5 |0 # <CJK>
+<U8879> \x8F\xDC\xB6 |0 # <CJK>
+<U887B> \x8F\xDC\xB7 |0 # <CJK>
+<U8880> \x8F\xDC\xB8 |0 # <CJK>
+<U8898> \x8F\xDC\xB9 |0 # <CJK>
+<U889A> \x8F\xDC\xBA |0 # <CJK>
+<U889B> \x8F\xDC\xBB |0 # <CJK>
+<U889C> \x8F\xDC\xBC |0 # <CJK>
+<U889F> \x8F\xDC\xBD |0 # <CJK>
+<U88A0> \x8F\xDC\xBE |0 # <CJK>
+<U88A8> \x8F\xDC\xBF |0 # <CJK>
+<U88AA> \x8F\xDC\xC0 |0 # <CJK>
+<U88BA> \x8F\xDC\xC1 |0 # <CJK>
+<U88BD> \x8F\xDC\xC2 |0 # <CJK>
+<U88BE> \x8F\xDC\xC3 |0 # <CJK>
+<U88C0> \x8F\xDC\xC4 |0 # <CJK>
+<U88CA> \x8F\xDC\xC5 |0 # <CJK>
+<U88CB> \x8F\xDC\xC6 |0 # <CJK>
+<U88CC> \x8F\xDC\xC7 |0 # <CJK>
+<U88CD> \x8F\xDC\xC8 |0 # <CJK>
+<U88CE> \x8F\xDC\xC9 |0 # <CJK>
+<U88D1> \x8F\xDC\xCA |0 # <CJK>
+<U88D2> \x8F\xDC\xCB |0 # <CJK>
+<U88D3> \x8F\xDC\xCC |0 # <CJK>
+<U88DB> \x8F\xDC\xCD |0 # <CJK>
+<U88DE> \x8F\xDC\xCE |0 # <CJK>
+<U88E7> \x8F\xDC\xCF |0 # <CJK>
+<U88EF> \x8F\xDC\xD0 |0 # <CJK>
+<U88F0> \x8F\xDC\xD1 |0 # <CJK>
+<U88F1> \x8F\xDC\xD2 |0 # <CJK>
+<U88F5> \x8F\xDC\xD3 |0 # <CJK>
+<U88F7> \x8F\xDC\xD4 |0 # <CJK>
+<U8901> \x8F\xDC\xD5 |0 # <CJK>
+<U8906> \x8F\xDC\xD6 |0 # <CJK>
+<U890D> \x8F\xDC\xD7 |0 # <CJK>
+<U890E> \x8F\xDC\xD8 |0 # <CJK>
+<U890F> \x8F\xDC\xD9 |0 # <CJK>
+<U8915> \x8F\xDC\xDA |0 # <CJK>
+<U8916> \x8F\xDC\xDB |0 # <CJK>
+<U8918> \x8F\xDC\xDC |0 # <CJK>
+<U8919> \x8F\xDC\xDD |0 # <CJK>
+<U891A> \x8F\xDC\xDE |0 # <CJK>
+<U891C> \x8F\xDC\xDF |0 # <CJK>
+<U8920> \x8F\xDC\xE0 |0 # <CJK>
+<U8926> \x8F\xDC\xE1 |0 # <CJK>
+<U8927> \x8F\xDC\xE2 |0 # <CJK>
+<U8928> \x8F\xDC\xE3 |0 # <CJK>
+<U8930> \x8F\xDC\xE4 |0 # <CJK>
+<U8931> \x8F\xDC\xE5 |0 # <CJK>
+<U8932> \x8F\xDC\xE6 |0 # <CJK>
+<U8935> \x8F\xDC\xE7 |0 # <CJK>
+<U8939> \x8F\xDC\xE8 |0 # <CJK>
+<U893A> \x8F\xDC\xE9 |0 # <CJK>
+<U893E> \x8F\xDC\xEA |0 # <CJK>
+<U8940> \x8F\xDC\xEB |0 # <CJK>
+<U8942> \x8F\xDC\xEC |0 # <CJK>
+<U8945> \x8F\xDC\xED |0 # <CJK>
+<U8946> \x8F\xDC\xEE |0 # <CJK>
+<U8949> \x8F\xDC\xEF |0 # <CJK>
+<U894F> \x8F\xDC\xF0 |0 # <CJK>
+<U8952> \x8F\xDC\xF1 |0 # <CJK>
+<U8957> \x8F\xDC\xF2 |0 # <CJK>
+<U895A> \x8F\xDC\xF3 |0 # <CJK>
+<U895B> \x8F\xDC\xF4 |0 # <CJK>
+<U895C> \x8F\xDC\xF5 |0 # <CJK>
+<U8961> \x8F\xDC\xF6 |0 # <CJK>
+<U8962> \x8F\xDC\xF7 |0 # <CJK>
+<U8963> \x8F\xDC\xF8 |0 # <CJK>
+<U896B> \x8F\xDC\xF9 |0 # <CJK>
+<U896E> \x8F\xDC\xFA |0 # <CJK>
+<U8970> \x8F\xDC\xFB |0 # <CJK>
+<U8973> \x8F\xDC\xFC |0 # <CJK>
+<U8975> \x8F\xDC\xFD |0 # <CJK>
+<U897A> \x8F\xDC\xFE |0 # <CJK>
+<U897B> \x8F\xDD\xA1 |0 # <CJK>
+<U897C> \x8F\xDD\xA2 |0 # <CJK>
+<U897D> \x8F\xDD\xA3 |0 # <CJK>
+<U8989> \x8F\xDD\xA4 |0 # <CJK>
+<U898D> \x8F\xDD\xA5 |0 # <CJK>
+<U8990> \x8F\xDD\xA6 |0 # <CJK>
+<U8994> \x8F\xDD\xA7 |0 # <CJK>
+<U8995> \x8F\xDD\xA8 |0 # <CJK>
+<U899B> \x8F\xDD\xA9 |0 # <CJK>
+<U899C> \x8F\xDD\xAA |0 # <CJK>
+<U899F> \x8F\xDD\xAB |0 # <CJK>
+<U89A0> \x8F\xDD\xAC |0 # <CJK>
+<U89A5> \x8F\xDD\xAD |0 # <CJK>
+<U89B0> \x8F\xDD\xAE |0 # <CJK>
+<U89B4> \x8F\xDD\xAF |0 # <CJK>
+<U89B5> \x8F\xDD\xB0 |0 # <CJK>
+<U89B6> \x8F\xDD\xB1 |0 # <CJK>
+<U89B7> \x8F\xDD\xB2 |0 # <CJK>
+<U89BC> \x8F\xDD\xB3 |0 # <CJK>
+<U89D4> \x8F\xDD\xB4 |0 # <CJK>
+<U89D5> \x8F\xDD\xB5 |0 # <CJK>
+<U89D6> \x8F\xDD\xB6 |0 # <CJK>
+<U89D7> \x8F\xDD\xB7 |0 # <CJK>
+<U89D8> \x8F\xDD\xB8 |0 # <CJK>
+<U89E5> \x8F\xDD\xB9 |0 # <CJK>
+<U89E9> \x8F\xDD\xBA |0 # <CJK>
+<U89EB> \x8F\xDD\xBB |0 # <CJK>
+<U89ED> \x8F\xDD\xBC |0 # <CJK>
+<U89F1> \x8F\xDD\xBD |0 # <CJK>
+<U89F3> \x8F\xDD\xBE |0 # <CJK>
+<U89F6> \x8F\xDD\xBF |0 # <CJK>
+<U89F9> \x8F\xDD\xC0 |0 # <CJK>
+<U89FD> \x8F\xDD\xC1 |0 # <CJK>
+<U89FF> \x8F\xDD\xC2 |0 # <CJK>
+<U8A04> \x8F\xDD\xC3 |0 # <CJK>
+<U8A05> \x8F\xDD\xC4 |0 # <CJK>
+<U8A07> \x8F\xDD\xC5 |0 # <CJK>
+<U8A0F> \x8F\xDD\xC6 |0 # <CJK>
+<U8A11> \x8F\xDD\xC7 |0 # <CJK>
+<U8A12> \x8F\xDD\xC8 |0 # <CJK>
+<U8A14> \x8F\xDD\xC9 |0 # <CJK>
+<U8A15> \x8F\xDD\xCA |0 # <CJK>
+<U8A1E> \x8F\xDD\xCB |0 # <CJK>
+<U8A20> \x8F\xDD\xCC |0 # <CJK>
+<U8A22> \x8F\xDD\xCD |0 # <CJK>
+<U8A24> \x8F\xDD\xCE |0 # <CJK>
+<U8A26> \x8F\xDD\xCF |0 # <CJK>
+<U8A2B> \x8F\xDD\xD0 |0 # <CJK>
+<U8A2C> \x8F\xDD\xD1 |0 # <CJK>
+<U8A2F> \x8F\xDD\xD2 |0 # <CJK>
+<U8A35> \x8F\xDD\xD3 |0 # <CJK>
+<U8A37> \x8F\xDD\xD4 |0 # <CJK>
+<U8A3D> \x8F\xDD\xD5 |0 # <CJK>
+<U8A3E> \x8F\xDD\xD6 |0 # <CJK>
+<U8A40> \x8F\xDD\xD7 |0 # <CJK>
+<U8A43> \x8F\xDD\xD8 |0 # <CJK>
+<U8A45> \x8F\xDD\xD9 |0 # <CJK>
+<U8A47> \x8F\xDD\xDA |0 # <CJK>
+<U8A49> \x8F\xDD\xDB |0 # <CJK>
+<U8A4D> \x8F\xDD\xDC |0 # <CJK>
+<U8A4E> \x8F\xDD\xDD |0 # <CJK>
+<U8A53> \x8F\xDD\xDE |0 # <CJK>
+<U8A56> \x8F\xDD\xDF |0 # <CJK>
+<U8A57> \x8F\xDD\xE0 |0 # <CJK>
+<U8A58> \x8F\xDD\xE1 |0 # <CJK>
+<U8A5C> \x8F\xDD\xE2 |0 # <CJK>
+<U8A5D> \x8F\xDD\xE3 |0 # <CJK>
+<U8A61> \x8F\xDD\xE4 |0 # <CJK>
+<U8A65> \x8F\xDD\xE5 |0 # <CJK>
+<U8A67> \x8F\xDD\xE6 |0 # <CJK>
+<U8A75> \x8F\xDD\xE7 |0 # <CJK>
+<U8A76> \x8F\xDD\xE8 |0 # <CJK>
+<U8A77> \x8F\xDD\xE9 |0 # <CJK>
+<U8A79> \x8F\xDD\xEA |0 # <CJK>
+<U8A7A> \x8F\xDD\xEB |0 # <CJK>
+<U8A7B> \x8F\xDD\xEC |0 # <CJK>
+<U8A7E> \x8F\xDD\xED |0 # <CJK>
+<U8A7F> \x8F\xDD\xEE |0 # <CJK>
+<U8A80> \x8F\xDD\xEF |0 # <CJK>
+<U8A83> \x8F\xDD\xF0 |0 # <CJK>
+<U8A86> \x8F\xDD\xF1 |0 # <CJK>
+<U8A8B> \x8F\xDD\xF2 |0 # <CJK>
+<U8A8F> \x8F\xDD\xF3 |0 # <CJK>
+<U8A90> \x8F\xDD\xF4 |0 # <CJK>
+<U8A92> \x8F\xDD\xF5 |0 # <CJK>
+<U8A96> \x8F\xDD\xF6 |0 # <CJK>
+<U8A97> \x8F\xDD\xF7 |0 # <CJK>
+<U8A99> \x8F\xDD\xF8 |0 # <CJK>
+<U8A9F> \x8F\xDD\xF9 |0 # <CJK>
+<U8AA7> \x8F\xDD\xFA |0 # <CJK>
+<U8AA9> \x8F\xDD\xFB |0 # <CJK>
+<U8AAE> \x8F\xDD\xFC |0 # <CJK>
+<U8AAF> \x8F\xDD\xFD |0 # <CJK>
+<U8AB3> \x8F\xDD\xFE |0 # <CJK>
+<U8AB6> \x8F\xDE\xA1 |0 # <CJK>
+<U8AB7> \x8F\xDE\xA2 |0 # <CJK>
+<U8ABB> \x8F\xDE\xA3 |0 # <CJK>
+<U8ABE> \x8F\xDE\xA4 |0 # <CJK>
+<U8AC3> \x8F\xDE\xA5 |0 # <CJK>
+<U8AC6> \x8F\xDE\xA6 |0 # <CJK>
+<U8AC8> \x8F\xDE\xA7 |0 # <CJK>
+<U8AC9> \x8F\xDE\xA8 |0 # <CJK>
+<U8ACA> \x8F\xDE\xA9 |0 # <CJK>
+<U8AD1> \x8F\xDE\xAA |0 # <CJK>
+<U8AD3> \x8F\xDE\xAB |0 # <CJK>
+<U8AD4> \x8F\xDE\xAC |0 # <CJK>
+<U8AD5> \x8F\xDE\xAD |0 # <CJK>
+<U8AD7> \x8F\xDE\xAE |0 # <CJK>
+<U8ADD> \x8F\xDE\xAF |0 # <CJK>
+<U8ADF> \x8F\xDE\xB0 |0 # <CJK>
+<U8AEC> \x8F\xDE\xB1 |0 # <CJK>
+<U8AF0> \x8F\xDE\xB2 |0 # <CJK>
+<U8AF4> \x8F\xDE\xB3 |0 # <CJK>
+<U8AF5> \x8F\xDE\xB4 |0 # <CJK>
+<U8AF6> \x8F\xDE\xB5 |0 # <CJK>
+<U8AFC> \x8F\xDE\xB6 |0 # <CJK>
+<U8AFF> \x8F\xDE\xB7 |0 # <CJK>
+<U8B05> \x8F\xDE\xB8 |0 # <CJK>
+<U8B06> \x8F\xDE\xB9 |0 # <CJK>
+<U8B0B> \x8F\xDE\xBA |0 # <CJK>
+<U8B11> \x8F\xDE\xBB |0 # <CJK>
+<U8B1C> \x8F\xDE\xBC |0 # <CJK>
+<U8B1E> \x8F\xDE\xBD |0 # <CJK>
+<U8B1F> \x8F\xDE\xBE |0 # <CJK>
+<U8B0A> \x8F\xDE\xBF |0 # <CJK>
+<U8B2D> \x8F\xDE\xC0 |0 # <CJK>
+<U8B30> \x8F\xDE\xC1 |0 # <CJK>
+<U8B37> \x8F\xDE\xC2 |0 # <CJK>
+<U8B3C> \x8F\xDE\xC3 |0 # <CJK>
+<U8B42> \x8F\xDE\xC4 |0 # <CJK>
+<U8B43> \x8F\xDE\xC5 |0 # <CJK>
+<U8B44> \x8F\xDE\xC6 |0 # <CJK>
+<U8B45> \x8F\xDE\xC7 |0 # <CJK>
+<U8B46> \x8F\xDE\xC8 |0 # <CJK>
+<U8B48> \x8F\xDE\xC9 |0 # <CJK>
+<U8B52> \x8F\xDE\xCA |0 # <CJK>
+<U8B53> \x8F\xDE\xCB |0 # <CJK>
+<U8B54> \x8F\xDE\xCC |0 # <CJK>
+<U8B59> \x8F\xDE\xCD |0 # <CJK>
+<U8B4D> \x8F\xDE\xCE |0 # <CJK>
+<U8B5E> \x8F\xDE\xCF |0 # <CJK>
+<U8B63> \x8F\xDE\xD0 |0 # <CJK>
+<U8B6D> \x8F\xDE\xD1 |0 # <CJK>
+<U8B76> \x8F\xDE\xD2 |0 # <CJK>
+<U8B78> \x8F\xDE\xD3 |0 # <CJK>
+<U8B79> \x8F\xDE\xD4 |0 # <CJK>
+<U8B7C> \x8F\xDE\xD5 |0 # <CJK>
+<U8B7E> \x8F\xDE\xD6 |0 # <CJK>
+<U8B81> \x8F\xDE\xD7 |0 # <CJK>
+<U8B84> \x8F\xDE\xD8 |0 # <CJK>
+<U8B85> \x8F\xDE\xD9 |0 # <CJK>
+<U8B8B> \x8F\xDE\xDA |0 # <CJK>
+<U8B8D> \x8F\xDE\xDB |0 # <CJK>
+<U8B8F> \x8F\xDE\xDC |0 # <CJK>
+<U8B94> \x8F\xDE\xDD |0 # <CJK>
+<U8B95> \x8F\xDE\xDE |0 # <CJK>
+<U8B9C> \x8F\xDE\xDF |0 # <CJK>
+<U8B9E> \x8F\xDE\xE0 |0 # <CJK>
+<U8B9F> \x8F\xDE\xE1 |0 # <CJK>
+<U8C38> \x8F\xDE\xE2 |0 # <CJK>
+<U8C39> \x8F\xDE\xE3 |0 # <CJK>
+<U8C3D> \x8F\xDE\xE4 |0 # <CJK>
+<U8C3E> \x8F\xDE\xE5 |0 # <CJK>
+<U8C45> \x8F\xDE\xE6 |0 # <CJK>
+<U8C47> \x8F\xDE\xE7 |0 # <CJK>
+<U8C49> \x8F\xDE\xE8 |0 # <CJK>
+<U8C4B> \x8F\xDE\xE9 |0 # <CJK>
+<U8C4F> \x8F\xDE\xEA |0 # <CJK>
+<U8C51> \x8F\xDE\xEB |0 # <CJK>
+<U8C53> \x8F\xDE\xEC |0 # <CJK>
+<U8C54> \x8F\xDE\xED |0 # <CJK>
+<U8C57> \x8F\xDE\xEE |0 # <CJK>
+<U8C58> \x8F\xDE\xEF |0 # <CJK>
+<U8C5B> \x8F\xDE\xF0 |0 # <CJK>
+<U8C5D> \x8F\xDE\xF1 |0 # <CJK>
+<U8C59> \x8F\xDE\xF2 |0 # <CJK>
+<U8C63> \x8F\xDE\xF3 |0 # <CJK>
+<U8C64> \x8F\xDE\xF4 |0 # <CJK>
+<U8C66> \x8F\xDE\xF5 |0 # <CJK>
+<U8C68> \x8F\xDE\xF6 |0 # <CJK>
+<U8C69> \x8F\xDE\xF7 |0 # <CJK>
+<U8C6D> \x8F\xDE\xF8 |0 # <CJK>
+<U8C73> \x8F\xDE\xF9 |0 # <CJK>
+<U8C75> \x8F\xDE\xFA |0 # <CJK>
+<U8C76> \x8F\xDE\xFB |0 # <CJK>
+<U8C7B> \x8F\xDE\xFC |0 # <CJK>
+<U8C7E> \x8F\xDE\xFD |0 # <CJK>
+<U8C86> \x8F\xDE\xFE |0 # <CJK>
+<U8C87> \x8F\xDF\xA1 |0 # <CJK>
+<U8C8B> \x8F\xDF\xA2 |0 # <CJK>
+<U8C90> \x8F\xDF\xA3 |0 # <CJK>
+<U8C92> \x8F\xDF\xA4 |0 # <CJK>
+<U8C93> \x8F\xDF\xA5 |0 # <CJK>
+<U8C99> \x8F\xDF\xA6 |0 # <CJK>
+<U8C9B> \x8F\xDF\xA7 |0 # <CJK>
+<U8C9C> \x8F\xDF\xA8 |0 # <CJK>
+<U8CA4> \x8F\xDF\xA9 |0 # <CJK>
+<U8CB9> \x8F\xDF\xAA |0 # <CJK>
+<U8CBA> \x8F\xDF\xAB |0 # <CJK>
+<U8CC5> \x8F\xDF\xAC |0 # <CJK>
+<U8CC6> \x8F\xDF\xAD |0 # <CJK>
+<U8CC9> \x8F\xDF\xAE |0 # <CJK>
+<U8CCB> \x8F\xDF\xAF |0 # <CJK>
+<U8CCF> \x8F\xDF\xB0 |0 # <CJK>
+<U8CD6> \x8F\xDF\xB1 |0 # <CJK>
+<U8CD5> \x8F\xDF\xB2 |0 # <CJK>
+<U8CD9> \x8F\xDF\xB3 |0 # <CJK>
+<U8CDD> \x8F\xDF\xB4 |0 # <CJK>
+<U8CE1> \x8F\xDF\xB5 |0 # <CJK>
+<U8CE8> \x8F\xDF\xB6 |0 # <CJK>
+<U8CEC> \x8F\xDF\xB7 |0 # <CJK>
+<U8CEF> \x8F\xDF\xB8 |0 # <CJK>
+<U8CF0> \x8F\xDF\xB9 |0 # <CJK>
+<U8CF2> \x8F\xDF\xBA |0 # <CJK>
+<U8CF5> \x8F\xDF\xBB |0 # <CJK>
+<U8CF7> \x8F\xDF\xBC |0 # <CJK>
+<U8CF8> \x8F\xDF\xBD |0 # <CJK>
+<U8CFE> \x8F\xDF\xBE |0 # <CJK>
+<U8CFF> \x8F\xDF\xBF |0 # <CJK>
+<U8D01> \x8F\xDF\xC0 |0 # <CJK>
+<U8D03> \x8F\xDF\xC1 |0 # <CJK>
+<U8D09> \x8F\xDF\xC2 |0 # <CJK>
+<U8D12> \x8F\xDF\xC3 |0 # <CJK>
+<U8D17> \x8F\xDF\xC4 |0 # <CJK>
+<U8D1B> \x8F\xDF\xC5 |0 # <CJK>
+<U8D65> \x8F\xDF\xC6 |0 # <CJK>
+<U8D69> \x8F\xDF\xC7 |0 # <CJK>
+<U8D6C> \x8F\xDF\xC8 |0 # <CJK>
+<U8D6E> \x8F\xDF\xC9 |0 # <CJK>
+<U8D7F> \x8F\xDF\xCA |0 # <CJK>
+<U8D82> \x8F\xDF\xCB |0 # <CJK>
+<U8D84> \x8F\xDF\xCC |0 # <CJK>
+<U8D88> \x8F\xDF\xCD |0 # <CJK>
+<U8D8D> \x8F\xDF\xCE |0 # <CJK>
+<U8D90> \x8F\xDF\xCF |0 # <CJK>
+<U8D91> \x8F\xDF\xD0 |0 # <CJK>
+<U8D95> \x8F\xDF\xD1 |0 # <CJK>
+<U8D9E> \x8F\xDF\xD2 |0 # <CJK>
+<U8D9F> \x8F\xDF\xD3 |0 # <CJK>
+<U8DA0> \x8F\xDF\xD4 |0 # <CJK>
+<U8DA6> \x8F\xDF\xD5 |0 # <CJK>
+<U8DAB> \x8F\xDF\xD6 |0 # <CJK>
+<U8DAC> \x8F\xDF\xD7 |0 # <CJK>
+<U8DAF> \x8F\xDF\xD8 |0 # <CJK>
+<U8DB2> \x8F\xDF\xD9 |0 # <CJK>
+<U8DB5> \x8F\xDF\xDA |0 # <CJK>
+<U8DB7> \x8F\xDF\xDB |0 # <CJK>
+<U8DB9> \x8F\xDF\xDC |0 # <CJK>
+<U8DBB> \x8F\xDF\xDD |0 # <CJK>
+<U8DC0> \x8F\xDF\xDE |0 # <CJK>
+<U8DC5> \x8F\xDF\xDF |0 # <CJK>
+<U8DC6> \x8F\xDF\xE0 |0 # <CJK>
+<U8DC7> \x8F\xDF\xE1 |0 # <CJK>
+<U8DC8> \x8F\xDF\xE2 |0 # <CJK>
+<U8DCA> \x8F\xDF\xE3 |0 # <CJK>
+<U8DCE> \x8F\xDF\xE4 |0 # <CJK>
+<U8DD1> \x8F\xDF\xE5 |0 # <CJK>
+<U8DD4> \x8F\xDF\xE6 |0 # <CJK>
+<U8DD5> \x8F\xDF\xE7 |0 # <CJK>
+<U8DD7> \x8F\xDF\xE8 |0 # <CJK>
+<U8DD9> \x8F\xDF\xE9 |0 # <CJK>
+<U8DE4> \x8F\xDF\xEA |0 # <CJK>
+<U8DE5> \x8F\xDF\xEB |0 # <CJK>
+<U8DE7> \x8F\xDF\xEC |0 # <CJK>
+<U8DEC> \x8F\xDF\xED |0 # <CJK>
+<U8DF0> \x8F\xDF\xEE |0 # <CJK>
+<U8DBC> \x8F\xDF\xEF |0 # <CJK>
+<U8DF1> \x8F\xDF\xF0 |0 # <CJK>
+<U8DF2> \x8F\xDF\xF1 |0 # <CJK>
+<U8DF4> \x8F\xDF\xF2 |0 # <CJK>
+<U8DFD> \x8F\xDF\xF3 |0 # <CJK>
+<U8E01> \x8F\xDF\xF4 |0 # <CJK>
+<U8E04> \x8F\xDF\xF5 |0 # <CJK>
+<U8E05> \x8F\xDF\xF6 |0 # <CJK>
+<U8E06> \x8F\xDF\xF7 |0 # <CJK>
+<U8E0B> \x8F\xDF\xF8 |0 # <CJK>
+<U8E11> \x8F\xDF\xF9 |0 # <CJK>
+<U8E14> \x8F\xDF\xFA |0 # <CJK>
+<U8E16> \x8F\xDF\xFB |0 # <CJK>
+<U8E20> \x8F\xDF\xFC |0 # <CJK>
+<U8E21> \x8F\xDF\xFD |0 # <CJK>
+<U8E22> \x8F\xDF\xFE |0 # <CJK>
+<U8E23> \x8F\xE0\xA1 |0 # <CJK>
+<U8E26> \x8F\xE0\xA2 |0 # <CJK>
+<U8E27> \x8F\xE0\xA3 |0 # <CJK>
+<U8E31> \x8F\xE0\xA4 |0 # <CJK>
+<U8E33> \x8F\xE0\xA5 |0 # <CJK>
+<U8E36> \x8F\xE0\xA6 |0 # <CJK>
+<U8E37> \x8F\xE0\xA7 |0 # <CJK>
+<U8E38> \x8F\xE0\xA8 |0 # <CJK>
+<U8E39> \x8F\xE0\xA9 |0 # <CJK>
+<U8E3D> \x8F\xE0\xAA |0 # <CJK>
+<U8E40> \x8F\xE0\xAB |0 # <CJK>
+<U8E41> \x8F\xE0\xAC |0 # <CJK>
+<U8E4B> \x8F\xE0\xAD |0 # <CJK>
+<U8E4D> \x8F\xE0\xAE |0 # <CJK>
+<U8E4E> \x8F\xE0\xAF |0 # <CJK>
+<U8E4F> \x8F\xE0\xB0 |0 # <CJK>
+<U8E54> \x8F\xE0\xB1 |0 # <CJK>
+<U8E5B> \x8F\xE0\xB2 |0 # <CJK>
+<U8E5C> \x8F\xE0\xB3 |0 # <CJK>
+<U8E5D> \x8F\xE0\xB4 |0 # <CJK>
+<U8E5E> \x8F\xE0\xB5 |0 # <CJK>
+<U8E61> \x8F\xE0\xB6 |0 # <CJK>
+<U8E62> \x8F\xE0\xB7 |0 # <CJK>
+<U8E69> \x8F\xE0\xB8 |0 # <CJK>
+<U8E6C> \x8F\xE0\xB9 |0 # <CJK>
+<U8E6D> \x8F\xE0\xBA |0 # <CJK>
+<U8E6F> \x8F\xE0\xBB |0 # <CJK>
+<U8E70> \x8F\xE0\xBC |0 # <CJK>
+<U8E71> \x8F\xE0\xBD |0 # <CJK>
+<U8E79> \x8F\xE0\xBE |0 # <CJK>
+<U8E7A> \x8F\xE0\xBF |0 # <CJK>
+<U8E7B> \x8F\xE0\xC0 |0 # <CJK>
+<U8E82> \x8F\xE0\xC1 |0 # <CJK>
+<U8E83> \x8F\xE0\xC2 |0 # <CJK>
+<U8E89> \x8F\xE0\xC3 |0 # <CJK>
+<U8E90> \x8F\xE0\xC4 |0 # <CJK>
+<U8E92> \x8F\xE0\xC5 |0 # <CJK>
+<U8E95> \x8F\xE0\xC6 |0 # <CJK>
+<U8E9A> \x8F\xE0\xC7 |0 # <CJK>
+<U8E9B> \x8F\xE0\xC8 |0 # <CJK>
+<U8E9D> \x8F\xE0\xC9 |0 # <CJK>
+<U8E9E> \x8F\xE0\xCA |0 # <CJK>
+<U8EA2> \x8F\xE0\xCB |0 # <CJK>
+<U8EA7> \x8F\xE0\xCC |0 # <CJK>
+<U8EA9> \x8F\xE0\xCD |0 # <CJK>
+<U8EAD> \x8F\xE0\xCE |0 # <CJK>
+<U8EAE> \x8F\xE0\xCF |0 # <CJK>
+<U8EB3> \x8F\xE0\xD0 |0 # <CJK>
+<U8EB5> \x8F\xE0\xD1 |0 # <CJK>
+<U8EBA> \x8F\xE0\xD2 |0 # <CJK>
+<U8EBB> \x8F\xE0\xD3 |0 # <CJK>
+<U8EC0> \x8F\xE0\xD4 |0 # <CJK>
+<U8EC1> \x8F\xE0\xD5 |0 # <CJK>
+<U8EC3> \x8F\xE0\xD6 |0 # <CJK>
+<U8EC4> \x8F\xE0\xD7 |0 # <CJK>
+<U8EC7> \x8F\xE0\xD8 |0 # <CJK>
+<U8ECF> \x8F\xE0\xD9 |0 # <CJK>
+<U8ED1> \x8F\xE0\xDA |0 # <CJK>
+<U8ED4> \x8F\xE0\xDB |0 # <CJK>
+<U8EDC> \x8F\xE0\xDC |0 # <CJK>
+<U8EE8> \x8F\xE0\xDD |0 # <CJK>
+<U8EEE> \x8F\xE0\xDE |0 # <CJK>
+<U8EF0> \x8F\xE0\xDF |0 # <CJK>
+<U8EF1> \x8F\xE0\xE0 |0 # <CJK>
+<U8EF7> \x8F\xE0\xE1 |0 # <CJK>
+<U8EF9> \x8F\xE0\xE2 |0 # <CJK>
+<U8EFA> \x8F\xE0\xE3 |0 # <CJK>
+<U8EED> \x8F\xE0\xE4 |0 # <CJK>
+<U8F00> \x8F\xE0\xE5 |0 # <CJK>
+<U8F02> \x8F\xE0\xE6 |0 # <CJK>
+<U8F07> \x8F\xE0\xE7 |0 # <CJK>
+<U8F08> \x8F\xE0\xE8 |0 # <CJK>
+<U8F0F> \x8F\xE0\xE9 |0 # <CJK>
+<U8F10> \x8F\xE0\xEA |0 # <CJK>
+<U8F16> \x8F\xE0\xEB |0 # <CJK>
+<U8F17> \x8F\xE0\xEC |0 # <CJK>
+<U8F18> \x8F\xE0\xED |0 # <CJK>
+<U8F1E> \x8F\xE0\xEE |0 # <CJK>
+<U8F20> \x8F\xE0\xEF |0 # <CJK>
+<U8F21> \x8F\xE0\xF0 |0 # <CJK>
+<U8F23> \x8F\xE0\xF1 |0 # <CJK>
+<U8F25> \x8F\xE0\xF2 |0 # <CJK>
+<U8F27> \x8F\xE0\xF3 |0 # <CJK>
+<U8F28> \x8F\xE0\xF4 |0 # <CJK>
+<U8F2C> \x8F\xE0\xF5 |0 # <CJK>
+<U8F2D> \x8F\xE0\xF6 |0 # <CJK>
+<U8F2E> \x8F\xE0\xF7 |0 # <CJK>
+<U8F34> \x8F\xE0\xF8 |0 # <CJK>
+<U8F35> \x8F\xE0\xF9 |0 # <CJK>
+<U8F36> \x8F\xE0\xFA |0 # <CJK>
+<U8F37> \x8F\xE0\xFB |0 # <CJK>
+<U8F3A> \x8F\xE0\xFC |0 # <CJK>
+<U8F40> \x8F\xE0\xFD |0 # <CJK>
+<U8F41> \x8F\xE0\xFE |0 # <CJK>
+<U8F43> \x8F\xE1\xA1 |0 # <CJK>
+<U8F47> \x8F\xE1\xA2 |0 # <CJK>
+<U8F4F> \x8F\xE1\xA3 |0 # <CJK>
+<U8F51> \x8F\xE1\xA4 |0 # <CJK>
+<U8F52> \x8F\xE1\xA5 |0 # <CJK>
+<U8F53> \x8F\xE1\xA6 |0 # <CJK>
+<U8F54> \x8F\xE1\xA7 |0 # <CJK>
+<U8F55> \x8F\xE1\xA8 |0 # <CJK>
+<U8F58> \x8F\xE1\xA9 |0 # <CJK>
+<U8F5D> \x8F\xE1\xAA |0 # <CJK>
+<U8F5E> \x8F\xE1\xAB |0 # <CJK>
+<U8F65> \x8F\xE1\xAC |0 # <CJK>
+<U8F9D> \x8F\xE1\xAD |0 # <CJK>
+<U8FA0> \x8F\xE1\xAE |0 # <CJK>
+<U8FA1> \x8F\xE1\xAF |0 # <CJK>
+<U8FA4> \x8F\xE1\xB0 |0 # <CJK>
+<U8FA5> \x8F\xE1\xB1 |0 # <CJK>
+<U8FA6> \x8F\xE1\xB2 |0 # <CJK>
+<U8FB5> \x8F\xE1\xB3 |0 # <CJK>
+<U8FB6> \x8F\xE1\xB4 |0 # <CJK>
+<U8FB8> \x8F\xE1\xB5 |0 # <CJK>
+<U8FBE> \x8F\xE1\xB6 |0 # <CJK>
+<U8FC0> \x8F\xE1\xB7 |0 # <CJK>
+<U8FC1> \x8F\xE1\xB8 |0 # <CJK>
+<U8FC6> \x8F\xE1\xB9 |0 # <CJK>
+<U8FCA> \x8F\xE1\xBA |0 # <CJK>
+<U8FCB> \x8F\xE1\xBB |0 # <CJK>
+<U8FCD> \x8F\xE1\xBC |0 # <CJK>
+<U8FD0> \x8F\xE1\xBD |0 # <CJK>
+<U8FD2> \x8F\xE1\xBE |0 # <CJK>
+<U8FD3> \x8F\xE1\xBF |0 # <CJK>
+<U8FD5> \x8F\xE1\xC0 |0 # <CJK>
+<U8FE0> \x8F\xE1\xC1 |0 # <CJK>
+<U8FE3> \x8F\xE1\xC2 |0 # <CJK>
+<U8FE4> \x8F\xE1\xC3 |0 # <CJK>
+<U8FE8> \x8F\xE1\xC4 |0 # <CJK>
+<U8FEE> \x8F\xE1\xC5 |0 # <CJK>
+<U8FF1> \x8F\xE1\xC6 |0 # <CJK>
+<U8FF5> \x8F\xE1\xC7 |0 # <CJK>
+<U8FF6> \x8F\xE1\xC8 |0 # <CJK>
+<U8FFB> \x8F\xE1\xC9 |0 # <CJK>
+<U8FFE> \x8F\xE1\xCA |0 # <CJK>
+<U9002> \x8F\xE1\xCB |0 # <CJK>
+<U9004> \x8F\xE1\xCC |0 # <CJK>
+<U9008> \x8F\xE1\xCD |0 # <CJK>
+<U900C> \x8F\xE1\xCE |0 # <CJK>
+<U9018> \x8F\xE1\xCF |0 # <CJK>
+<U901B> \x8F\xE1\xD0 |0 # <CJK>
+<U9028> \x8F\xE1\xD1 |0 # <CJK>
+<U9029> \x8F\xE1\xD2 |0 # <CJK>
+<U902F> \x8F\xE1\xD3 |0 # <CJK>
+<U902A> \x8F\xE1\xD4 |0 # <CJK>
+<U902C> \x8F\xE1\xD5 |0 # <CJK>
+<U902D> \x8F\xE1\xD6 |0 # <CJK>
+<U9033> \x8F\xE1\xD7 |0 # <CJK>
+<U9034> \x8F\xE1\xD8 |0 # <CJK>
+<U9037> \x8F\xE1\xD9 |0 # <CJK>
+<U903F> \x8F\xE1\xDA |0 # <CJK>
+<U9043> \x8F\xE1\xDB |0 # <CJK>
+<U9044> \x8F\xE1\xDC |0 # <CJK>
+<U904C> \x8F\xE1\xDD |0 # <CJK>
+<U905B> \x8F\xE1\xDE |0 # <CJK>
+<U905D> \x8F\xE1\xDF |0 # <CJK>
+<U9062> \x8F\xE1\xE0 |0 # <CJK>
+<U9066> \x8F\xE1\xE1 |0 # <CJK>
+<U9067> \x8F\xE1\xE2 |0 # <CJK>
+<U906C> \x8F\xE1\xE3 |0 # <CJK>
+<U9070> \x8F\xE1\xE4 |0 # <CJK>
+<U9074> \x8F\xE1\xE5 |0 # <CJK>
+<U9079> \x8F\xE1\xE6 |0 # <CJK>
+<U9085> \x8F\xE1\xE7 |0 # <CJK>
+<U9088> \x8F\xE1\xE8 |0 # <CJK>
+<U908B> \x8F\xE1\xE9 |0 # <CJK>
+<U908C> \x8F\xE1\xEA |0 # <CJK>
+<U908E> \x8F\xE1\xEB |0 # <CJK>
+<U9090> \x8F\xE1\xEC |0 # <CJK>
+<U9095> \x8F\xE1\xED |0 # <CJK>
+<U9097> \x8F\xE1\xEE |0 # <CJK>
+<U9098> \x8F\xE1\xEF |0 # <CJK>
+<U9099> \x8F\xE1\xF0 |0 # <CJK>
+<U909B> \x8F\xE1\xF1 |0 # <CJK>
+<U90A0> \x8F\xE1\xF2 |0 # <CJK>
+<U90A1> \x8F\xE1\xF3 |0 # <CJK>
+<U90A2> \x8F\xE1\xF4 |0 # <CJK>
+<U90A5> \x8F\xE1\xF5 |0 # <CJK>
+<U90B0> \x8F\xE1\xF6 |0 # <CJK>
+<U90B2> \x8F\xE1\xF7 |0 # <CJK>
+<U90B3> \x8F\xE1\xF8 |0 # <CJK>
+<U90B4> \x8F\xE1\xF9 |0 # <CJK>
+<U90B6> \x8F\xE1\xFA |0 # <CJK>
+<U90BD> \x8F\xE1\xFB |0 # <CJK>
+<U90CC> \x8F\xE1\xFC |0 # <CJK>
+<U90BE> \x8F\xE1\xFD |0 # <CJK>
+<U90C3> \x8F\xE1\xFE |0 # <CJK>
+<U90C4> \x8F\xE2\xA1 |0 # <CJK>
+<U90C5> \x8F\xE2\xA2 |0 # <CJK>
+<U90C7> \x8F\xE2\xA3 |0 # <CJK>
+<U90C8> \x8F\xE2\xA4 |0 # <CJK>
+<U90D5> \x8F\xE2\xA5 |0 # <CJK>
+<U90D7> \x8F\xE2\xA6 |0 # <CJK>
+<U90D8> \x8F\xE2\xA7 |0 # <CJK>
+<U90D9> \x8F\xE2\xA8 |0 # <CJK>
+<U90DC> \x8F\xE2\xA9 |0 # <CJK>
+<U90DD> \x8F\xE2\xAA |0 # <CJK>
+<U90DF> \x8F\xE2\xAB |0 # <CJK>
+<U90E5> \x8F\xE2\xAC |0 # <CJK>
+<U90D2> \x8F\xE2\xAD |0 # <CJK>
+<U90F6> \x8F\xE2\xAE |0 # <CJK>
+<U90EB> \x8F\xE2\xAF |0 # <CJK>
+<U90EF> \x8F\xE2\xB0 |0 # <CJK>
+<U90F0> \x8F\xE2\xB1 |0 # <CJK>
+<U90F4> \x8F\xE2\xB2 |0 # <CJK>
+<U90FE> \x8F\xE2\xB3 |0 # <CJK>
+<U90FF> \x8F\xE2\xB4 |0 # <CJK>
+<U9100> \x8F\xE2\xB5 |0 # <CJK>
+<U9104> \x8F\xE2\xB6 |0 # <CJK>
+<U9105> \x8F\xE2\xB7 |0 # <CJK>
+<U9106> \x8F\xE2\xB8 |0 # <CJK>
+<U9108> \x8F\xE2\xB9 |0 # <CJK>
+<U910D> \x8F\xE2\xBA |0 # <CJK>
+<U9110> \x8F\xE2\xBB |0 # <CJK>
+<U9114> \x8F\xE2\xBC |0 # <CJK>
+<U9116> \x8F\xE2\xBD |0 # <CJK>
+<U9117> \x8F\xE2\xBE |0 # <CJK>
+<U9118> \x8F\xE2\xBF |0 # <CJK>
+<U911A> \x8F\xE2\xC0 |0 # <CJK>
+<U911C> \x8F\xE2\xC1 |0 # <CJK>
+<U911E> \x8F\xE2\xC2 |0 # <CJK>
+<U9120> \x8F\xE2\xC3 |0 # <CJK>
+<U9125> \x8F\xE2\xC4 |0 # <CJK>
+<U9122> \x8F\xE2\xC5 |0 # <CJK>
+<U9123> \x8F\xE2\xC6 |0 # <CJK>
+<U9127> \x8F\xE2\xC7 |0 # <CJK>
+<U9129> \x8F\xE2\xC8 |0 # <CJK>
+<U912E> \x8F\xE2\xC9 |0 # <CJK>
+<U912F> \x8F\xE2\xCA |0 # <CJK>
+<U9131> \x8F\xE2\xCB |0 # <CJK>
+<U9134> \x8F\xE2\xCC |0 # <CJK>
+<U9136> \x8F\xE2\xCD |0 # <CJK>
+<U9137> \x8F\xE2\xCE |0 # <CJK>
+<U9139> \x8F\xE2\xCF |0 # <CJK>
+<U913A> \x8F\xE2\xD0 |0 # <CJK>
+<U913C> \x8F\xE2\xD1 |0 # <CJK>
+<U913D> \x8F\xE2\xD2 |0 # <CJK>
+<U9143> \x8F\xE2\xD3 |0 # <CJK>
+<U9147> \x8F\xE2\xD4 |0 # <CJK>
+<U9148> \x8F\xE2\xD5 |0 # <CJK>
+<U914F> \x8F\xE2\xD6 |0 # <CJK>
+<U9153> \x8F\xE2\xD7 |0 # <CJK>
+<U9157> \x8F\xE2\xD8 |0 # <CJK>
+<U9159> \x8F\xE2\xD9 |0 # <CJK>
+<U915A> \x8F\xE2\xDA |0 # <CJK>
+<U915B> \x8F\xE2\xDB |0 # <CJK>
+<U9161> \x8F\xE2\xDC |0 # <CJK>
+<U9164> \x8F\xE2\xDD |0 # <CJK>
+<U9167> \x8F\xE2\xDE |0 # <CJK>
+<U916D> \x8F\xE2\xDF |0 # <CJK>
+<U9174> \x8F\xE2\xE0 |0 # <CJK>
+<U9179> \x8F\xE2\xE1 |0 # <CJK>
+<U917A> \x8F\xE2\xE2 |0 # <CJK>
+<U917B> \x8F\xE2\xE3 |0 # <CJK>
+<U9181> \x8F\xE2\xE4 |0 # <CJK>
+<U9183> \x8F\xE2\xE5 |0 # <CJK>
+<U9185> \x8F\xE2\xE6 |0 # <CJK>
+<U9186> \x8F\xE2\xE7 |0 # <CJK>
+<U918A> \x8F\xE2\xE8 |0 # <CJK>
+<U918E> \x8F\xE2\xE9 |0 # <CJK>
+<U9191> \x8F\xE2\xEA |0 # <CJK>
+<U9193> \x8F\xE2\xEB |0 # <CJK>
+<U9194> \x8F\xE2\xEC |0 # <CJK>
+<U9195> \x8F\xE2\xED |0 # <CJK>
+<U9198> \x8F\xE2\xEE |0 # <CJK>
+<U919E> \x8F\xE2\xEF |0 # <CJK>
+<U91A1> \x8F\xE2\xF0 |0 # <CJK>
+<U91A6> \x8F\xE2\xF1 |0 # <CJK>
+<U91A8> \x8F\xE2\xF2 |0 # <CJK>
+<U91AC> \x8F\xE2\xF3 |0 # <CJK>
+<U91AD> \x8F\xE2\xF4 |0 # <CJK>
+<U91AE> \x8F\xE2\xF5 |0 # <CJK>
+<U91B0> \x8F\xE2\xF6 |0 # <CJK>
+<U91B1> \x8F\xE2\xF7 |0 # <CJK>
+<U91B2> \x8F\xE2\xF8 |0 # <CJK>
+<U91B3> \x8F\xE2\xF9 |0 # <CJK>
+<U91B6> \x8F\xE2\xFA |0 # <CJK>
+<U91BB> \x8F\xE2\xFB |0 # <CJK>
+<U91BC> \x8F\xE2\xFC |0 # <CJK>
+<U91BD> \x8F\xE2\xFD |0 # <CJK>
+<U91BF> \x8F\xE2\xFE |0 # <CJK>
+<U91C2> \x8F\xE3\xA1 |0 # <CJK>
+<U91C3> \x8F\xE3\xA2 |0 # <CJK>
+<U91C5> \x8F\xE3\xA3 |0 # <CJK>
+<U91D3> \x8F\xE3\xA4 |0 # <CJK>
+<U91D4> \x8F\xE3\xA5 |0 # <CJK>
+<U91D7> \x8F\xE3\xA6 |0 # <CJK>
+<U91D9> \x8F\xE3\xA7 |0 # <CJK>
+<U91DA> \x8F\xE3\xA8 |0 # <CJK>
+<U91DE> \x8F\xE3\xA9 |0 # <CJK>
+<U91E4> \x8F\xE3\xAA |0 # <CJK>
+<U91E5> \x8F\xE3\xAB |0 # <CJK>
+<U91E9> \x8F\xE3\xAC |0 # <CJK>
+<U91EA> \x8F\xE3\xAD |0 # <CJK>
+<U91EC> \x8F\xE3\xAE |0 # <CJK>
+<U91ED> \x8F\xE3\xAF |0 # <CJK>
+<U91EE> \x8F\xE3\xB0 |0 # <CJK>
+<U91EF> \x8F\xE3\xB1 |0 # <CJK>
+<U91F0> \x8F\xE3\xB2 |0 # <CJK>
+<U91F1> \x8F\xE3\xB3 |0 # <CJK>
+<U91F7> \x8F\xE3\xB4 |0 # <CJK>
+<U91F9> \x8F\xE3\xB5 |0 # <CJK>
+<U91FB> \x8F\xE3\xB6 |0 # <CJK>
+<U91FD> \x8F\xE3\xB7 |0 # <CJK>
+<U9200> \x8F\xE3\xB8 |0 # <CJK>
+<U9201> \x8F\xE3\xB9 |0 # <CJK>
+<U9204> \x8F\xE3\xBA |0 # <CJK>
+<U9205> \x8F\xE3\xBB |0 # <CJK>
+<U9206> \x8F\xE3\xBC |0 # <CJK>
+<U9207> \x8F\xE3\xBD |0 # <CJK>
+<U9209> \x8F\xE3\xBE |0 # <CJK>
+<U920A> \x8F\xE3\xBF |0 # <CJK>
+<U920C> \x8F\xE3\xC0 |0 # <CJK>
+<U9210> \x8F\xE3\xC1 |0 # <CJK>
+<U9212> \x8F\xE3\xC2 |0 # <CJK>
+<U9213> \x8F\xE3\xC3 |0 # <CJK>
+<U9216> \x8F\xE3\xC4 |0 # <CJK>
+<U9218> \x8F\xE3\xC5 |0 # <CJK>
+<U921C> \x8F\xE3\xC6 |0 # <CJK>
+<U921D> \x8F\xE3\xC7 |0 # <CJK>
+<U9223> \x8F\xE3\xC8 |0 # <CJK>
+<U9224> \x8F\xE3\xC9 |0 # <CJK>
+<U9225> \x8F\xE3\xCA |0 # <CJK>
+<U9226> \x8F\xE3\xCB |0 # <CJK>
+<U9228> \x8F\xE3\xCC |0 # <CJK>
+<U922E> \x8F\xE3\xCD |0 # <CJK>
+<U922F> \x8F\xE3\xCE |0 # <CJK>
+<U9230> \x8F\xE3\xCF |0 # <CJK>
+<U9233> \x8F\xE3\xD0 |0 # <CJK>
+<U9235> \x8F\xE3\xD1 |0 # <CJK>
+<U9236> \x8F\xE3\xD2 |0 # <CJK>
+<U9238> \x8F\xE3\xD3 |0 # <CJK>
+<U9239> \x8F\xE3\xD4 |0 # <CJK>
+<U923A> \x8F\xE3\xD5 |0 # <CJK>
+<U923C> \x8F\xE3\xD6 |0 # <CJK>
+<U923E> \x8F\xE3\xD7 |0 # <CJK>
+<U9240> \x8F\xE3\xD8 |0 # <CJK>
+<U9242> \x8F\xE3\xD9 |0 # <CJK>
+<U9243> \x8F\xE3\xDA |0 # <CJK>
+<U9246> \x8F\xE3\xDB |0 # <CJK>
+<U9247> \x8F\xE3\xDC |0 # <CJK>
+<U924A> \x8F\xE3\xDD |0 # <CJK>
+<U924D> \x8F\xE3\xDE |0 # <CJK>
+<U924E> \x8F\xE3\xDF |0 # <CJK>
+<U924F> \x8F\xE3\xE0 |0 # <CJK>
+<U9251> \x8F\xE3\xE1 |0 # <CJK>
+<U9258> \x8F\xE3\xE2 |0 # <CJK>
+<U9259> \x8F\xE3\xE3 |0 # <CJK>
+<U925C> \x8F\xE3\xE4 |0 # <CJK>
+<U925D> \x8F\xE3\xE5 |0 # <CJK>
+<U9260> \x8F\xE3\xE6 |0 # <CJK>
+<U9261> \x8F\xE3\xE7 |0 # <CJK>
+<U9265> \x8F\xE3\xE8 |0 # <CJK>
+<U9267> \x8F\xE3\xE9 |0 # <CJK>
+<U9268> \x8F\xE3\xEA |0 # <CJK>
+<U9269> \x8F\xE3\xEB |0 # <CJK>
+<U926E> \x8F\xE3\xEC |0 # <CJK>
+<U926F> \x8F\xE3\xED |0 # <CJK>
+<U9270> \x8F\xE3\xEE |0 # <CJK>
+<U9275> \x8F\xE3\xEF |0 # <CJK>
+<U9276> \x8F\xE3\xF0 |0 # <CJK>
+<U9277> \x8F\xE3\xF1 |0 # <CJK>
+<U9278> \x8F\xE3\xF2 |0 # <CJK>
+<U9279> \x8F\xE3\xF3 |0 # <CJK>
+<U927B> \x8F\xE3\xF4 |0 # <CJK>
+<U927C> \x8F\xE3\xF5 |0 # <CJK>
+<U927D> \x8F\xE3\xF6 |0 # <CJK>
+<U927F> \x8F\xE3\xF7 |0 # <CJK>
+<U9288> \x8F\xE3\xF8 |0 # <CJK>
+<U9289> \x8F\xE3\xF9 |0 # <CJK>
+<U928A> \x8F\xE3\xFA |0 # <CJK>
+<U928D> \x8F\xE3\xFB |0 # <CJK>
+<U928E> \x8F\xE3\xFC |0 # <CJK>
+<U9292> \x8F\xE3\xFD |0 # <CJK>
+<U9297> \x8F\xE3\xFE |0 # <CJK>
+<U9299> \x8F\xE4\xA1 |0 # <CJK>
+<U929F> \x8F\xE4\xA2 |0 # <CJK>
+<U92A0> \x8F\xE4\xA3 |0 # <CJK>
+<U92A4> \x8F\xE4\xA4 |0 # <CJK>
+<U92A5> \x8F\xE4\xA5 |0 # <CJK>
+<U92A7> \x8F\xE4\xA6 |0 # <CJK>
+<U92A8> \x8F\xE4\xA7 |0 # <CJK>
+<U92AB> \x8F\xE4\xA8 |0 # <CJK>
+<U92AF> \x8F\xE4\xA9 |0 # <CJK>
+<U92B2> \x8F\xE4\xAA |0 # <CJK>
+<U92B6> \x8F\xE4\xAB |0 # <CJK>
+<U92B8> \x8F\xE4\xAC |0 # <CJK>
+<U92BA> \x8F\xE4\xAD |0 # <CJK>
+<U92BB> \x8F\xE4\xAE |0 # <CJK>
+<U92BC> \x8F\xE4\xAF |0 # <CJK>
+<U92BD> \x8F\xE4\xB0 |0 # <CJK>
+<U92BF> \x8F\xE4\xB1 |0 # <CJK>
+<U92C0> \x8F\xE4\xB2 |0 # <CJK>
+<U92C1> \x8F\xE4\xB3 |0 # <CJK>
+<U92C2> \x8F\xE4\xB4 |0 # <CJK>
+<U92C3> \x8F\xE4\xB5 |0 # <CJK>
+<U92C5> \x8F\xE4\xB6 |0 # <CJK>
+<U92C6> \x8F\xE4\xB7 |0 # <CJK>
+<U92C7> \x8F\xE4\xB8 |0 # <CJK>
+<U92C8> \x8F\xE4\xB9 |0 # <CJK>
+<U92CB> \x8F\xE4\xBA |0 # <CJK>
+<U92CC> \x8F\xE4\xBB |0 # <CJK>
+<U92CD> \x8F\xE4\xBC |0 # <CJK>
+<U92CE> \x8F\xE4\xBD |0 # <CJK>
+<U92D0> \x8F\xE4\xBE |0 # <CJK>
+<U92D3> \x8F\xE4\xBF |0 # <CJK>
+<U92D5> \x8F\xE4\xC0 |0 # <CJK>
+<U92D7> \x8F\xE4\xC1 |0 # <CJK>
+<U92D8> \x8F\xE4\xC2 |0 # <CJK>
+<U92D9> \x8F\xE4\xC3 |0 # <CJK>
+<U92DC> \x8F\xE4\xC4 |0 # <CJK>
+<U92DD> \x8F\xE4\xC5 |0 # <CJK>
+<U92DF> \x8F\xE4\xC6 |0 # <CJK>
+<U92E0> \x8F\xE4\xC7 |0 # <CJK>
+<U92E1> \x8F\xE4\xC8 |0 # <CJK>
+<U92E3> \x8F\xE4\xC9 |0 # <CJK>
+<U92E5> \x8F\xE4\xCA |0 # <CJK>
+<U92E7> \x8F\xE4\xCB |0 # <CJK>
+<U92E8> \x8F\xE4\xCC |0 # <CJK>
+<U92EC> \x8F\xE4\xCD |0 # <CJK>
+<U92EE> \x8F\xE4\xCE |0 # <CJK>
+<U92F0> \x8F\xE4\xCF |0 # <CJK>
+<U92F9> \x8F\xE4\xD0 |0 # <CJK>
+<U92FB> \x8F\xE4\xD1 |0 # <CJK>
+<U92FF> \x8F\xE4\xD2 |0 # <CJK>
+<U9300> \x8F\xE4\xD3 |0 # <CJK>
+<U9302> \x8F\xE4\xD4 |0 # <CJK>
+<U9308> \x8F\xE4\xD5 |0 # <CJK>
+<U930D> \x8F\xE4\xD6 |0 # <CJK>
+<U9311> \x8F\xE4\xD7 |0 # <CJK>
+<U9314> \x8F\xE4\xD8 |0 # <CJK>
+<U9315> \x8F\xE4\xD9 |0 # <CJK>
+<U931C> \x8F\xE4\xDA |0 # <CJK>
+<U931D> \x8F\xE4\xDB |0 # <CJK>
+<U931E> \x8F\xE4\xDC |0 # <CJK>
+<U931F> \x8F\xE4\xDD |0 # <CJK>
+<U9321> \x8F\xE4\xDE |0 # <CJK>
+<U9324> \x8F\xE4\xDF |0 # <CJK>
+<U9325> \x8F\xE4\xE0 |0 # <CJK>
+<U9327> \x8F\xE4\xE1 |0 # <CJK>
+<U9329> \x8F\xE4\xE2 |0 # <CJK>
+<U932A> \x8F\xE4\xE3 |0 # <CJK>
+<U9333> \x8F\xE4\xE4 |0 # <CJK>
+<U9334> \x8F\xE4\xE5 |0 # <CJK>
+<U9336> \x8F\xE4\xE6 |0 # <CJK>
+<U9337> \x8F\xE4\xE7 |0 # <CJK>
+<U9347> \x8F\xE4\xE8 |0 # <CJK>
+<U9348> \x8F\xE4\xE9 |0 # <CJK>
+<U9349> \x8F\xE4\xEA |0 # <CJK>
+<U9350> \x8F\xE4\xEB |0 # <CJK>
+<U9351> \x8F\xE4\xEC |0 # <CJK>
+<U9352> \x8F\xE4\xED |0 # <CJK>
+<U9355> \x8F\xE4\xEE |0 # <CJK>
+<U9357> \x8F\xE4\xEF |0 # <CJK>
+<U9358> \x8F\xE4\xF0 |0 # <CJK>
+<U935A> \x8F\xE4\xF1 |0 # <CJK>
+<U935E> \x8F\xE4\xF2 |0 # <CJK>
+<U9364> \x8F\xE4\xF3 |0 # <CJK>
+<U9365> \x8F\xE4\xF4 |0 # <CJK>
+<U9367> \x8F\xE4\xF5 |0 # <CJK>
+<U9369> \x8F\xE4\xF6 |0 # <CJK>
+<U936A> \x8F\xE4\xF7 |0 # <CJK>
+<U936D> \x8F\xE4\xF8 |0 # <CJK>
+<U936F> \x8F\xE4\xF9 |0 # <CJK>
+<U9370> \x8F\xE4\xFA |0 # <CJK>
+<U9371> \x8F\xE4\xFB |0 # <CJK>
+<U9373> \x8F\xE4\xFC |0 # <CJK>
+<U9374> \x8F\xE4\xFD |0 # <CJK>
+<U9376> \x8F\xE4\xFE |0 # <CJK>
+<U937A> \x8F\xE5\xA1 |0 # <CJK>
+<U937D> \x8F\xE5\xA2 |0 # <CJK>
+<U937F> \x8F\xE5\xA3 |0 # <CJK>
+<U9380> \x8F\xE5\xA4 |0 # <CJK>
+<U9381> \x8F\xE5\xA5 |0 # <CJK>
+<U9382> \x8F\xE5\xA6 |0 # <CJK>
+<U9388> \x8F\xE5\xA7 |0 # <CJK>
+<U938A> \x8F\xE5\xA8 |0 # <CJK>
+<U938B> \x8F\xE5\xA9 |0 # <CJK>
+<U938D> \x8F\xE5\xAA |0 # <CJK>
+<U938F> \x8F\xE5\xAB |0 # <CJK>
+<U9392> \x8F\xE5\xAC |0 # <CJK>
+<U9395> \x8F\xE5\xAD |0 # <CJK>
+<U9398> \x8F\xE5\xAE |0 # <CJK>
+<U939B> \x8F\xE5\xAF |0 # <CJK>
+<U939E> \x8F\xE5\xB0 |0 # <CJK>
+<U93A1> \x8F\xE5\xB1 |0 # <CJK>
+<U93A3> \x8F\xE5\xB2 |0 # <CJK>
+<U93A4> \x8F\xE5\xB3 |0 # <CJK>
+<U93A6> \x8F\xE5\xB4 |0 # <CJK>
+<U93A8> \x8F\xE5\xB5 |0 # <CJK>
+<U93AB> \x8F\xE5\xB6 |0 # <CJK>
+<U93B4> \x8F\xE5\xB7 |0 # <CJK>
+<U93B5> \x8F\xE5\xB8 |0 # <CJK>
+<U93B6> \x8F\xE5\xB9 |0 # <CJK>
+<U93BA> \x8F\xE5\xBA |0 # <CJK>
+<U93A9> \x8F\xE5\xBB |0 # <CJK>
+<U93C1> \x8F\xE5\xBC |0 # <CJK>
+<U93C4> \x8F\xE5\xBD |0 # <CJK>
+<U93C5> \x8F\xE5\xBE |0 # <CJK>
+<U93C6> \x8F\xE5\xBF |0 # <CJK>
+<U93C7> \x8F\xE5\xC0 |0 # <CJK>
+<U93C9> \x8F\xE5\xC1 |0 # <CJK>
+<U93CA> \x8F\xE5\xC2 |0 # <CJK>
+<U93CB> \x8F\xE5\xC3 |0 # <CJK>
+<U93CC> \x8F\xE5\xC4 |0 # <CJK>
+<U93CD> \x8F\xE5\xC5 |0 # <CJK>
+<U93D3> \x8F\xE5\xC6 |0 # <CJK>
+<U93D9> \x8F\xE5\xC7 |0 # <CJK>
+<U93DC> \x8F\xE5\xC8 |0 # <CJK>
+<U93DE> \x8F\xE5\xC9 |0 # <CJK>
+<U93DF> \x8F\xE5\xCA |0 # <CJK>
+<U93E2> \x8F\xE5\xCB |0 # <CJK>
+<U93E6> \x8F\xE5\xCC |0 # <CJK>
+<U93E7> \x8F\xE5\xCD |0 # <CJK>
+<U93F9> \x8F\xE5\xCE |0 # <CJK>
+<U93F7> \x8F\xE5\xCF |0 # <CJK>
+<U93F8> \x8F\xE5\xD0 |0 # <CJK>
+<U93FA> \x8F\xE5\xD1 |0 # <CJK>
+<U93FB> \x8F\xE5\xD2 |0 # <CJK>
+<U93FD> \x8F\xE5\xD3 |0 # <CJK>
+<U9401> \x8F\xE5\xD4 |0 # <CJK>
+<U9402> \x8F\xE5\xD5 |0 # <CJK>
+<U9404> \x8F\xE5\xD6 |0 # <CJK>
+<U9408> \x8F\xE5\xD7 |0 # <CJK>
+<U9409> \x8F\xE5\xD8 |0 # <CJK>
+<U940D> \x8F\xE5\xD9 |0 # <CJK>
+<U940E> \x8F\xE5\xDA |0 # <CJK>
+<U940F> \x8F\xE5\xDB |0 # <CJK>
+<U9415> \x8F\xE5\xDC |0 # <CJK>
+<U9416> \x8F\xE5\xDD |0 # <CJK>
+<U9417> \x8F\xE5\xDE |0 # <CJK>
+<U941F> \x8F\xE5\xDF |0 # <CJK>
+<U942E> \x8F\xE5\xE0 |0 # <CJK>
+<U942F> \x8F\xE5\xE1 |0 # <CJK>
+<U9431> \x8F\xE5\xE2 |0 # <CJK>
+<U9432> \x8F\xE5\xE3 |0 # <CJK>
+<U9433> \x8F\xE5\xE4 |0 # <CJK>
+<U9434> \x8F\xE5\xE5 |0 # <CJK>
+<U943B> \x8F\xE5\xE6 |0 # <CJK>
+<U943F> \x8F\xE5\xE7 |0 # <CJK>
+<U943D> \x8F\xE5\xE8 |0 # <CJK>
+<U9443> \x8F\xE5\xE9 |0 # <CJK>
+<U9445> \x8F\xE5\xEA |0 # <CJK>
+<U9448> \x8F\xE5\xEB |0 # <CJK>
+<U944A> \x8F\xE5\xEC |0 # <CJK>
+<U944C> \x8F\xE5\xED |0 # <CJK>
+<U9455> \x8F\xE5\xEE |0 # <CJK>
+<U9459> \x8F\xE5\xEF |0 # <CJK>
+<U945C> \x8F\xE5\xF0 |0 # <CJK>
+<U945F> \x8F\xE5\xF1 |0 # <CJK>
+<U9461> \x8F\xE5\xF2 |0 # <CJK>
+<U9463> \x8F\xE5\xF3 |0 # <CJK>
+<U9468> \x8F\xE5\xF4 |0 # <CJK>
+<U946B> \x8F\xE5\xF5 |0 # <CJK>
+<U946D> \x8F\xE5\xF6 |0 # <CJK>
+<U946E> \x8F\xE5\xF7 |0 # <CJK>
+<U946F> \x8F\xE5\xF8 |0 # <CJK>
+<U9471> \x8F\xE5\xF9 |0 # <CJK>
+<U9472> \x8F\xE5\xFA |0 # <CJK>
+<U9484> \x8F\xE5\xFB |0 # <CJK>
+<U9483> \x8F\xE5\xFC |0 # <CJK>
+<U9578> \x8F\xE5\xFD |0 # <CJK>
+<U9579> \x8F\xE5\xFE |0 # <CJK>
+<U957E> \x8F\xE6\xA1 |0 # <CJK>
+<U9584> \x8F\xE6\xA2 |0 # <CJK>
+<U9588> \x8F\xE6\xA3 |0 # <CJK>
+<U958C> \x8F\xE6\xA4 |0 # <CJK>
+<U958D> \x8F\xE6\xA5 |0 # <CJK>
+<U958E> \x8F\xE6\xA6 |0 # <CJK>
+<U959D> \x8F\xE6\xA7 |0 # <CJK>
+<U959E> \x8F\xE6\xA8 |0 # <CJK>
+<U959F> \x8F\xE6\xA9 |0 # <CJK>
+<U95A1> \x8F\xE6\xAA |0 # <CJK>
+<U95A6> \x8F\xE6\xAB |0 # <CJK>
+<U95A9> \x8F\xE6\xAC |0 # <CJK>
+<U95AB> \x8F\xE6\xAD |0 # <CJK>
+<U95AC> \x8F\xE6\xAE |0 # <CJK>
+<U95B4> \x8F\xE6\xAF |0 # <CJK>
+<U95B6> \x8F\xE6\xB0 |0 # <CJK>
+<U95BA> \x8F\xE6\xB1 |0 # <CJK>
+<U95BD> \x8F\xE6\xB2 |0 # <CJK>
+<U95BF> \x8F\xE6\xB3 |0 # <CJK>
+<U95C6> \x8F\xE6\xB4 |0 # <CJK>
+<U95C8> \x8F\xE6\xB5 |0 # <CJK>
+<U95C9> \x8F\xE6\xB6 |0 # <CJK>
+<U95CB> \x8F\xE6\xB7 |0 # <CJK>
+<U95D0> \x8F\xE6\xB8 |0 # <CJK>
+<U95D1> \x8F\xE6\xB9 |0 # <CJK>
+<U95D2> \x8F\xE6\xBA |0 # <CJK>
+<U95D3> \x8F\xE6\xBB |0 # <CJK>
+<U95D9> \x8F\xE6\xBC |0 # <CJK>
+<U95DA> \x8F\xE6\xBD |0 # <CJK>
+<U95DD> \x8F\xE6\xBE |0 # <CJK>
+<U95DE> \x8F\xE6\xBF |0 # <CJK>
+<U95DF> \x8F\xE6\xC0 |0 # <CJK>
+<U95E0> \x8F\xE6\xC1 |0 # <CJK>
+<U95E4> \x8F\xE6\xC2 |0 # <CJK>
+<U95E6> \x8F\xE6\xC3 |0 # <CJK>
+<U961D> \x8F\xE6\xC4 |0 # <CJK>
+<U961E> \x8F\xE6\xC5 |0 # <CJK>
+<U9622> \x8F\xE6\xC6 |0 # <CJK>
+<U9624> \x8F\xE6\xC7 |0 # <CJK>
+<U9625> \x8F\xE6\xC8 |0 # <CJK>
+<U9626> \x8F\xE6\xC9 |0 # <CJK>
+<U962C> \x8F\xE6\xCA |0 # <CJK>
+<U9631> \x8F\xE6\xCB |0 # <CJK>
+<U9633> \x8F\xE6\xCC |0 # <CJK>
+<U9637> \x8F\xE6\xCD |0 # <CJK>
+<U9638> \x8F\xE6\xCE |0 # <CJK>
+<U9639> \x8F\xE6\xCF |0 # <CJK>
+<U963A> \x8F\xE6\xD0 |0 # <CJK>
+<U963C> \x8F\xE6\xD1 |0 # <CJK>
+<U963D> \x8F\xE6\xD2 |0 # <CJK>
+<U9641> \x8F\xE6\xD3 |0 # <CJK>
+<U9652> \x8F\xE6\xD4 |0 # <CJK>
+<U9654> \x8F\xE6\xD5 |0 # <CJK>
+<U9656> \x8F\xE6\xD6 |0 # <CJK>
+<U9657> \x8F\xE6\xD7 |0 # <CJK>
+<U9658> \x8F\xE6\xD8 |0 # <CJK>
+<U9661> \x8F\xE6\xD9 |0 # <CJK>
+<U966E> \x8F\xE6\xDA |0 # <CJK>
+<U9674> \x8F\xE6\xDB |0 # <CJK>
+<U967B> \x8F\xE6\xDC |0 # <CJK>
+<U967C> \x8F\xE6\xDD |0 # <CJK>
+<U967E> \x8F\xE6\xDE |0 # <CJK>
+<U967F> \x8F\xE6\xDF |0 # <CJK>
+<U9681> \x8F\xE6\xE0 |0 # <CJK>
+<U9682> \x8F\xE6\xE1 |0 # <CJK>
+<U9683> \x8F\xE6\xE2 |0 # <CJK>
+<U9684> \x8F\xE6\xE3 |0 # <CJK>
+<U9689> \x8F\xE6\xE4 |0 # <CJK>
+<U9691> \x8F\xE6\xE5 |0 # <CJK>
+<U9696> \x8F\xE6\xE6 |0 # <CJK>
+<U969A> \x8F\xE6\xE7 |0 # <CJK>
+<U969D> \x8F\xE6\xE8 |0 # <CJK>
+<U969F> \x8F\xE6\xE9 |0 # <CJK>
+<U96A4> \x8F\xE6\xEA |0 # <CJK>
+<U96A5> \x8F\xE6\xEB |0 # <CJK>
+<U96A6> \x8F\xE6\xEC |0 # <CJK>
+<U96A9> \x8F\xE6\xED |0 # <CJK>
+<U96AE> \x8F\xE6\xEE |0 # <CJK>
+<U96AF> \x8F\xE6\xEF |0 # <CJK>
+<U96B3> \x8F\xE6\xF0 |0 # <CJK>
+<U96BA> \x8F\xE6\xF1 |0 # <CJK>
+<U96CA> \x8F\xE6\xF2 |0 # <CJK>
+<U96D2> \x8F\xE6\xF3 |0 # <CJK>
+<U5DB2> \x8F\xE6\xF4 |0 # <CJK>
+<U96D8> \x8F\xE6\xF5 |0 # <CJK>
+<U96DA> \x8F\xE6\xF6 |0 # <CJK>
+<U96DD> \x8F\xE6\xF7 |0 # <CJK>
+<U96DE> \x8F\xE6\xF8 |0 # <CJK>
+<U96DF> \x8F\xE6\xF9 |0 # <CJK>
+<U96E9> \x8F\xE6\xFA |0 # <CJK>
+<U96EF> \x8F\xE6\xFB |0 # <CJK>
+<U96F1> \x8F\xE6\xFC |0 # <CJK>
+<U96FA> \x8F\xE6\xFD |0 # <CJK>
+<U9702> \x8F\xE6\xFE |0 # <CJK>
+<U9703> \x8F\xE7\xA1 |0 # <CJK>
+<U9705> \x8F\xE7\xA2 |0 # <CJK>
+<U9709> \x8F\xE7\xA3 |0 # <CJK>
+<U971A> \x8F\xE7\xA4 |0 # <CJK>
+<U971B> \x8F\xE7\xA5 |0 # <CJK>
+<U971D> \x8F\xE7\xA6 |0 # <CJK>
+<U9721> \x8F\xE7\xA7 |0 # <CJK>
+<U9722> \x8F\xE7\xA8 |0 # <CJK>
+<U9723> \x8F\xE7\xA9 |0 # <CJK>
+<U9728> \x8F\xE7\xAA |0 # <CJK>
+<U9731> \x8F\xE7\xAB |0 # <CJK>
+<U9733> \x8F\xE7\xAC |0 # <CJK>
+<U9741> \x8F\xE7\xAD |0 # <CJK>
+<U9743> \x8F\xE7\xAE |0 # <CJK>
+<U974A> \x8F\xE7\xAF |0 # <CJK>
+<U974E> \x8F\xE7\xB0 |0 # <CJK>
+<U974F> \x8F\xE7\xB1 |0 # <CJK>
+<U9755> \x8F\xE7\xB2 |0 # <CJK>
+<U9757> \x8F\xE7\xB3 |0 # <CJK>
+<U9758> \x8F\xE7\xB4 |0 # <CJK>
+<U975A> \x8F\xE7\xB5 |0 # <CJK>
+<U975B> \x8F\xE7\xB6 |0 # <CJK>
+<U9763> \x8F\xE7\xB7 |0 # <CJK>
+<U9767> \x8F\xE7\xB8 |0 # <CJK>
+<U976A> \x8F\xE7\xB9 |0 # <CJK>
+<U976E> \x8F\xE7\xBA |0 # <CJK>
+<U9773> \x8F\xE7\xBB |0 # <CJK>
+<U9776> \x8F\xE7\xBC |0 # <CJK>
+<U9777> \x8F\xE7\xBD |0 # <CJK>
+<U9778> \x8F\xE7\xBE |0 # <CJK>
+<U977B> \x8F\xE7\xBF |0 # <CJK>
+<U977D> \x8F\xE7\xC0 |0 # <CJK>
+<U977F> \x8F\xE7\xC1 |0 # <CJK>
+<U9780> \x8F\xE7\xC2 |0 # <CJK>
+<U9789> \x8F\xE7\xC3 |0 # <CJK>
+<U9795> \x8F\xE7\xC4 |0 # <CJK>
+<U9796> \x8F\xE7\xC5 |0 # <CJK>
+<U9797> \x8F\xE7\xC6 |0 # <CJK>
+<U9799> \x8F\xE7\xC7 |0 # <CJK>
+<U979A> \x8F\xE7\xC8 |0 # <CJK>
+<U979E> \x8F\xE7\xC9 |0 # <CJK>
+<U979F> \x8F\xE7\xCA |0 # <CJK>
+<U97A2> \x8F\xE7\xCB |0 # <CJK>
+<U97AC> \x8F\xE7\xCC |0 # <CJK>
+<U97AE> \x8F\xE7\xCD |0 # <CJK>
+<U97B1> \x8F\xE7\xCE |0 # <CJK>
+<U97B2> \x8F\xE7\xCF |0 # <CJK>
+<U97B5> \x8F\xE7\xD0 |0 # <CJK>
+<U97B6> \x8F\xE7\xD1 |0 # <CJK>
+<U97B8> \x8F\xE7\xD2 |0 # <CJK>
+<U97B9> \x8F\xE7\xD3 |0 # <CJK>
+<U97BA> \x8F\xE7\xD4 |0 # <CJK>
+<U97BC> \x8F\xE7\xD5 |0 # <CJK>
+<U97BE> \x8F\xE7\xD6 |0 # <CJK>
+<U97BF> \x8F\xE7\xD7 |0 # <CJK>
+<U97C1> \x8F\xE7\xD8 |0 # <CJK>
+<U97C4> \x8F\xE7\xD9 |0 # <CJK>
+<U97C5> \x8F\xE7\xDA |0 # <CJK>
+<U97C7> \x8F\xE7\xDB |0 # <CJK>
+<U97C9> \x8F\xE7\xDC |0 # <CJK>
+<U97CA> \x8F\xE7\xDD |0 # <CJK>
+<U97CC> \x8F\xE7\xDE |0 # <CJK>
+<U97CD> \x8F\xE7\xDF |0 # <CJK>
+<U97CE> \x8F\xE7\xE0 |0 # <CJK>
+<U97D0> \x8F\xE7\xE1 |0 # <CJK>
+<U97D1> \x8F\xE7\xE2 |0 # <CJK>
+<U97D4> \x8F\xE7\xE3 |0 # <CJK>
+<U97D7> \x8F\xE7\xE4 |0 # <CJK>
+<U97D8> \x8F\xE7\xE5 |0 # <CJK>
+<U97D9> \x8F\xE7\xE6 |0 # <CJK>
+<U97DD> \x8F\xE7\xE7 |0 # <CJK>
+<U97DE> \x8F\xE7\xE8 |0 # <CJK>
+<U97E0> \x8F\xE7\xE9 |0 # <CJK>
+<U97DB> \x8F\xE7\xEA |0 # <CJK>
+<U97E1> \x8F\xE7\xEB |0 # <CJK>
+<U97E4> \x8F\xE7\xEC |0 # <CJK>
+<U97EF> \x8F\xE7\xED |0 # <CJK>
+<U97F1> \x8F\xE7\xEE |0 # <CJK>
+<U97F4> \x8F\xE7\xEF |0 # <CJK>
+<U97F7> \x8F\xE7\xF0 |0 # <CJK>
+<U97F8> \x8F\xE7\xF1 |0 # <CJK>
+<U97FA> \x8F\xE7\xF2 |0 # <CJK>
+<U9807> \x8F\xE7\xF3 |0 # <CJK>
+<U980A> \x8F\xE7\xF4 |0 # <CJK>
+<U9819> \x8F\xE7\xF5 |0 # <CJK>
+<U980D> \x8F\xE7\xF6 |0 # <CJK>
+<U980E> \x8F\xE7\xF7 |0 # <CJK>
+<U9814> \x8F\xE7\xF8 |0 # <CJK>
+<U9816> \x8F\xE7\xF9 |0 # <CJK>
+<U981C> \x8F\xE7\xFA |0 # <CJK>
+<U981E> \x8F\xE7\xFB |0 # <CJK>
+<U9820> \x8F\xE7\xFC |0 # <CJK>
+<U9823> \x8F\xE7\xFD |0 # <CJK>
+<U9826> \x8F\xE7\xFE |0 # <CJK>
+<U982B> \x8F\xE8\xA1 |0 # <CJK>
+<U982E> \x8F\xE8\xA2 |0 # <CJK>
+<U982F> \x8F\xE8\xA3 |0 # <CJK>
+<U9830> \x8F\xE8\xA4 |0 # <CJK>
+<U9832> \x8F\xE8\xA5 |0 # <CJK>
+<U9833> \x8F\xE8\xA6 |0 # <CJK>
+<U9835> \x8F\xE8\xA7 |0 # <CJK>
+<U9825> \x8F\xE8\xA8 |0 # <CJK>
+<U983E> \x8F\xE8\xA9 |0 # <CJK>
+<U9844> \x8F\xE8\xAA |0 # <CJK>
+<U9847> \x8F\xE8\xAB |0 # <CJK>
+<U984A> \x8F\xE8\xAC |0 # <CJK>
+<U9851> \x8F\xE8\xAD |0 # <CJK>
+<U9852> \x8F\xE8\xAE |0 # <CJK>
+<U9853> \x8F\xE8\xAF |0 # <CJK>
+<U9856> \x8F\xE8\xB0 |0 # <CJK>
+<U9857> \x8F\xE8\xB1 |0 # <CJK>
+<U9859> \x8F\xE8\xB2 |0 # <CJK>
+<U985A> \x8F\xE8\xB3 |0 # <CJK>
+<U9862> \x8F\xE8\xB4 |0 # <CJK>
+<U9863> \x8F\xE8\xB5 |0 # <CJK>
+<U9865> \x8F\xE8\xB6 |0 # <CJK>
+<U9866> \x8F\xE8\xB7 |0 # <CJK>
+<U986A> \x8F\xE8\xB8 |0 # <CJK>
+<U986C> \x8F\xE8\xB9 |0 # <CJK>
+<U98AB> \x8F\xE8\xBA |0 # <CJK>
+<U98AD> \x8F\xE8\xBB |0 # <CJK>
+<U98AE> \x8F\xE8\xBC |0 # <CJK>
+<U98B0> \x8F\xE8\xBD |0 # <CJK>
+<U98B4> \x8F\xE8\xBE |0 # <CJK>
+<U98B7> \x8F\xE8\xBF |0 # <CJK>
+<U98B8> \x8F\xE8\xC0 |0 # <CJK>
+<U98BA> \x8F\xE8\xC1 |0 # <CJK>
+<U98BB> \x8F\xE8\xC2 |0 # <CJK>
+<U98BF> \x8F\xE8\xC3 |0 # <CJK>
+<U98C2> \x8F\xE8\xC4 |0 # <CJK>
+<U98C5> \x8F\xE8\xC5 |0 # <CJK>
+<U98C8> \x8F\xE8\xC6 |0 # <CJK>
+<U98CC> \x8F\xE8\xC7 |0 # <CJK>
+<U98E1> \x8F\xE8\xC8 |0 # <CJK>
+<U98E3> \x8F\xE8\xC9 |0 # <CJK>
+<U98E5> \x8F\xE8\xCA |0 # <CJK>
+<U98E6> \x8F\xE8\xCB |0 # <CJK>
+<U98E7> \x8F\xE8\xCC |0 # <CJK>
+<U98EA> \x8F\xE8\xCD |0 # <CJK>
+<U98F3> \x8F\xE8\xCE |0 # <CJK>
+<U98F6> \x8F\xE8\xCF |0 # <CJK>
+<U9902> \x8F\xE8\xD0 |0 # <CJK>
+<U9907> \x8F\xE8\xD1 |0 # <CJK>
+<U9908> \x8F\xE8\xD2 |0 # <CJK>
+<U9911> \x8F\xE8\xD3 |0 # <CJK>
+<U9915> \x8F\xE8\xD4 |0 # <CJK>
+<U9916> \x8F\xE8\xD5 |0 # <CJK>
+<U9917> \x8F\xE8\xD6 |0 # <CJK>
+<U991A> \x8F\xE8\xD7 |0 # <CJK>
+<U991B> \x8F\xE8\xD8 |0 # <CJK>
+<U991C> \x8F\xE8\xD9 |0 # <CJK>
+<U991F> \x8F\xE8\xDA |0 # <CJK>
+<U9922> \x8F\xE8\xDB |0 # <CJK>
+<U9926> \x8F\xE8\xDC |0 # <CJK>
+<U9927> \x8F\xE8\xDD |0 # <CJK>
+<U992B> \x8F\xE8\xDE |0 # <CJK>
+<U9931> \x8F\xE8\xDF |0 # <CJK>
+<U9932> \x8F\xE8\xE0 |0 # <CJK>
+<U9933> \x8F\xE8\xE1 |0 # <CJK>
+<U9934> \x8F\xE8\xE2 |0 # <CJK>
+<U9935> \x8F\xE8\xE3 |0 # <CJK>
+<U9939> \x8F\xE8\xE4 |0 # <CJK>
+<U993A> \x8F\xE8\xE5 |0 # <CJK>
+<U993B> \x8F\xE8\xE6 |0 # <CJK>
+<U993C> \x8F\xE8\xE7 |0 # <CJK>
+<U9940> \x8F\xE8\xE8 |0 # <CJK>
+<U9941> \x8F\xE8\xE9 |0 # <CJK>
+<U9946> \x8F\xE8\xEA |0 # <CJK>
+<U9947> \x8F\xE8\xEB |0 # <CJK>
+<U9948> \x8F\xE8\xEC |0 # <CJK>
+<U994D> \x8F\xE8\xED |0 # <CJK>
+<U994E> \x8F\xE8\xEE |0 # <CJK>
+<U9954> \x8F\xE8\xEF |0 # <CJK>
+<U9958> \x8F\xE8\xF0 |0 # <CJK>
+<U9959> \x8F\xE8\xF1 |0 # <CJK>
+<U995B> \x8F\xE8\xF2 |0 # <CJK>
+<U995C> \x8F\xE8\xF3 |0 # <CJK>
+<U995E> \x8F\xE8\xF4 |0 # <CJK>
+<U995F> \x8F\xE8\xF5 |0 # <CJK>
+<U9960> \x8F\xE8\xF6 |0 # <CJK>
+<U999B> \x8F\xE8\xF7 |0 # <CJK>
+<U999D> \x8F\xE8\xF8 |0 # <CJK>
+<U999F> \x8F\xE8\xF9 |0 # <CJK>
+<U99A6> \x8F\xE8\xFA |0 # <CJK>
+<U99B0> \x8F\xE8\xFB |0 # <CJK>
+<U99B1> \x8F\xE8\xFC |0 # <CJK>
+<U99B2> \x8F\xE8\xFD |0 # <CJK>
+<U99B5> \x8F\xE8\xFE |0 # <CJK>
+<U99B9> \x8F\xE9\xA1 |0 # <CJK>
+<U99BA> \x8F\xE9\xA2 |0 # <CJK>
+<U99BD> \x8F\xE9\xA3 |0 # <CJK>
+<U99BF> \x8F\xE9\xA4 |0 # <CJK>
+<U99C3> \x8F\xE9\xA5 |0 # <CJK>
+<U99C9> \x8F\xE9\xA6 |0 # <CJK>
+<U99D3> \x8F\xE9\xA7 |0 # <CJK>
+<U99D4> \x8F\xE9\xA8 |0 # <CJK>
+<U99D9> \x8F\xE9\xA9 |0 # <CJK>
+<U99DA> \x8F\xE9\xAA |0 # <CJK>
+<U99DC> \x8F\xE9\xAB |0 # <CJK>
+<U99DE> \x8F\xE9\xAC |0 # <CJK>
+<U99E7> \x8F\xE9\xAD |0 # <CJK>
+<U99EA> \x8F\xE9\xAE |0 # <CJK>
+<U99EB> \x8F\xE9\xAF |0 # <CJK>
+<U99EC> \x8F\xE9\xB0 |0 # <CJK>
+<U99F0> \x8F\xE9\xB1 |0 # <CJK>
+<U99F4> \x8F\xE9\xB2 |0 # <CJK>
+<U99F5> \x8F\xE9\xB3 |0 # <CJK>
+<U99F9> \x8F\xE9\xB4 |0 # <CJK>
+<U99FD> \x8F\xE9\xB5 |0 # <CJK>
+<U99FE> \x8F\xE9\xB6 |0 # <CJK>
+<U9A02> \x8F\xE9\xB7 |0 # <CJK>
+<U9A03> \x8F\xE9\xB8 |0 # <CJK>
+<U9A04> \x8F\xE9\xB9 |0 # <CJK>
+<U9A0B> \x8F\xE9\xBA |0 # <CJK>
+<U9A0C> \x8F\xE9\xBB |0 # <CJK>
+<U9A10> \x8F\xE9\xBC |0 # <CJK>
+<U9A11> \x8F\xE9\xBD |0 # <CJK>
+<U9A16> \x8F\xE9\xBE |0 # <CJK>
+<U9A1E> \x8F\xE9\xBF |0 # <CJK>
+<U9A20> \x8F\xE9\xC0 |0 # <CJK>
+<U9A22> \x8F\xE9\xC1 |0 # <CJK>
+<U9A23> \x8F\xE9\xC2 |0 # <CJK>
+<U9A24> \x8F\xE9\xC3 |0 # <CJK>
+<U9A27> \x8F\xE9\xC4 |0 # <CJK>
+<U9A2D> \x8F\xE9\xC5 |0 # <CJK>
+<U9A2E> \x8F\xE9\xC6 |0 # <CJK>
+<U9A33> \x8F\xE9\xC7 |0 # <CJK>
+<U9A35> \x8F\xE9\xC8 |0 # <CJK>
+<U9A36> \x8F\xE9\xC9 |0 # <CJK>
+<U9A38> \x8F\xE9\xCA |0 # <CJK>
+<U9A47> \x8F\xE9\xCB |0 # <CJK>
+<U9A41> \x8F\xE9\xCC |0 # <CJK>
+<U9A44> \x8F\xE9\xCD |0 # <CJK>
+<U9A4A> \x8F\xE9\xCE |0 # <CJK>
+<U9A4B> \x8F\xE9\xCF |0 # <CJK>
+<U9A4C> \x8F\xE9\xD0 |0 # <CJK>
+<U9A4E> \x8F\xE9\xD1 |0 # <CJK>
+<U9A51> \x8F\xE9\xD2 |0 # <CJK>
+<U9A54> \x8F\xE9\xD3 |0 # <CJK>
+<U9A56> \x8F\xE9\xD4 |0 # <CJK>
+<U9A5D> \x8F\xE9\xD5 |0 # <CJK>
+<U9AAA> \x8F\xE9\xD6 |0 # <CJK>
+<U9AAC> \x8F\xE9\xD7 |0 # <CJK>
+<U9AAE> \x8F\xE9\xD8 |0 # <CJK>
+<U9AAF> \x8F\xE9\xD9 |0 # <CJK>
+<U9AB2> \x8F\xE9\xDA |0 # <CJK>
+<U9AB4> \x8F\xE9\xDB |0 # <CJK>
+<U9AB5> \x8F\xE9\xDC |0 # <CJK>
+<U9AB6> \x8F\xE9\xDD |0 # <CJK>
+<U9AB9> \x8F\xE9\xDE |0 # <CJK>
+<U9ABB> \x8F\xE9\xDF |0 # <CJK>
+<U9ABE> \x8F\xE9\xE0 |0 # <CJK>
+<U9ABF> \x8F\xE9\xE1 |0 # <CJK>
+<U9AC1> \x8F\xE9\xE2 |0 # <CJK>
+<U9AC3> \x8F\xE9\xE3 |0 # <CJK>
+<U9AC6> \x8F\xE9\xE4 |0 # <CJK>
+<U9AC8> \x8F\xE9\xE5 |0 # <CJK>
+<U9ACE> \x8F\xE9\xE6 |0 # <CJK>
+<U9AD0> \x8F\xE9\xE7 |0 # <CJK>
+<U9AD2> \x8F\xE9\xE8 |0 # <CJK>
+<U9AD5> \x8F\xE9\xE9 |0 # <CJK>
+<U9AD6> \x8F\xE9\xEA |0 # <CJK>
+<U9AD7> \x8F\xE9\xEB |0 # <CJK>
+<U9ADB> \x8F\xE9\xEC |0 # <CJK>
+<U9ADC> \x8F\xE9\xED |0 # <CJK>
+<U9AE0> \x8F\xE9\xEE |0 # <CJK>
+<U9AE4> \x8F\xE9\xEF |0 # <CJK>
+<U9AE5> \x8F\xE9\xF0 |0 # <CJK>
+<U9AE7> \x8F\xE9\xF1 |0 # <CJK>
+<U9AE9> \x8F\xE9\xF2 |0 # <CJK>
+<U9AEC> \x8F\xE9\xF3 |0 # <CJK>
+<U9AF2> \x8F\xE9\xF4 |0 # <CJK>
+<U9AF3> \x8F\xE9\xF5 |0 # <CJK>
+<U9AF5> \x8F\xE9\xF6 |0 # <CJK>
+<U9AF9> \x8F\xE9\xF7 |0 # <CJK>
+<U9AFA> \x8F\xE9\xF8 |0 # <CJK>
+<U9AFD> \x8F\xE9\xF9 |0 # <CJK>
+<U9AFF> \x8F\xE9\xFA |0 # <CJK>
+<U9B00> \x8F\xE9\xFB |0 # <CJK>
+<U9B01> \x8F\xE9\xFC |0 # <CJK>
+<U9B02> \x8F\xE9\xFD |0 # <CJK>
+<U9B03> \x8F\xE9\xFE |0 # <CJK>
+<U9B04> \x8F\xEA\xA1 |0 # <CJK>
+<U9B05> \x8F\xEA\xA2 |0 # <CJK>
+<U9B08> \x8F\xEA\xA3 |0 # <CJK>
+<U9B09> \x8F\xEA\xA4 |0 # <CJK>
+<U9B0B> \x8F\xEA\xA5 |0 # <CJK>
+<U9B0C> \x8F\xEA\xA6 |0 # <CJK>
+<U9B0D> \x8F\xEA\xA7 |0 # <CJK>
+<U9B0E> \x8F\xEA\xA8 |0 # <CJK>
+<U9B10> \x8F\xEA\xA9 |0 # <CJK>
+<U9B12> \x8F\xEA\xAA |0 # <CJK>
+<U9B16> \x8F\xEA\xAB |0 # <CJK>
+<U9B19> \x8F\xEA\xAC |0 # <CJK>
+<U9B1B> \x8F\xEA\xAD |0 # <CJK>
+<U9B1C> \x8F\xEA\xAE |0 # <CJK>
+<U9B20> \x8F\xEA\xAF |0 # <CJK>
+<U9B26> \x8F\xEA\xB0 |0 # <CJK>
+<U9B2B> \x8F\xEA\xB1 |0 # <CJK>
+<U9B2D> \x8F\xEA\xB2 |0 # <CJK>
+<U9B33> \x8F\xEA\xB3 |0 # <CJK>
+<U9B34> \x8F\xEA\xB4 |0 # <CJK>
+<U9B35> \x8F\xEA\xB5 |0 # <CJK>
+<U9B37> \x8F\xEA\xB6 |0 # <CJK>
+<U9B39> \x8F\xEA\xB7 |0 # <CJK>
+<U9B3A> \x8F\xEA\xB8 |0 # <CJK>
+<U9B3D> \x8F\xEA\xB9 |0 # <CJK>
+<U9B48> \x8F\xEA\xBA |0 # <CJK>
+<U9B4B> \x8F\xEA\xBB |0 # <CJK>
+<U9B4C> \x8F\xEA\xBC |0 # <CJK>
+<U9B55> \x8F\xEA\xBD |0 # <CJK>
+<U9B56> \x8F\xEA\xBE |0 # <CJK>
+<U9B57> \x8F\xEA\xBF |0 # <CJK>
+<U9B5B> \x8F\xEA\xC0 |0 # <CJK>
+<U9B5E> \x8F\xEA\xC1 |0 # <CJK>
+<U9B61> \x8F\xEA\xC2 |0 # <CJK>
+<U9B63> \x8F\xEA\xC3 |0 # <CJK>
+<U9B65> \x8F\xEA\xC4 |0 # <CJK>
+<U9B66> \x8F\xEA\xC5 |0 # <CJK>
+<U9B68> \x8F\xEA\xC6 |0 # <CJK>
+<U9B6A> \x8F\xEA\xC7 |0 # <CJK>
+<U9B6B> \x8F\xEA\xC8 |0 # <CJK>
+<U9B6C> \x8F\xEA\xC9 |0 # <CJK>
+<U9B6D> \x8F\xEA\xCA |0 # <CJK>
+<U9B6E> \x8F\xEA\xCB |0 # <CJK>
+<U9B73> \x8F\xEA\xCC |0 # <CJK>
+<U9B75> \x8F\xEA\xCD |0 # <CJK>
+<U9B77> \x8F\xEA\xCE |0 # <CJK>
+<U9B78> \x8F\xEA\xCF |0 # <CJK>
+<U9B79> \x8F\xEA\xD0 |0 # <CJK>
+<U9B7F> \x8F\xEA\xD1 |0 # <CJK>
+<U9B80> \x8F\xEA\xD2 |0 # <CJK>
+<U9B84> \x8F\xEA\xD3 |0 # <CJK>
+<U9B85> \x8F\xEA\xD4 |0 # <CJK>
+<U9B86> \x8F\xEA\xD5 |0 # <CJK>
+<U9B87> \x8F\xEA\xD6 |0 # <CJK>
+<U9B89> \x8F\xEA\xD7 |0 # <CJK>
+<U9B8A> \x8F\xEA\xD8 |0 # <CJK>
+<U9B8B> \x8F\xEA\xD9 |0 # <CJK>
+<U9B8D> \x8F\xEA\xDA |0 # <CJK>
+<U9B8F> \x8F\xEA\xDB |0 # <CJK>
+<U9B90> \x8F\xEA\xDC |0 # <CJK>
+<U9B94> \x8F\xEA\xDD |0 # <CJK>
+<U9B9A> \x8F\xEA\xDE |0 # <CJK>
+<U9B9D> \x8F\xEA\xDF |0 # <CJK>
+<U9B9E> \x8F\xEA\xE0 |0 # <CJK>
+<U9BA6> \x8F\xEA\xE1 |0 # <CJK>
+<U9BA7> \x8F\xEA\xE2 |0 # <CJK>
+<U9BA9> \x8F\xEA\xE3 |0 # <CJK>
+<U9BAC> \x8F\xEA\xE4 |0 # <CJK>
+<U9BB0> \x8F\xEA\xE5 |0 # <CJK>
+<U9BB1> \x8F\xEA\xE6 |0 # <CJK>
+<U9BB2> \x8F\xEA\xE7 |0 # <CJK>
+<U9BB7> \x8F\xEA\xE8 |0 # <CJK>
+<U9BB8> \x8F\xEA\xE9 |0 # <CJK>
+<U9BBB> \x8F\xEA\xEA |0 # <CJK>
+<U9BBC> \x8F\xEA\xEB |0 # <CJK>
+<U9BBE> \x8F\xEA\xEC |0 # <CJK>
+<U9BBF> \x8F\xEA\xED |0 # <CJK>
+<U9BC1> \x8F\xEA\xEE |0 # <CJK>
+<U9BC7> \x8F\xEA\xEF |0 # <CJK>
+<U9BC8> \x8F\xEA\xF0 |0 # <CJK>
+<U9BCE> \x8F\xEA\xF1 |0 # <CJK>
+<U9BD0> \x8F\xEA\xF2 |0 # <CJK>
+<U9BD7> \x8F\xEA\xF3 |0 # <CJK>
+<U9BD8> \x8F\xEA\xF4 |0 # <CJK>
+<U9BDD> \x8F\xEA\xF5 |0 # <CJK>
+<U9BDF> \x8F\xEA\xF6 |0 # <CJK>
+<U9BE5> \x8F\xEA\xF7 |0 # <CJK>
+<U9BE7> \x8F\xEA\xF8 |0 # <CJK>
+<U9BEA> \x8F\xEA\xF9 |0 # <CJK>
+<U9BEB> \x8F\xEA\xFA |0 # <CJK>
+<U9BEF> \x8F\xEA\xFB |0 # <CJK>
+<U9BF3> \x8F\xEA\xFC |0 # <CJK>
+<U9BF7> \x8F\xEA\xFD |0 # <CJK>
+<U9BF8> \x8F\xEA\xFE |0 # <CJK>
+<U9BF9> \x8F\xEB\xA1 |0 # <CJK>
+<U9BFA> \x8F\xEB\xA2 |0 # <CJK>
+<U9BFD> \x8F\xEB\xA3 |0 # <CJK>
+<U9BFF> \x8F\xEB\xA4 |0 # <CJK>
+<U9C00> \x8F\xEB\xA5 |0 # <CJK>
+<U9C02> \x8F\xEB\xA6 |0 # <CJK>
+<U9C0B> \x8F\xEB\xA7 |0 # <CJK>
+<U9C0F> \x8F\xEB\xA8 |0 # <CJK>
+<U9C11> \x8F\xEB\xA9 |0 # <CJK>
+<U9C16> \x8F\xEB\xAA |0 # <CJK>
+<U9C18> \x8F\xEB\xAB |0 # <CJK>
+<U9C19> \x8F\xEB\xAC |0 # <CJK>
+<U9C1A> \x8F\xEB\xAD |0 # <CJK>
+<U9C1C> \x8F\xEB\xAE |0 # <CJK>
+<U9C1E> \x8F\xEB\xAF |0 # <CJK>
+<U9C22> \x8F\xEB\xB0 |0 # <CJK>
+<U9C23> \x8F\xEB\xB1 |0 # <CJK>
+<U9C26> \x8F\xEB\xB2 |0 # <CJK>
+<U9C27> \x8F\xEB\xB3 |0 # <CJK>
+<U9C28> \x8F\xEB\xB4 |0 # <CJK>
+<U9C29> \x8F\xEB\xB5 |0 # <CJK>
+<U9C2A> \x8F\xEB\xB6 |0 # <CJK>
+<U9C31> \x8F\xEB\xB7 |0 # <CJK>
+<U9C35> \x8F\xEB\xB8 |0 # <CJK>
+<U9C36> \x8F\xEB\xB9 |0 # <CJK>
+<U9C37> \x8F\xEB\xBA |0 # <CJK>
+<U9C3D> \x8F\xEB\xBB |0 # <CJK>
+<U9C41> \x8F\xEB\xBC |0 # <CJK>
+<U9C43> \x8F\xEB\xBD |0 # <CJK>
+<U9C44> \x8F\xEB\xBE |0 # <CJK>
+<U9C45> \x8F\xEB\xBF |0 # <CJK>
+<U9C49> \x8F\xEB\xC0 |0 # <CJK>
+<U9C4A> \x8F\xEB\xC1 |0 # <CJK>
+<U9C4E> \x8F\xEB\xC2 |0 # <CJK>
+<U9C4F> \x8F\xEB\xC3 |0 # <CJK>
+<U9C50> \x8F\xEB\xC4 |0 # <CJK>
+<U9C53> \x8F\xEB\xC5 |0 # <CJK>
+<U9C54> \x8F\xEB\xC6 |0 # <CJK>
+<U9C56> \x8F\xEB\xC7 |0 # <CJK>
+<U9C58> \x8F\xEB\xC8 |0 # <CJK>
+<U9C5B> \x8F\xEB\xC9 |0 # <CJK>
+<U9C5D> \x8F\xEB\xCA |0 # <CJK>
+<U9C5E> \x8F\xEB\xCB |0 # <CJK>
+<U9C5F> \x8F\xEB\xCC |0 # <CJK>
+<U9C63> \x8F\xEB\xCD |0 # <CJK>
+<U9C69> \x8F\xEB\xCE |0 # <CJK>
+<U9C6A> \x8F\xEB\xCF |0 # <CJK>
+<U9C5C> \x8F\xEB\xD0 |0 # <CJK>
+<U9C6B> \x8F\xEB\xD1 |0 # <CJK>
+<U9C68> \x8F\xEB\xD2 |0 # <CJK>
+<U9C6E> \x8F\xEB\xD3 |0 # <CJK>
+<U9C70> \x8F\xEB\xD4 |0 # <CJK>
+<U9C72> \x8F\xEB\xD5 |0 # <CJK>
+<U9C75> \x8F\xEB\xD6 |0 # <CJK>
+<U9C77> \x8F\xEB\xD7 |0 # <CJK>
+<U9C7B> \x8F\xEB\xD8 |0 # <CJK>
+<U9CE6> \x8F\xEB\xD9 |0 # <CJK>
+<U9CF2> \x8F\xEB\xDA |0 # <CJK>
+<U9CF7> \x8F\xEB\xDB |0 # <CJK>
+<U9CF9> \x8F\xEB\xDC |0 # <CJK>
+<U9D0B> \x8F\xEB\xDD |0 # <CJK>
+<U9D02> \x8F\xEB\xDE |0 # <CJK>
+<U9D11> \x8F\xEB\xDF |0 # <CJK>
+<U9D17> \x8F\xEB\xE0 |0 # <CJK>
+<U9D18> \x8F\xEB\xE1 |0 # <CJK>
+<U9D1C> \x8F\xEB\xE2 |0 # <CJK>
+<U9D1D> \x8F\xEB\xE3 |0 # <CJK>
+<U9D1E> \x8F\xEB\xE4 |0 # <CJK>
+<U9D2F> \x8F\xEB\xE5 |0 # <CJK>
+<U9D30> \x8F\xEB\xE6 |0 # <CJK>
+<U9D32> \x8F\xEB\xE7 |0 # <CJK>
+<U9D33> \x8F\xEB\xE8 |0 # <CJK>
+<U9D34> \x8F\xEB\xE9 |0 # <CJK>
+<U9D3A> \x8F\xEB\xEA |0 # <CJK>
+<U9D3C> \x8F\xEB\xEB |0 # <CJK>
+<U9D45> \x8F\xEB\xEC |0 # <CJK>
+<U9D3D> \x8F\xEB\xED |0 # <CJK>
+<U9D42> \x8F\xEB\xEE |0 # <CJK>
+<U9D43> \x8F\xEB\xEF |0 # <CJK>
+<U9D47> \x8F\xEB\xF0 |0 # <CJK>
+<U9D4A> \x8F\xEB\xF1 |0 # <CJK>
+<U9D53> \x8F\xEB\xF2 |0 # <CJK>
+<U9D54> \x8F\xEB\xF3 |0 # <CJK>
+<U9D5F> \x8F\xEB\xF4 |0 # <CJK>
+<U9D63> \x8F\xEB\xF5 |0 # <CJK>
+<U9D62> \x8F\xEB\xF6 |0 # <CJK>
+<U9D65> \x8F\xEB\xF7 |0 # <CJK>
+<U9D69> \x8F\xEB\xF8 |0 # <CJK>
+<U9D6A> \x8F\xEB\xF9 |0 # <CJK>
+<U9D6B> \x8F\xEB\xFA |0 # <CJK>
+<U9D70> \x8F\xEB\xFB |0 # <CJK>
+<U9D76> \x8F\xEB\xFC |0 # <CJK>
+<U9D77> \x8F\xEB\xFD |0 # <CJK>
+<U9D7B> \x8F\xEB\xFE |0 # <CJK>
+<U9D7C> \x8F\xEC\xA1 |0 # <CJK>
+<U9D7E> \x8F\xEC\xA2 |0 # <CJK>
+<U9D83> \x8F\xEC\xA3 |0 # <CJK>
+<U9D84> \x8F\xEC\xA4 |0 # <CJK>
+<U9D86> \x8F\xEC\xA5 |0 # <CJK>
+<U9D8A> \x8F\xEC\xA6 |0 # <CJK>
+<U9D8D> \x8F\xEC\xA7 |0 # <CJK>
+<U9D8E> \x8F\xEC\xA8 |0 # <CJK>
+<U9D92> \x8F\xEC\xA9 |0 # <CJK>
+<U9D93> \x8F\xEC\xAA |0 # <CJK>
+<U9D95> \x8F\xEC\xAB |0 # <CJK>
+<U9D96> \x8F\xEC\xAC |0 # <CJK>
+<U9D97> \x8F\xEC\xAD |0 # <CJK>
+<U9D98> \x8F\xEC\xAE |0 # <CJK>
+<U9DA1> \x8F\xEC\xAF |0 # <CJK>
+<U9DAA> \x8F\xEC\xB0 |0 # <CJK>
+<U9DAC> \x8F\xEC\xB1 |0 # <CJK>
+<U9DAE> \x8F\xEC\xB2 |0 # <CJK>
+<U9DB1> \x8F\xEC\xB3 |0 # <CJK>
+<U9DB5> \x8F\xEC\xB4 |0 # <CJK>
+<U9DB9> \x8F\xEC\xB5 |0 # <CJK>
+<U9DBC> \x8F\xEC\xB6 |0 # <CJK>
+<U9DBF> \x8F\xEC\xB7 |0 # <CJK>
+<U9DC3> \x8F\xEC\xB8 |0 # <CJK>
+<U9DC7> \x8F\xEC\xB9 |0 # <CJK>
+<U9DC9> \x8F\xEC\xBA |0 # <CJK>
+<U9DCA> \x8F\xEC\xBB |0 # <CJK>
+<U9DD4> \x8F\xEC\xBC |0 # <CJK>
+<U9DD5> \x8F\xEC\xBD |0 # <CJK>
+<U9DD6> \x8F\xEC\xBE |0 # <CJK>
+<U9DD7> \x8F\xEC\xBF |0 # <CJK>
+<U9DDA> \x8F\xEC\xC0 |0 # <CJK>
+<U9DDE> \x8F\xEC\xC1 |0 # <CJK>
+<U9DDF> \x8F\xEC\xC2 |0 # <CJK>
+<U9DE0> \x8F\xEC\xC3 |0 # <CJK>
+<U9DE5> \x8F\xEC\xC4 |0 # <CJK>
+<U9DE7> \x8F\xEC\xC5 |0 # <CJK>
+<U9DE9> \x8F\xEC\xC6 |0 # <CJK>
+<U9DEB> \x8F\xEC\xC7 |0 # <CJK>
+<U9DEE> \x8F\xEC\xC8 |0 # <CJK>
+<U9DF0> \x8F\xEC\xC9 |0 # <CJK>
+<U9DF3> \x8F\xEC\xCA |0 # <CJK>
+<U9DF4> \x8F\xEC\xCB |0 # <CJK>
+<U9DFE> \x8F\xEC\xCC |0 # <CJK>
+<U9E0A> \x8F\xEC\xCD |0 # <CJK>
+<U9E02> \x8F\xEC\xCE |0 # <CJK>
+<U9E07> \x8F\xEC\xCF |0 # <CJK>
+<U9E0E> \x8F\xEC\xD0 |0 # <CJK>
+<U9E10> \x8F\xEC\xD1 |0 # <CJK>
+<U9E11> \x8F\xEC\xD2 |0 # <CJK>
+<U9E12> \x8F\xEC\xD3 |0 # <CJK>
+<U9E15> \x8F\xEC\xD4 |0 # <CJK>
+<U9E16> \x8F\xEC\xD5 |0 # <CJK>
+<U9E19> \x8F\xEC\xD6 |0 # <CJK>
+<U9E1C> \x8F\xEC\xD7 |0 # <CJK>
+<U9E1D> \x8F\xEC\xD8 |0 # <CJK>
+<U9E7A> \x8F\xEC\xD9 |0 # <CJK>
+<U9E7B> \x8F\xEC\xDA |0 # <CJK>
+<U9E7C> \x8F\xEC\xDB |0 # <CJK>
+<U9E80> \x8F\xEC\xDC |0 # <CJK>
+<U9E82> \x8F\xEC\xDD |0 # <CJK>
+<U9E83> \x8F\xEC\xDE |0 # <CJK>
+<U9E84> \x8F\xEC\xDF |0 # <CJK>
+<U9E85> \x8F\xEC\xE0 |0 # <CJK>
+<U9E87> \x8F\xEC\xE1 |0 # <CJK>
+<U9E8E> \x8F\xEC\xE2 |0 # <CJK>
+<U9E8F> \x8F\xEC\xE3 |0 # <CJK>
+<U9E96> \x8F\xEC\xE4 |0 # <CJK>
+<U9E98> \x8F\xEC\xE5 |0 # <CJK>
+<U9E9B> \x8F\xEC\xE6 |0 # <CJK>
+<U9E9E> \x8F\xEC\xE7 |0 # <CJK>
+<U9EA4> \x8F\xEC\xE8 |0 # <CJK>
+<U9EA8> \x8F\xEC\xE9 |0 # <CJK>
+<U9EAC> \x8F\xEC\xEA |0 # <CJK>
+<U9EAE> \x8F\xEC\xEB |0 # <CJK>
+<U9EAF> \x8F\xEC\xEC |0 # <CJK>
+<U9EB0> \x8F\xEC\xED |0 # <CJK>
+<U9EB3> \x8F\xEC\xEE |0 # <CJK>
+<U9EB4> \x8F\xEC\xEF |0 # <CJK>
+<U9EB5> \x8F\xEC\xF0 |0 # <CJK>
+<U9EC6> \x8F\xEC\xF1 |0 # <CJK>
+<U9EC8> \x8F\xEC\xF2 |0 # <CJK>
+<U9ECB> \x8F\xEC\xF3 |0 # <CJK>
+<U9ED5> \x8F\xEC\xF4 |0 # <CJK>
+<U9EDF> \x8F\xEC\xF5 |0 # <CJK>
+<U9EE4> \x8F\xEC\xF6 |0 # <CJK>
+<U9EE7> \x8F\xEC\xF7 |0 # <CJK>
+<U9EEC> \x8F\xEC\xF8 |0 # <CJK>
+<U9EED> \x8F\xEC\xF9 |0 # <CJK>
+<U9EEE> \x8F\xEC\xFA |0 # <CJK>
+<U9EF0> \x8F\xEC\xFB |0 # <CJK>
+<U9EF1> \x8F\xEC\xFC |0 # <CJK>
+<U9EF2> \x8F\xEC\xFD |0 # <CJK>
+<U9EF5> \x8F\xEC\xFE |0 # <CJK>
+<U9EF8> \x8F\xED\xA1 |0 # <CJK>
+<U9EFF> \x8F\xED\xA2 |0 # <CJK>
+<U9F02> \x8F\xED\xA3 |0 # <CJK>
+<U9F03> \x8F\xED\xA4 |0 # <CJK>
+<U9F09> \x8F\xED\xA5 |0 # <CJK>
+<U9F0F> \x8F\xED\xA6 |0 # <CJK>
+<U9F10> \x8F\xED\xA7 |0 # <CJK>
+<U9F11> \x8F\xED\xA8 |0 # <CJK>
+<U9F12> \x8F\xED\xA9 |0 # <CJK>
+<U9F14> \x8F\xED\xAA |0 # <CJK>
+<U9F16> \x8F\xED\xAB |0 # <CJK>
+<U9F17> \x8F\xED\xAC |0 # <CJK>
+<U9F19> \x8F\xED\xAD |0 # <CJK>
+<U9F1A> \x8F\xED\xAE |0 # <CJK>
+<U9F1B> \x8F\xED\xAF |0 # <CJK>
+<U9F1F> \x8F\xED\xB0 |0 # <CJK>
+<U9F22> \x8F\xED\xB1 |0 # <CJK>
+<U9F26> \x8F\xED\xB2 |0 # <CJK>
+<U9F2A> \x8F\xED\xB3 |0 # <CJK>
+<U9F2B> \x8F\xED\xB4 |0 # <CJK>
+<U9F2F> \x8F\xED\xB5 |0 # <CJK>
+<U9F31> \x8F\xED\xB6 |0 # <CJK>
+<U9F32> \x8F\xED\xB7 |0 # <CJK>
+<U9F34> \x8F\xED\xB8 |0 # <CJK>
+<U9F37> \x8F\xED\xB9 |0 # <CJK>
+<U9F39> \x8F\xED\xBA |0 # <CJK>
+<U9F3A> \x8F\xED\xBB |0 # <CJK>
+<U9F3C> \x8F\xED\xBC |0 # <CJK>
+<U9F3D> \x8F\xED\xBD |0 # <CJK>
+<U9F3F> \x8F\xED\xBE |0 # <CJK>
+<U9F41> \x8F\xED\xBF |0 # <CJK>
+<U9F43> \x8F\xED\xC0 |0 # <CJK>
+<U9F44> \x8F\xED\xC1 |0 # <CJK>
+<U9F45> \x8F\xED\xC2 |0 # <CJK>
+<U9F46> \x8F\xED\xC3 |0 # <CJK>
+<U9F47> \x8F\xED\xC4 |0 # <CJK>
+<U9F53> \x8F\xED\xC5 |0 # <CJK>
+<U9F55> \x8F\xED\xC6 |0 # <CJK>
+<U9F56> \x8F\xED\xC7 |0 # <CJK>
+<U9F57> \x8F\xED\xC8 |0 # <CJK>
+<U9F58> \x8F\xED\xC9 |0 # <CJK>
+<U9F5A> \x8F\xED\xCA |0 # <CJK>
+<U9F5D> \x8F\xED\xCB |0 # <CJK>
+<U9F5E> \x8F\xED\xCC |0 # <CJK>
+<U9F68> \x8F\xED\xCD |0 # <CJK>
+<U9F69> \x8F\xED\xCE |0 # <CJK>
+<U9F6D> \x8F\xED\xCF |0 # <CJK>
+<U9F6E> \x8F\xED\xD0 |0 # <CJK>
+<U9F6F> \x8F\xED\xD1 |0 # <CJK>
+<U9F70> \x8F\xED\xD2 |0 # <CJK>
+<U9F71> \x8F\xED\xD3 |0 # <CJK>
+<U9F73> \x8F\xED\xD4 |0 # <CJK>
+<U9F75> \x8F\xED\xD5 |0 # <CJK>
+<U9F7A> \x8F\xED\xD6 |0 # <CJK>
+<U9F7D> \x8F\xED\xD7 |0 # <CJK>
+<U9F8F> \x8F\xED\xD8 |0 # <CJK>
+<U9F90> \x8F\xED\xD9 |0 # <CJK>
+<U9F91> \x8F\xED\xDA |0 # <CJK>
+<U9F92> \x8F\xED\xDB |0 # <CJK>
+<U9F94> \x8F\xED\xDC |0 # <CJK>
+<U9F96> \x8F\xED\xDD |0 # <CJK>
+<U9F97> \x8F\xED\xDE |0 # <CJK>
+<U9F9E> \x8F\xED\xDF |0 # <CJK>
+<U9FA1> \x8F\xED\xE0 |0 # <CJK>
+<U9FA2> \x8F\xED\xE1 |0 # <CJK>
+<U9FA3> \x8F\xED\xE2 |0 # <CJK>
+<U9FA5> \x8F\xED\xE3 |0 # <CJK>
+
 END CHARMAP
index aadf339..3091a99 100644 (file)
@@ -5,13 +5,21 @@ BEGIN {
     }
 }
 use Encode;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use XSLoader;
 XSLoader::load('Encode::JP',$VERSION);
 
 use Encode::JP::JIS;
 use Encode::JP::ISO_2022_JP;
 
+Encode::define_alias( qr/euc.*jp$/i     => '"euc-jp"' );
+Encode::define_alias( qr/jp.*euc/i      => '"euc-jp"' );
+Encode::define_alias( qr/ujis$/i        => '"euc-jp"' );
+Encode::define_alias( qr/shift.*jis$/i  => '"shiftjis"' );
+Encode::define_alias( qr/sjis$/i        => '"shiftjis"' );
+Encode::define_alias( qr/^jis$/i        => '"7bit-jis"' );
+
 1;
 __END__
 =head1 NAME
@@ -20,21 +28,28 @@ Encode::JP - Japanese Encodings
 
 =head1 SYNOPSIS
 
-    use Encode 'encode';
+    use Encode qw/encode decode/; 
     $euc_jp = encode("euc-jp", $utf8);   # loads Encode::JP implicitly
-    $utf8   = encode("euc-jp", $euc_jp); # ditto
+    $utf8   = decode("euc-jp", $euc_jp); # ditto
 
 =head1 ABSTRACT
 
 This module implements Japanese charset encodings.  Encodings
 supported are as follows.
 
-  euc-jp        EUC (Extended Unix Character)
-  shiftjis      Shift JIS (aka MS Kanji)
-  7bit-jis      7bit JIS
-  iso-2022-jp   ISO-2022-JP (7bit JIS with all X201 converted to X208)
-  macjapan      Mac Japan (Shift JIS + Apple vendor mappings)
-  cp932         Code Page 932 (Shift JIS + Microsoft vendor mappings)
+  Canonical   Alias            Description
+  --------------------------------------------------------------------
+  euc-jp      /euc.*jp$/i      EUC (Extended Unix Character)
+              /jp.*euc/i   
+             /ujis$/i
+  shiftjis    /shift.*jis$/i   Shift JIS (aka MS Kanji)
+             /sjis$/i
+  7bit-jis    /^jis$/i         7bit JIS
+  iso-2022-jp                  ISO-2022-JP 
+                               (7bit JIS with all Halfwidth Kana 
+                                converted to Fullwidth)
+  macjapan      Mac Japan      (Shift JIS + Apple vendor mappings)
+  cp932         Code Page 932  (Shift JIS + Microsoft vendor mappings)
 
 =head1 DESCRIPTION
 
@@ -42,8 +57,6 @@ To find how to use this module in detail, see L<Encode>.
 
 =head1 BUGS
 
-JIS X0212-1990 is not supported.
-
 ASCII part (0x00-0x7f) is preserved for all encodings, even though it
 conflicts with mappings by the Unicode Consortium.  See
 
index 3aac0b0..cb98de2 100644 (file)
@@ -2,7 +2,8 @@ use 5.7.2;
 use strict;
 use ExtUtils::MakeMaker;
 
-my %tables = (EUC_JP   => ['euc-jp.enc'],
+my %tables = (
+             EUC_JP   => ['euc-jp.ucm'],
               SHIFTJIS => ['shiftjis.enc'],
              MACJAPAN => ['macJapan.enc'],
              CP932    => ['cp932.enc'],
index fabe334..2a6507a 100644 (file)
@@ -1,10 +1,13 @@
 package Encode::KR;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 use Encode;
 use XSLoader;
 XSLoader::load('Encode::KR',$VERSION);
 
+Encode::define_alias( qr/euc.*kr$/i     => '"euc-kr"' );
+Encode::define_alias( qr/kr.*euc/i      => '"euc-kr"' );
+
 1;
 __END__
 =head1 NAME
@@ -13,18 +16,23 @@ Encode::KR - Korean Encodings
 
 =head1 SYNOPSIS
 
-    use Encode 'encode';
+    use Encode qw/encode decode/; 
     $euc_kr = encode("euc-kr", $utf8);   # loads Encode::KR implicitly
-    $utf8   = encode("euc-kr", $euc_kr); # ditto
+    $utf8   = decode("euc-kr", $euc_kr); # ditto
 
 =head1 DESCRIPTION
 
 This module implements Korean charset encodings.  Encodings supported
 are as follows.
 
-  euc-kr       EUC (Extended Unix Character)
-  ksc5601      Korean standard code set
-  cp949                Code Page 949 (EUC-KR + Unified Hangul Code)
+
+  Canonical   Alias            Description
+  --------------------------------------------------------------------
+  euc-kr      /euc.*kr$/i      EUC (Extended Unix Character)
+             /kr.*euc/i
+  ksc5601                      Korean standard code set
+  cp949                                Code Page 949 
+                               (EUC-KR + Unified Hangul Code)
   
 To find how to use this module in detail, see L<Encode>.
 
index dcf7a80..4d5c6fa 100644 (file)
-CN/CN.pm
-CN/Makefile.PL
-compile
-encengine.c
-encode.h
-Encode.pm
-Encode.xs
-Encode/11643-1.enc
-Encode/11643-2.enc
-Encode/2022-cn.enc
-Encode/2022-jp.enc
-Encode/2022-jp1.enc
-Encode/2022-jp2.enc
-Encode/2022-kr.enc
-Encode/2022.enc
-Encode/7bit-greek.enc
-Encode/7bit-jis.enc
-Encode/7bit-kana.enc
-Encode/7bit-latin1.enc
-Encode/8859-1.enc
-Encode/8859-1.ucm
-Encode/8859-10.enc
-Encode/8859-10.ucm
-Encode/8859-11.enc
-Encode/8859-11.ucm
-Encode/8859-13.enc
-Encode/8859-13.ucm
-Encode/8859-14.enc
-Encode/8859-14.ucm
-Encode/8859-15.enc
-Encode/8859-15.ucm
-Encode/8859-16.enc
-Encode/8859-16.ucm
-Encode/8859-2.enc
-Encode/8859-2.ucm
-Encode/8859-3.enc
-Encode/8859-3.ucm
-Encode/8859-4.enc
-Encode/8859-4.ucm
-Encode/8859-5.enc
-Encode/8859-5.ucm
-Encode/8859-6.enc
-Encode/8859-6.ucm
-Encode/8859-7.enc
-Encode/8859-7.ucm
-Encode/8859-8.enc
-Encode/8859-8.ucm
-Encode/8859-9.enc
-Encode/8859-9.ucm
-Encode/ascii.enc
-Encode/ascii.ucm
-Encode/big5-hkscs.enc
-Encode/big5.enc
-Encode/cp1006.enc
-Encode/cp1047.enc
-Encode/cp1047.ucm
-Encode/cp1250.enc
-Encode/cp1250.ucm
-Encode/cp1251.enc
-Encode/cp1252.enc
-Encode/cp1253.enc
-Encode/cp1254.enc
-Encode/cp1255.enc
-Encode/cp1256.enc
-Encode/cp1257.enc
-Encode/cp1258.enc
-Encode/cp37.enc
-Encode/cp37.ucm
-Encode/cp424.enc
-Encode/cp437.enc
-Encode/cp737.enc
-Encode/cp775.enc
-Encode/cp850.enc
-Encode/cp852.enc
-Encode/cp855.enc
-Encode/cp856.enc
-Encode/cp857.enc
-Encode/cp860.enc
-Encode/cp861.enc
-Encode/cp862.enc
-Encode/cp863.enc
-Encode/cp864.enc
-Encode/cp865.enc
-Encode/cp866.enc
-Encode/cp869.enc
-Encode/cp874.enc
-Encode/cp932.enc
-Encode/cp936.enc
-Encode/cp949.enc
-Encode/cp950.enc
-Encode/dingbats.enc
-Encode/dingbats.ucm
-Encode/euc-cn.enc
-Encode/euc-jp-0212.enc
-Encode/euc-jp.enc
-Encode/euc-jp.ucm
-Encode/euc-kr.enc
-Encode/gb12345.enc
-Encode/gb1988.enc
-Encode/gb2312.enc
-Encode/gsm0338.enc
-Encode/ir-197.enc
-Encode/iso-ir-165.enc
-Encode/jis0201.enc
-Encode/jis0201.ucm
-Encode/jis0208.enc
-Encode/jis0212.enc
-Encode/koi8-f.enc
-Encode/koi8-f.ucm
-Encode/koi8-r.enc
-Encode/koi8-r.ucm
-Encode/koi8-u.enc
-Encode/koi8-u.ucm
-Encode/ksc5601.enc
-Encode/macCentEuro.enc
-Encode/macCroatian.enc
-Encode/macCyrillic.enc
-Encode/macDingbats.enc
-Encode/macGreek.enc
-Encode/macIceland.enc
-Encode/macJapan.enc
-Encode/macRoman.enc
-Encode/macRumanian.enc
-Encode/macSami.enc
-Encode/macThai.enc
-Encode/macTurkish.enc
-Encode/macUkraine.enc
-Encode/nextstep.enc
-Encode/nextstep.ucm
-Encode/posix-bc.enc
-Encode/posix-bc.ucm
-Encode/roman8.enc
-Encode/roman8.ucm
-Encode/shiftjis.enc
-Encode/symbol.enc
-Encode/symbol.ucm
-Encode/viscii.enc
-Encode/viscii.ucm
-JP/JP.pm
-JP/Makefile.PL
-KR/KR.pm
-KR/Makefile.PL
-lib/Encode/CN/HZ.pm
-lib/Encode/Encoding.pm
-lib/Encode/Internal.pm
-lib/Encode/iso10646_1.pm
-lib/Encode/JP/Constants.pm
-lib/Encode/JP/H2Z.pm
-lib/Encode/JP/ISO_2022_JP.pm
-lib/Encode/JP/JIS.pm
-lib/Encode/Tcl.pm
-lib/Encode/Tcl/Escape.pm
-lib/Encode/Tcl/Extended.pm
-lib/Encode/Tcl/Table.pm
-lib/Encode/ucs2_le.pm
-lib/Encode/Unicode.pm
-lib/Encode/utf8.pm
-lib/Encode/XS.pm
-lib/EncodeFormat.pod
-Makefile.PL
-MANIFEST
-README
-t/CN.t
-t/Encode.t
-t/japanese.pl
-t/JP.t
-t/table.euc
-t/table.ref
-t/Tcl.t
-t/TW.t
-TW/Makefile.PL
-TW/TW.pm
+AUTHORS                List of authors
+CN/CN.pm               Encode extension
+CN/Makefile.PL Encode extension
+Changes                Change Log
+Encode.pm                      Encode extension
+Encode.xs              Encode extension
+Encode/11643-1.enc             Encode table
+Encode/11643-2.enc             Encode table
+Encode/2022-cn.enc             Encode table
+Encode/2022-jp.enc             Encode table
+Encode/2022-jp1.enc            Encode table
+Encode/2022-jp2.enc            Encode table
+Encode/2022-kr.enc             Encode table
+Encode/2022.enc                Encode table
+Encode/7bit-greek.enc  Encode table
+Encode/7bit-jis.enc            Encode table
+Encode/7bit-kana.enc           Encode table
+Encode/7bit-latin1.enc Encode table
+Encode/8859-1.enc              Encode table
+Encode/8859-1.ucm              Encode table
+Encode/8859-10.enc             Encode table
+Encode/8859-10.ucm             Encode table
+Encode/8859-11.enc             Encode table
+Encode/8859-11.ucm             Encode table
+Encode/8859-13.enc             Encode table
+Encode/8859-13.ucm             Encode table
+Encode/8859-14.enc             Encode table
+Encode/8859-14.ucm             Encode table
+Encode/8859-15.enc             Encode table
+Encode/8859-15.ucm             Encode table
+Encode/8859-16.enc             Encode table
+Encode/8859-16.ucm             Encode table
+Encode/8859-2.enc              Encode table
+Encode/8859-2.ucm              Encode table
+Encode/8859-3.enc              Encode table
+Encode/8859-3.ucm              Encode table
+Encode/8859-4.enc              Encode table
+Encode/8859-4.ucm              Encode table
+Encode/8859-5.enc              Encode table
+Encode/8859-5.ucm              Encode table
+Encode/8859-6.enc              Encode table
+Encode/8859-6.ucm              Encode table
+Encode/8859-7.enc              Encode table
+Encode/8859-7.ucm              Encode table
+Encode/8859-8.enc              Encode table
+Encode/8859-8.ucm              Encode table
+Encode/8859-9.enc              Encode table
+Encode/8859-9.ucm              Encode table
+Encode/ascii.enc               Encode table
+Encode/ascii.ucm               Encode table
+Encode/big5-hkscs.enc  Encode table
+Encode/big5.enc                Encode table
+Encode/cp1006.enc              Encode table
+Encode/cp1047.enc              Encode table
+Encode/cp1047.ucm              Encode table
+Encode/cp1250.enc              Encode table
+Encode/cp1250.ucm              Encode table
+Encode/cp1251.enc              Encode table
+Encode/cp1252.enc              Encode table
+Encode/cp1253.enc              Encode table
+Encode/cp1254.enc              Encode table
+Encode/cp1255.enc              Encode table
+Encode/cp1256.enc              Encode table
+Encode/cp1257.enc              Encode table
+Encode/cp1258.enc              Encode table
+Encode/cp37.enc                Encode table
+Encode/cp37.ucm                Encode table
+Encode/cp424.enc               Encode table
+Encode/cp437.enc               Encode table
+Encode/cp737.enc               Encode table
+Encode/cp775.enc               Encode table
+Encode/cp850.enc               Encode table
+Encode/cp852.enc               Encode table
+Encode/cp855.enc               Encode table
+Encode/cp856.enc               Encode table
+Encode/cp857.enc               Encode table
+Encode/cp860.enc               Encode table
+Encode/cp861.enc               Encode table
+Encode/cp862.enc               Encode table
+Encode/cp863.enc               Encode table
+Encode/cp864.enc               Encode table
+Encode/cp865.enc               Encode table
+Encode/cp866.enc               Encode table
+Encode/cp869.enc               Encode table
+Encode/cp874.enc               Encode table
+Encode/cp932.enc               Encode table
+Encode/cp936.enc               Encode table
+Encode/cp949.enc               Encode table
+Encode/cp950.enc               Encode table
+Encode/dingbats.enc            Encode table
+Encode/dingbats.ucm            Encode table
+Encode/euc-cn.enc              Encode table
+Encode/euc-jp.enc              Encode table
+Encode/euc-jp.ucm              Encode table
+Encode/euc-kr.enc              Encode table
+Encode/gb12345.enc             Encode table
+Encode/gb1988.enc              Encode table
+Encode/gb2312.enc              Encode table
+Encode/gsm0338.enc             Encode table
+Encode/ir-197.enc              Encode table
+Encode/iso-ir-165.enc  Encode table
+Encode/jis0201.enc             Encode table
+Encode/jis0201.ucm             Encode table
+Encode/jis0208.enc             Encode table
+Encode/jis0212.enc             Encode table
+Encode/koi8-f.enc              Encode table
+Encode/koi8-f.ucm              Encode table
+Encode/koi8-r.enc              Encode table
+Encode/koi8-r.ucm              Encode table
+Encode/koi8-u.enc              Encode table
+Encode/koi8-u.ucm              Encode table
+Encode/ksc5601.enc             Encode table
+Encode/macCentEuro.enc Encode table
+Encode/macCroatian.enc Encode table
+Encode/macCyrillic.enc Encode table
+Encode/macDingbats.enc Encode table
+Encode/macGreek.enc            Encode table
+Encode/macIceland.enc  Encode table
+Encode/macJapan.enc            Encode table
+Encode/macRoman.enc            Encode table
+Encode/macRumanian.enc Encode table
+Encode/macSami.enc             Encode table
+Encode/macThai.enc             Encode table
+Encode/macTurkish.enc  Encode table
+Encode/macUkraine.enc  Encode table
+Encode/nextstep.enc            Encode table
+Encode/nextstep.ucm            Encode table
+Encode/posix-bc.enc            Encode table
+Encode/posix-bc.ucm            Encode table
+Encode/roman8.enc              Encode table
+Encode/roman8.ucm              Encode table
+Encode/shiftjis.enc            Encode table
+Encode/symbol.enc              Encode table
+Encode/symbol.ucm              Encode table
+Encode/viscii.enc              Encode table
+Encode/viscii.ucm              Encode table
+JP/JP.pm               Encode extension
+JP/Makefile.PL Encode extension
+KR/KR.pm               Encode extension
+KR/Makefile.PL         Encode extension
+MANIFEST               Encode extension
+Makefile.PL            Encode extension makefile writer
+README         Encode extension
+TW/Makefile.PL Encode extension
+TW/TW.pm               Encode extension
+compile                Encode extension
+encengine.c            Encode extension
+encode.h               Encode extension
+lib/Encode/CN/HZ.pm            Encode extension
+lib/Encode/Description.pod     General topics on character encodings
+lib/Encode/Encoding.pm Encode extension
+lib/Encode/Internal.pm Encode extension
+lib/Encode/JP/Constants.pm     Encode extension
+lib/Encode/JP/H2Z.pm           Encode extension
+lib/Encode/JP/ISO_2022_JP.pm   Encode extension
+lib/Encode/JP/JIS.pm   Encode extension
+lib/Encode/Tcl.pm              Encode extension
+lib/Encode/Tcl/Escape.pm       Encode extension
+lib/Encode/Tcl/Table.pm        Encode extension
+lib/Encode/Unicode.pm  Encode extension
+lib/Encode/XS.pm               Encode extension
+lib/Encode/iso10646_1.pm       Encode extension
+lib/Encode/ucs2_le.pm  Encode extension
+lib/Encode/utf8.pm             Encode extension
+lib/EncodeFormat.pod           Encode extension
+t/CJKalias.t   Encode extension test
+t/CN.t         Encode extension test
+t/Encode.t             Encode extension test
+t/JP.t         Encode extension test
+t/TW.t         Encode extension test
+t/Tcl.t                Encode extension test
+t/jisx0208.euc Encode extension test
+t/jisx0208.ref Encode extension test
+t/jisx0212.euc Encode extension test
+t/jisx0212.ref Encode extension test
index 6e8384f..9f923fb 100644 (file)
@@ -24,3 +24,7 @@ DEPENDENCIES
 
 This module requires perl5.7.2 or later.
 
+QUESTIONS?
+
+If you have any questions "perldoc Encode" does not answer, please
+feel free to ask at perl-unicode@perl.org.
index 20402c2..3daa2a1 100644 (file)
@@ -1,10 +1,13 @@
 package Encode::TW;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 use Encode;
 use XSLoader;
 XSLoader::load('Encode::TW',$VERSION);
 
+Encode::define_alias( qr/big-?5$/i             => '"big5"' );
+Encode::define_alias( qr/big5-hk(?:scs)?/i     => '"big5-hkscs"' );
+
 1;
 __END__
 =head1 NAME
@@ -13,18 +16,22 @@ Encode::TW - Taiwan-based Chinese Encodings
 
 =head1 SYNOPSIS
 
-    use Encode 'encode'; 
+    use Encode qw/encode decode/; 
     $big5 = encode("big5", $utf8); # loads Encode::TW implicitly
-    $utf8 = encode("big5", $big5); # ditto
+    $utf8 = decode("big5", $big5); # ditto
 
 =head1 DESCRIPTION
 
 This module implements Taiwan-based Chinese charset encodings.
 Encodings supported are as follows.
 
-  big5         The original Big5 encoding
-  big5-hkscs   Big5 plus Cantonese characters in Hong Kong
-  cp950                Code Page 950 (Big5 + Microsoft vendor mappings)
+  Canonical   Alias            Description
+  --------------------------------------------------------------------
+  big5        /big-?5$/i       The original Big5 encoding
+  big5-hkscs  /big5-hk(scs)?$/i        Big5 plus Cantonese characters in 
+                                Hong Kong
+  cp950                                Code Page 950 
+                                (Big5 + Microsoft vendor mappings)
   
 To find how to use this module in detail, see L<Encode>.
 
index f9ff326..6e382ff 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 no warnings 'redefine'; # to quell the "use Encode" below
 
 use vars qw($VERSION);
-$VERSION = 0.01;
+$VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 use Encode::CN;
 use Encode qw|encode decode|;
diff --git a/ext/Encode/lib/Encode/Description.pod b/ext/Encode/lib/Encode/Description.pod
new file mode 100644 (file)
index 0000000..aa3a0af
--- /dev/null
@@ -0,0 +1,821 @@
+
+=head1 NAME
+
+Encode - character encodings
+
+=head1 SYNOPSIS
+
+    use Encode;
+
+=head1 DESCRIPTION
+
+The C<Encode> module provides the interfaces between Perl's strings
+and the rest of the system.  Perl strings are sequences of B<characters>.
+
+The repertoire of characters that Perl can represent is at least that
+defined by the Unicode Consortium. On most platforms the ordinal
+values of the characters (as returned by C<ord(ch)>) is the "Unicode
+codepoint" for the character (the exceptions are those platforms where
+the legacy encoding is some variant of EBCDIC rather than a super-set
+of ASCII - see L<perlebcdic>).
+
+Traditionaly computer data has been moved around in 8-bit chunks
+often called "bytes". These chunks are also known as "octets" in
+networking standards. Perl is widely used to manipulate data of
+many types - not only strings of characters representing human or
+computer languages but also "binary" data being the machines representation
+of numbers, pixels in an image - or just about anything.
+
+When Perl is processing "binary data" the programmer wants Perl to process
+"sequences of bytes". This is not a problem for Perl - as a byte has 256
+possible values it easily fits in Perl's much larger "logical character".
+
+Due to size concerns, each of B<CJK> (Chinese, Japanese & Korean) modules
+are not loaded in memory until the first time they're used. Although you
+don't have to C<use> the corresponding B<Encode::>(B<TW>|B<CN>|B<JP>|B<KR>)
+modules first, be aware that those encodings will not be in C<%encodings>
+until their module is loaded (either implicitly through using encodings
+contained in the same module, or via an explicit C<use>).
+
+=head2 TERMINOLOGY
+
+=over 4
+
+=item *
+
+I<character>: a character in the range 0..(2**32-1) (or more).
+(What Perl's strings are made of.)
+
+=item *
+
+I<byte>: a character in the range 0..255
+(A special case of a Perl character.)
+
+=item *
+
+I<octet>: 8 bits of data, with ordinal values 0..255
+(Term for bytes passed to or from a non-Perl context, e.g. disk file.)
+
+=back
+
+The marker [INTERNAL] marks Internal Implementation Details, in
+general meant only for those who think they know what they are doing,
+and such details may change in future releases.
+
+=head1 ENCODINGS
+
+=head2 Characteristics of an Encoding
+
+An encoding has a "repertoire" of characters that it can represent,
+and for each representable character there is at least one sequence of
+octets that represents it.
+
+=head2 Types of Encodings
+
+Encodings can be divided into the following types:
+
+=over 4
+
+=item * Fixed length 8-bit (or less) encodings.
+
+Each character is a single octet so may have a repertoire of up to
+256 characters. ASCII and iso-8859-* are typical examples.
+
+=item * Fixed length 16-bit encodings
+
+Each character is two octets so may have a repertoire of up to
+65 536 characters.  Unicode's UCS-2 is an example.  Also used for
+encodings for East Asian languages.
+
+=item * Fixed length 32-bit encodings.
+
+Not really very "encoded" encodings. The Unicode code points
+are just represented as 4-octet integers. None the less because
+different architectures use different representations of integers
+(so called "endian") there at least two disctinct encodings.
+
+=item * Multi-byte encodings
+
+The number of octets needed to represent a character varies.
+UTF-8 is a particularly complex but regular case of a multi-byte
+encoding. Several East Asian countries use a multi-byte encoding
+where 1-octet is used to cover western roman characters and Asian
+characters get 2-octets.
+(UTF-16 is strictly a multi-byte encoding taking either 2 or 4 octets
+to represent a Unicode code point.)
+
+=item * "Escape" encodings.
+
+These encodings embed "escape sequences" into the octet sequence
+which describe how the following octets are to be interpreted.
+The iso-2022-* family is typical. Following the escape sequence
+octets are encoded by an "embedded" encoding (which will be one
+of the above types) until another escape sequence switches to
+a different "embedded" encoding.
+
+These schemes are very flexible and can handle mixed languages but are
+very complex to process (and have state).  No escape encodings are
+implemented for Perl yet.
+
+=back
+
+=head2 Specifying Encodings
+
+Encodings can be specified to the API described below in two ways:
+
+=over 4
+
+=item 1. By name
+
+Encoding names are strings with characters taken from a restricted
+repertoire.  See L</"Encoding Names">.
+
+=item 2. As an object
+
+Encoding objects are returned by C<find_encoding($name, [$skip_external])>.
+If the second parameter is true, Encode will refrain from loading external
+modules for CJK encodings.
+
+=back
+
+=head2 Encoding Names
+
+Encoding names are case insensitive. White space in names is ignored.
+In addition an encoding may have aliases. Each encoding has one
+"canonical" name.  The "canonical" name is chosen from the names of
+the encoding by picking the first in the following sequence:
+
+=over 4
+
+=item * The MIME name as defined in IETF RFCs.
+
+=item * The name in the IANA registry.
+
+=item * The name used by the organization that defined it.
+
+=back
+
+Because of all the alias issues, and because in the general case
+encodings have state C<Encode> uses the encoding object internally
+once an operation is in progress.
+
+As of Perl 5.8.0, at least the following encodings are recognized
+(the => marks aliases):
+
+  ASCII
+
+  US-ASCII => ASCII
+
+The Unicode:
+
+  UTF-8
+  UTF-16
+  UCS-2
+
+  ISO 10646-1 => UCS-2
+
+The ISO 8859 and KOI:
+
+  ISO 8859-1  ISO 8859-6   ISO 8859-11         KOI8-F
+  ISO 8859-2  ISO 8859-7   (12 doesn't exist)  KOI8-R
+  ISO 8859-3  ISO 8859-8   ISO 8859-13         KOI8-U
+  ISO 8859-4  ISO 8859-9   ISO 8859-14
+  ISO 8859-5  ISO 8859-10  ISO 8859-15
+                           ISO 8859-16
+
+  Latin1  => 8859-1  Latin6  => 8859-10
+  Latin2  => 8859-2  Latin7  => 8859-13
+  Latin3  => 8859-3  Latin8  => 8859-14
+  Latin4  => 8859-4  Latin9  => 8859-15
+  Latin5  => 8859-9  Latin10 => 8859-16
+
+  Cyrillic => 8859-5
+  Arabic   => 8859-6
+  Greek    => 8859-7
+  Hebrew   => 8859-8
+  Thai     => 8859-11
+  TIS620   => 8859-11
+
+The CJKV: Chinese, Japanese, Korean, Vietnamese:
+
+  ISO 2022     ISO 2022 JP-1  JIS 0201  GB 1988   Big5       EUC-CN
+  ISO 2022 CN  ISO 2022 JP-2  JIS 0208  GB 2312   HZ         EUC-JP
+  ISO 2022 JP  ISO 2022 KR    JIS 0210  GB 12345  CNS 11643  EUC-JP-0212
+  Shift-JIS                            GBK       Big5-HKSCS EUC-KR
+  VISCII                               ISO-IR-165
+
+(Due to size concerns, additional Chinese encodings including C<GB 18030>,
+C<EUC-TW> and C<BIG5PLUS> are distributed separately on CPAN, under the name
+L<Encode::HanExtra>.)
+
+The PC codepages:
+
+  CP37   CP852  CP861  CP866  CP949   CP1251  CP1256
+  CP424  CP855  CP862  CP869  CP950   CP1252  CP1257
+  CP737  CP856  CP863  CP874  CP1006  CP1253  CP1258
+  CP775  CP857  CP864  CP932  CP1047  CP1254
+  CP850  CP860  CP865  CP936  CP1250  CP1255
+
+  WinLatin1     => CP1252
+  WinLatin2     => CP1250
+  WinCyrillic   => CP1251
+  WinGreek      => CP1253
+  WinTurkiskh   => CP1254
+  WinHebrew     => CP1255
+  WinArabic     => CP1256
+  WinBaltic     => CP1257
+  WinVietnamese => CP1258
+
+(All the CPI<NNN...> are available also as IBMI<NNN...>.)
+
+The Mac codepages:
+
+  MacCentralEuropean   MacJapanese
+  MacCroatian          MacRoman
+  MacCyrillic          MacRomanian
+  MacDingbats          MacSami
+  MacGreek             MacThai
+  MacIcelandic         MacTurkish
+                       MacUkraine
+
+Miscellaneous:
+
+  7bit-greek  IR-197
+  7bit-kana   NeXTstep
+  7bit-latin1 POSIX-BC
+  DingBats    Roman8
+  GSM 0338    Symbol
+
+=head2 Encoding Classification
+
+Encodings
+
+  US-ASCII    UTF-8       KOI8-R      ISO-8859-*
+  ISO-2022-CN ISO-2022-JP ISO-2022-KR Big5
+  EUC-CN      EUC-JP      EUC-KR
+
+are L<http://www.iana.org/assignments/character-sets>-registered
+as preferred MIME names and may probably be used over the Internet. 
+So is
+
+  Shift_JIS
+
+but despite its wide spread it bears the label of being 
+Microsft proprietary.
+
+  UTF-16 KOI8-U ISO-2022-JP-2 
+
+are IANA-registered preferred MIME names but probably shoule
+be avoided as encoding for web pages due to lack of browser 
+support.
+
+
+  ISO-2022      (http://www.ecma.ch/ecma1/STAND/ECMA-035.HTM)
+  ISO-2022-JP-1 (http://www.faqs.org/rfcs/rfc2237.html)
+  ISO-IR-165    (http://www.faqs.org/rfcs/rfc1345.html)
+  GBK 
+  VISCII
+  GB 12345      (only plains 1 and 2 available)
+  GB 18030
+  CNS 11643
+
+are totally valid encodings but not registered at IANA.
+
+  BIG5PLUS
+  EUC-JP-0212   (Encode::lib::Encode::Tcl::Extended)
+
+are a bit proprietary
+
+You may probably get some info on CJK encodings at
+
+  brief description for most of the mentioned CJK encodings
+   http://www.debian.org.ru/doc/manuals/intro-i18n/ch-codes.html
+
+  several years old, but still useful
+   http://www.oreilly.com/people/authors/lunde/cjk_inf.html
+
+  and some in-depth reading for the heroes :-)
+   http://www.ecma.ch/ecma1/STAND/ECMA-035.HTM (eq ISO-2022)
+   http://www.faqs.org/rfcs/rfc1345.txt
+
+
+=head1 PERL ENCODING API
+
+=head2 Generic Encoding Interface
+
+=over 4
+
+=item *
+
+        $bytes  = encode(ENCODING, $string[, CHECK])
+
+Encodes string from Perl's internal form into I<ENCODING> and returns
+a sequence of octets.  For CHECK see L</"Handling Malformed Data">.
+
+For example to convert (internally UTF-8 encoded) Unicode data
+to octets:
+
+       $octets = encode("utf8", $unicode);
+
+=item *
+
+        $string = decode(ENCODING, $bytes[, CHECK])
+
+Decode sequence of octets assumed to be in I<ENCODING> into Perl's
+internal form and returns the resulting string.  For CHECK see
+L</"Handling Malformed Data">.
+
+For example to convert ISO-8859-1 data to UTF-8:
+
+       $utf8 = decode("latin1", $latin1);
+
+=item *
+
+       from_to($string, FROM_ENCODING, TO_ENCODING[, CHECK])
+
+Convert B<in-place> the data between two encodings.  How did the data
+in $string originally get to be in FROM_ENCODING?  Either using
+encode() or through PerlIO: See L</"Encoding and IO">.  For CHECK
+see L</"Handling Malformed Data">.
+
+For example to convert ISO-8859-1 data to UTF-8:
+
+       from_to($data, "iso-8859-1", "utf-8");
+
+and to convert it back:
+
+       from_to($data, "utf-8", "iso-8859-1");
+
+Note that because the conversion happens in place, the data to be
+converted cannot be a string constant, it must be a scalar variable.
+
+=back
+
+=head2 Handling Malformed Data
+
+If CHECK is not set, C<undef> is returned.  If the data is supposed to
+be UTF-8, an optional lexical warning (category utf8) is given.  If
+CHECK is true but not a code reference, dies.
+
+It would desirable to have a way to indicate that transform should use
+the encodings "replacement character" - no such mechanism is defined yet.
+
+It is also planned to allow I<CHECK> to be a code reference.
+
+This is not yet implemented as there are design issues with what its
+arguments should be and how it returns its results.
+
+=over 4
+
+=item Scheme 1
+
+Passed remaining fragment of string being processed.
+Modifies it in place to remove bytes/characters it can understand
+and returns a string used to represent them.
+e.g.
+
+ sub fixup {
+   my $ch = substr($_[0],0,1,'');
+   return sprintf("\x{%02X}",ord($ch);
+ }
+
+This scheme is close to how underlying C code for Encode works, but gives
+the fixup routine very little context.
+
+=item Scheme 2
+
+Passed original string, and an index into it of the problem area, and
+output string so far.  Appends what it will to output string and
+returns new index into original string.  For example:
+
+ sub fixup {
+   # my ($s,$i,$d) = @_;
+   my $ch = substr($_[0],$_[1],1);
+   $_[2] .= sprintf("\x{%02X}",ord($ch);
+   return $_[1]+1;
+ }
+
+This scheme gives maximal control to the fixup routine but is more
+complicated to code, and may need internals of Encode to be tweaked to
+keep original string intact.
+
+=item Other Schemes
+
+Hybrids of above.
+
+Multiple return values rather than in-place modifications.
+
+Index into the string could be pos($str) allowing s/\G...//.
+
+=back
+
+=head2 UTF-8 / utf8
+
+The Unicode consortium defines the UTF-8 standard as a way of encoding
+the entire Unicode repertiore as sequences of octets.  This encoding is
+expected to become very widespread. Perl can use this form internaly
+to represent strings, so conversions to and from this form are
+particularly efficient (as octets in memory do not have to change,
+just the meta-data that tells Perl how to treat them).
+
+=over 4
+
+=item *
+
+        $bytes = encode_utf8($string);
+
+The characters that comprise string are encoded in Perl's superset of UTF-8
+and the resulting octets returned as a sequence of bytes. All possible
+characters have a UTF-8 representation so this function cannot fail.
+
+=item *
+
+        $string = decode_utf8($bytes [,CHECK]);
+
+The sequence of octets represented by $bytes is decoded from UTF-8
+into a sequence of logical characters. Not all sequences of octets
+form valid UTF-8 encodings, so it is possible for this call to fail.
+For CHECK see L</"Handling Malformed Data">.
+
+=back
+
+=head2 Other Encodings of Unicode
+
+UTF-16 is similar to UCS-2, 16 bit or 2-byte chunks.  UCS-2 can only
+represent 0..0xFFFF, while UTF-16 has a I<surrogate pair> scheme which
+allows it to cover the whole Unicode range.
+
+Surrogates are code points set aside to encode the 0x01000..0x10FFFF
+range of Unicode code points in pairs of 16-bit units.  The I<high
+surrogates> are the range 0xD800..0xDBFF, and the I<low surrogates>
+are the range 0xDC00..0xDFFFF.  The surrogate encoding is
+
+       $hi = ($uni - 0x10000) / 0x400 + 0xD800;
+       $lo = ($uni - 0x10000) % 0x400 + 0xDC00;
+
+and the decoding is
+
+       $uni = 0x10000 + ($hi - 0xD8000) * 0x400 + ($lo - 0xDC00);
+
+Encode implements big-endian UCS-2 aliased to "iso-10646-1" as that
+happens to be the name used by that representation when used with X11
+fonts.
+
+UTF-32 or UCS-4 is 32-bit or 4-byte chunks.  Perl's logical characters
+can be considered as being in this form without encoding. An encoding
+to transfer strings in this form (e.g. to write them to a file) would
+need to
+
+     pack('L*', unpack('U*', $string));  # native
+  or
+     pack('V*', unpack('U*', $string));  # little-endian
+  or
+     pack('N*', unpack('U*', $string));  # big-endian
+
+depending on the endianness required.
+
+No UTF-32 encodings are implemented yet.
+
+Both UCS-2 and UCS-4 style encodings can have "byte order marks" by
+representing the code point 0xFFFE as the very first thing in a file.
+
+=head2 Listing available encodings
+
+  use Encode qw(encodings);
+  @list = encodings();
+
+Returns a list of the canonical names of the available encodings.
+
+=head2 Defining Aliases
+
+  use Encode qw(define_alias);
+  define_alias( newName => ENCODING);
+
+Allows newName to be used as am alias for ENCODING. ENCODING may be
+either the name of an encoding or and encoding object (as above).
+
+Currently I<newName> can be specified in the following ways:
+
+=over 4
+
+=item As a simple string.
+
+=item As a qr// compiled regular expression, e.g.:
+
+  define_alias( qr/^iso8859-(\d+)$/i => '"iso-8859-$1"' );
+
+In this case if I<ENCODING> is not a reference it is C<eval>-ed to
+allow C<$1> etc. to be subsituted.  The example is one way to names as
+used in X11 font names to alias the MIME names for the iso-8859-*
+family.  Note the double quote inside the single quote.  If you are
+using regex here, y ou have to do so or it won't work in this case.
+
+=item As a code reference, e.g.:
+
+  define_alias( sub { return /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } , '');
+
+In this case C<$_> will be set to the name that is being looked up and
+I<ENCODING> is passed to the sub as its first argument.  The example
+is another way to names as used in X11 font names to alias the MIME
+names for the iso-8859-* family.
+
+=back
+
+=head2 Defining Encodings
+
+    use Encode qw(define_alias);
+    define_encoding( $object, 'canonicalName' [,alias...]);
+
+Causes I<canonicalName> to be associated with I<$object>.  The object
+should provide the interface described in L</"IMPLEMENTATION CLASSES">
+below.  If more than two arguments are provided then additional
+arguments are taken as aliases for I<$object> as for C<define_alias>.
+
+=head1 Encoding and IO
+
+It is very common to want to do encoding transformations when
+reading or writing files, network connections, pipes etc.
+If Perl is configured to use the new 'perlio' IO system then
+C<Encode> provides a "layer" (See L<perliol>) which can transform
+data as it is read or written.
+
+Here is how the blind poet would modernise the encoding:
+
+    use Encode;
+    open(my $iliad,'<:encoding(iso-8859-7)','iliad.greek');
+    open(my $utf8,'>:utf8','iliad.utf8');
+    my @epic = <$iliad>;
+    print $utf8 @epic;
+    close($utf8);
+    close($illiad);
+
+In addition the new IO system can also be configured to read/write
+UTF-8 encoded characters (as noted above this is efficient):
+
+    open(my $fh,'>:utf8','anything');
+    print $fh "Any \x{0021} string \N{SMILEY FACE}\n";
+
+Either of the above forms of "layer" specifications can be made the default
+for a lexical scope with the C<use open ...> pragma. See L<open>.
+
+Once a handle is open is layers can be altered using C<binmode>.
+
+Without any such configuration, or if Perl itself is built using
+system's own IO, then write operations assume that file handle accepts
+only I<bytes> and will C<die> if a character larger than 255 is
+written to the handle. When reading, each octet from the handle
+becomes a byte-in-a-character. Note that this default is the same
+behaviour as bytes-only languages (including Perl before v5.6) would
+have, and is sufficient to handle native 8-bit encodings
+e.g. iso-8859-1, EBCDIC etc. and any legacy mechanisms for handling
+other encodings and binary data.
+
+In other cases it is the programs responsibility to transform
+characters into bytes using the API above before doing writes, and to
+transform the bytes read from a handle into characters before doing
+"character operations" (e.g. C<lc>, C</\W+/>, ...).
+
+You can also use PerlIO to convert larger amounts of data you don't
+want to bring into memory.  For example to convert between ISO-8859-1
+(Latin 1) and UTF-8 (or UTF-EBCDIC in EBCDIC machines):
+
+    open(F, "<:encoding(iso-8859-1)", "data.txt") or die $!;
+    open(G, ">:utf8",                 "data.utf") or die $!;
+    while (<F>) { print G }
+
+    # Could also do "print G <F>" but that would pull
+    # the whole file into memory just to write it out again.
+
+More examples:
+
+    open(my $f, "<:encoding(cp1252)")
+    open(my $g, ">:encoding(iso-8859-2)")
+    open(my $h, ">:encoding(latin9)")       # iso-8859-15
+
+See L<PerlIO> for more information.
+
+See also L<encoding> for how to change the default encoding of the
+data in your script.
+
+=head1 Encoding How to ...
+
+To do:
+
+=over 4
+
+=item * IO with mixed content (faking iso-2022-*)
+
+Encode::JP implements its own iso-2022 routines, however.
+
+=item * MIME's Content-Length:
+
+=item * UTF-8 strings in binary data.
+
+=item * Perl/Encode wrappers on non-Unicode XS modules.
+
+=back
+
+=head1 Messing with Perl's Internals
+
+The following API uses parts of Perl's internals in the current
+implementation.  As such they are efficient, but may change.
+
+=over 4
+
+=item * is_utf8(STRING [, CHECK])
+
+[INTERNAL] Test whether the UTF-8 flag is turned on in the STRING.
+If CHECK is true, also checks the data in STRING for being well-formed
+UTF-8.  Returns true if successful, false otherwise.
+
+=item *
+
+        _utf8_on(STRING)
+
+[INTERNAL] Turn on the UTF-8 flag in STRING.  The data in STRING is
+B<not> checked for being well-formed UTF-8.  Do not use unless you
+B<know> that the STRING is well-formed UTF-8.  Returns the previous
+state of the UTF-8 flag (so please don't test the return value as
+I<not> success or failure), or C<undef> if STRING is not a string.
+
+=item *
+
+        _utf8_off(STRING)
+
+[INTERNAL] Turn off the UTF-8 flag in STRING.  Do not use frivolously.
+Returns the previous state of the UTF-8 flag (so please don't test the
+return value as I<not> success or failure), or C<undef> if STRING is
+not a string.
+
+=back
+
+=head1 IMPLEMENTATION CLASSES
+
+As mentioned above encodings are (in the current implementation at least)
+defined by objects. The mapping of encoding name to object is via the
+C<%encodings> hash.
+
+The values of the hash can currently be either strings or objects.
+The string form may go away in the future. The string form occurs
+when C<encodings()> has scanned C<@INC> for loadable encodings but has
+not actually loaded the encoding in question. This is because the
+current "loading" process is all Perl and a bit slow.
+
+Once an encoding is loaded then value of the hash is object which
+implements the encoding. The object should provide the following
+interface:
+
+=over 4
+
+=item -E<gt>name
+
+Should return the string representing the canonical name of the encoding.
+
+=item -E<gt>new_sequence
+
+This is a placeholder for encodings with state. It should return an
+object which implements this interface, all current implementations
+return the original object.
+
+=item -E<gt>encode($string,$check)
+
+Should return the octet sequence representing I<$string>. If I<$check>
+is true it should modify I<$string> in place to remove the converted
+part (i.e.  the whole string unless there is an error).  If an error
+occurs it should return the octet sequence for the fragment of string
+that has been converted, and modify $string in-place to remove the
+converted part leaving it starting with the problem fragment.
+
+If check is is false then C<encode> should make a "best effort" to
+convert the string - for example by using a replacement character.
+
+=item -E<gt>decode($octets,$check)
+
+Should return the string that I<$octets> represents. If I<$check> is
+true it should modify I<$octets> in place to remove the converted part
+(i.e.  the whole sequence unless there is an error).  If an error
+occurs it should return the fragment of string that has been
+converted, and modify $octets in-place to remove the converted part
+leaving it starting with the problem fragment.
+
+If check is is false then C<decode> should make a "best effort" to
+convert the string - for example by using Unicode's "\x{FFFD}" as a
+replacement character.
+
+=back
+
+It should be noted that the check behaviour is different from the
+outer public API. The logic is that the "unchecked" case is useful
+when encoding is part of a stream which may be reporting errors
+(e.g. STDERR).  In such cases it is desirable to get everything
+through somehow without causing additional errors which obscure the
+original one. Also the encoding is best placed to know what the
+correct replacement character is, so if that is the desired behaviour
+then letting low level code do it is the most efficient.
+
+In contrast if check is true, the scheme above allows the encoding to
+do as much as it can and tell layer above how much that was. What is
+lacking at present is a mechanism to report what went wrong. The most
+likely interface will be an additional method call to the object, or
+perhaps (to avoid forcing per-stream objects on otherwise stateless
+encodings) and additional parameter.
+
+It is also highly desirable that encoding classes inherit from
+C<Encode::Encoding> as a base class. This allows that class to define
+additional behaviour for all encoding objects. For example built in
+Unicode, UCS-2 and UTF-8 classes use :
+
+  package Encode::MyEncoding;
+  use base qw(Encode::Encoding);
+
+  __PACKAGE__->Define(qw(myCanonical myAlias));
+
+To create an object with bless {Name => ...},$class, and call
+define_encoding.  They inherit their C<name> method from
+C<Encode::Encoding>.
+
+=head2 Compiled Encodings
+
+F<Encode.xs> provides a class C<Encode::XS> which provides the
+interface described above. It calls a generic octet-sequence to
+octet-sequence "engine" that is driven by tables (defined in
+F<encengine.c>). The same engine is used for both encode and
+decode. C<Encode:XS>'s C<encode> forces Perl's characters to their
+UTF-8 form and then treats them as just another multibyte
+encoding. C<Encode:XS>'s C<decode> transforms the sequence and then
+turns the UTF-8-ness flag as that is the form that the tables are
+defined to produce. For details of the engine see the comments in
+F<encengine.c>.
+
+The tables are produced by the Perl script F<compile> (the name needs
+to change so we can eventually install it somewhere). F<compile> can
+currently read two formats:
+
+=over 4
+
+=item *.enc
+
+This is a coined format used by Tcl. It is documented in
+Encode/EncodeFormat.pod.
+
+=item *.ucm
+
+This is the semi-standard format used by IBM's ICU package.
+
+=back
+
+F<compile> can write the following forms:
+
+=over 4
+
+=item *.ucm
+
+See above - the F<Encode/*.ucm> files provided with the distribution have
+been created from the original Tcl .enc files using this approach.
+
+=item *.c
+
+Produces tables as C data structures - this is used to build in encodings
+into F<Encode.so>/F<Encode.dll>.
+
+=item *.xs
+
+In theory this allows encodings to be stand-alone loadable Perl
+extensions.  The process has not yet been tested. The plan is to use
+this approach for large East Asian encodings.
+
+=back
+
+The set of encodings built-in to F<Encode.so>/F<Encode.dll> is
+determined by F<Makefile.PL>.  The current set is as follows:
+
+=over 4
+
+=item ascii and iso-8859-*
+
+That is all the common 8-bit "western" encodings.
+
+=item IBM-1047 and two other variants of EBCDIC.
+
+These are the same variants that are supported by EBCDIC Perl as
+"native" encodings.  They are included to prove "reversibility" of
+some constructs in EBCDIC Perl.
+
+=item symbol and dingbats as used by Tk on X11.
+
+(The reason Encode got started was to support Perl/Tk.)
+
+=back
+
+That set is rather ad hoc and has been driven by the needs of the
+tests rather than the needs of typical applications. It is likely
+to be rationalized.
+
+=head1 SEE ALSO
+
+L<perlunicode>, L<perlebcdic>, L<perlfunc/open>, L<PerlIO>, L<encoding>,
+L<utf8>, the Perl Unicode Mailing List E<lt>perl-unicode@perl.orgE<gt>
+
+
+=cut
+
index a3b6310..3327fa7 100644 (file)
@@ -1,7 +1,7 @@
 package Encode::Encoding;
 # Base class for classes which implement encodings
 use strict;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 sub Define
 {
@@ -24,3 +24,178 @@ sub DESTROY {}
 
 1;
 __END__
+
+=head1 NAME
+
+Encode::Encoding - Encode Implementation Base Class
+
+=head1 SYNOPSIS
+
+  package Encode::MyEncoding;
+  use base qw(Encode::Encoding);
+
+  __PACKAGE__->Define(qw(myCanonical myAlias));
+
+=head 1 DESCRIPTION
+
+As mentioned in L<Encode>, encodings are (in the current
+implementation at least) defined by objects. The mapping of encoding
+name to object is via the C<%encodings> hash.
+
+The values of the hash can currently be either strings or objects.
+The string form may go away in the future. The string form occurs
+when C<encodings()> has scanned C<@INC> for loadable encodings but has
+not actually loaded the encoding in question. This is because the
+current "loading" process is all Perl and a bit slow.
+
+Once an encoding is loaded then value of the hash is object which
+implements the encoding. The object should provide the following
+interface:
+
+=over 4
+
+=item -E<gt>name
+
+Should return the string representing the canonical name of the encoding.
+
+=item -E<gt>new_sequence
+
+This is a placeholder for encodings with state. It should return an
+object which implements this interface, all current implementations
+return the original object.
+
+=item -E<gt>encode($string,$check)
+
+Should return the octet sequence representing I<$string>. If I<$check>
+is true it should modify I<$string> in place to remove the converted
+part (i.e.  the whole string unless there is an error).  If an error
+occurs it should return the octet sequence for the fragment of string
+that has been converted, and modify $string in-place to remove the
+converted part leaving it starting with the problem fragment.
+
+If check is is false then C<encode> should make a "best effort" to
+convert the string - for example by using a replacement character.
+
+=item -E<gt>decode($octets,$check)
+
+Should return the string that I<$octets> represents. If I<$check> is
+true it should modify I<$octets> in place to remove the converted part
+(i.e.  the whole sequence unless there is an error).  If an error
+occurs it should return the fragment of string that has been
+converted, and modify $octets in-place to remove the converted part
+leaving it starting with the problem fragment.
+
+If check is is false then C<decode> should make a "best effort" to
+convert the string - for example by using Unicode's "\x{FFFD}" as a
+replacement character.
+
+=back
+
+It should be noted that the check behaviour is different from the
+outer public API. The logic is that the "unchecked" case is useful
+when encoding is part of a stream which may be reporting errors
+(e.g. STDERR).  In such cases it is desirable to get everything
+through somehow without causing additional errors which obscure the
+original one. Also the encoding is best placed to know what the
+correct replacement character is, so if that is the desired behaviour
+then letting low level code do it is the most efficient.
+
+In contrast if check is true, the scheme above allows the encoding to
+do as much as it can and tell layer above how much that was. What is
+lacking at present is a mechanism to report what went wrong. The most
+likely interface will be an additional method call to the object, or
+perhaps (to avoid forcing per-stream objects on otherwise stateless
+encodings) and additional parameter.
+
+It is also highly desirable that encoding classes inherit from
+C<Encode::Encoding> as a base class. This allows that class to define
+additional behaviour for all encoding objects. For example built in
+Unicode, UCS-2 and UTF-8 classes use :
+
+  package Encode::MyEncoding;
+  use base qw(Encode::Encoding);
+
+  __PACKAGE__->Define(qw(myCanonical myAlias));
+
+To create an object with bless {Name => ...},$class, and call
+define_encoding.  They inherit their C<name> method from
+C<Encode::Encoding>.
+
+=head2 Compiled Encodings
+
+F<Encode.xs> provides a class C<Encode::XS> which provides the
+interface described above. It calls a generic octet-sequence to
+octet-sequence "engine" that is driven by tables (defined in
+F<encengine.c>). The same engine is used for both encode and
+decode. C<Encode:XS>'s C<encode> forces Perl's characters to their
+UTF-8 form and then treats them as just another multibyte
+encoding. C<Encode:XS>'s C<decode> transforms the sequence and then
+turns the UTF-8-ness flag as that is the form that the tables are
+defined to produce. For details of the engine see the comments in
+F<encengine.c>.
+
+The tables are produced by the Perl script F<compile> (the name needs
+to change so we can eventually install it somewhere). F<compile> can
+currently read two formats:
+
+=over 4
+
+=item *.enc
+
+This is a coined format used by Tcl. It is documented in
+Encode/EncodeFormat.pod.
+
+=item *.ucm
+
+This is the semi-standard format used by IBM's ICU package.
+
+=back
+
+F<compile> can write the following forms:
+
+=over 4
+
+=item *.ucm
+
+See above - the F<Encode/*.ucm> files provided with the distribution have
+been created from the original Tcl .enc files using this approach.
+
+=item *.c
+
+Produces tables as C data structures - this is used to build in encodings
+into F<Encode.so>/F<Encode.dll>.
+
+=item *.xs
+
+In theory this allows encodings to be stand-alone loadable Perl
+extensions.  The process has not yet been tested. The plan is to use
+this approach for large East Asian encodings.
+
+=back
+
+The set of encodings built-in to F<Encode.so>/F<Encode.dll> is
+determined by F<Makefile.PL>.  The current set is as follows:
+
+=over 4
+
+=item ascii and iso-8859-*
+
+That is all the common 8-bit "western" encodings.
+
+=item IBM-1047 and two other variants of EBCDIC.
+
+These are the same variants that are supported by EBCDIC Perl as
+"native" encodings.  They are included to prove "reversibility" of
+some constructs in EBCDIC Perl.
+
+=item symbol and dingbats as used by Tk on X11.
+
+(The reason Encode got started was to support Perl/Tk.)
+
+=back
+
+That set is rather ad hoc and has been driven by the needs of the
+tests rather than the needs of typical applications. It is likely
+to be rationalized.
+
+=cut
index a807bce..b510d42 100644 (file)
@@ -1,6 +1,7 @@
 package Encode::Internal;
 use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use base 'Encode::Encoding';
 
 # Dummy package that provides the encode interface but leaves data
index baa0b2b..3ffba8a 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $Id: Constants.pm,v 1.2 2001/05/18 05:14:38 dankogai Exp dankogai $
+# $Id: Constants.pm,v 0.92 2002/03/19 17:01:26 dankogai Exp $
 #
 
 package Encode::JP::Constants;
@@ -7,8 +7,8 @@ package Encode::JP::Constants;
 use strict;
 use vars qw($RCSID $VERSION);
 
-$RCSID = q$Id: Constants.pm,v 1.2 2001/05/18 05:14:38 dankogai Exp dankogai $;
-$VERSION = do { my @r = (q$Revision: 1.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+$RCSID = q$Id: Constants.pm,v 0.92 2002/03/19 17:01:26 dankogai Exp $;
+$VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 use Carp;
 
index d18fc9f..dbfac50 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $Id: H2Z.pm,v 0.77 2002/01/14 11:06:55 dankogai Exp $
+# $Id: H2Z.pm,v 0.92 2002/03/19 17:01:26 dankogai Exp $
 #
 
 package Encode::JP::H2Z;
@@ -7,8 +7,8 @@ package Encode::JP::H2Z;
 use strict;
 use vars qw($RCSID $VERSION);
 
-$RCSID = q$Id: H2Z.pm,v 0.77 2002/01/14 11:06:55 dankogai Exp $;
-$VERSION = do { my @r = (q$Revision: 0.77 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+$RCSID = q$Id: H2Z.pm,v 0.92 2002/03/19 17:01:26 dankogai Exp $;
+$VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 use Carp;
 
index b8c77b3..388be5f 100644 (file)
@@ -5,12 +5,14 @@ use Encode::JP::H2Z;
 use base 'Encode::Encoding';
 
 use vars qw($VERSION);
-$VERSION = 0.01;
+$VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 my $canon = 'iso-2022-jp';
 my $obj = bless {name => $canon}, __PACKAGE__;
 $obj->Define($canon);
 
+sub name { return $_[0]->{name}; }
+
 #
 # decode is identical to 7bit-jis
 #
index 810477d..6e6dd0f 100644 (file)
@@ -5,7 +5,7 @@ use base 'Encode::Encoding';
 use strict;
 
 use vars qw($VERSION);
-$VERSION = 0.01;
+$VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 # Just for the time being, we implement jis-7bit
 # encoding via EUC
@@ -14,6 +14,8 @@ my $canon = '7bit-jis';
 my $obj = bless {name => $canon}, __PACKAGE__;
 $obj->Define($canon);
 
+sub name { return $_[0]->{name}; }
+
 sub decode
 {
     my ($obj,$str,$chk) = @_;
index c423d8e..d47ed11 100644 (file)
@@ -5,7 +5,8 @@ BEGIN {
     }
 }
 use strict;
-our $VERSION = do {my @r=(q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use Encode qw(find_encoding);
 use base 'Encode::Encoding';
 use Carp;
@@ -124,7 +125,6 @@ sub INC_find
 
 require Encode::Tcl::Table;
 require Encode::Tcl::Escape;
-require Encode::Tcl::Extended;
 
 1;
 __END__
@@ -158,6 +158,4 @@ L<Encode::Tcl::Table>
 
 L<Encode::Tcl::Escape>
 
-L<Encode::Tcl::Extended>
-
 =cut
index 5697c99..89290fb 100644 (file)
@@ -1,6 +1,7 @@
 package Encode::Tcl::Escape;
 use strict;
-our $VERSION = do {my @r=(q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use base 'Encode::Encoding';
 
 use Carp;
@@ -31,7 +32,7 @@ sub read
                    $val =~ /[\x30-\x3F]$/ ? 2 : # (only 2 is supported)
                        $val =~ /[\x40-\x5F]$/ ? 2 : # double byte
                            $val =~ /[\x60-\x6F]$/ ? 3 : # triple byte
-                               $val =~ /[\x70-\x7F]$/ ? 4 :
+                               $val =~ /[\x70-\x7E]$/ ? 4 :
                                  # 4 or more (only 4 is supported)
                                    croak("odd sequence is defined");
 
@@ -96,8 +97,8 @@ sub decode
            }
            else
            {
-               # strictly, ([\x20-\x2F]*[\x30-\x7E]). '?' for chopped.
-               $str =~ s/^([\x20-\x2F]*[\x30-\x7E]?)//;
+               # strictly, ([\x21-\x2F]*[\x30-\x7E]). '?' for chopped.
+               $str =~ s/^([\x21-\x2F]*[\x30-\x7E]?)//;
                if ($chk && ! length $str)
                {
                    $str = "\e$1"; # split sequence
@@ -215,7 +216,7 @@ and the following:
   SINGLE SHIFT TWO (SS2)             ESC 04/14
   SINGLE SHIFT THREE (SS3)           ESC 04/15
 
-Designation of control character sets are not supported.
+Designation of control character sets is not supported.
 
 =head1 SEE ALSO
 
diff --git a/ext/Encode/lib/Encode/Tcl/Extended.pm b/ext/Encode/lib/Encode/Tcl/Extended.pm
deleted file mode 100644 (file)
index 0fa3035..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-package Encode::Tcl::Extended;
-use strict;
-our $VERSION = do {my @r=(q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
-use base 'Encode::Encoding';
-
-use Carp;
-
-sub read
-{
-    my ($obj,$fh,$name) = @_;
-    my(%tbl, $enc, %ssc, @key);
-    while (<$fh>)
-    {
-       next unless /^(\S+)\s+(.*)$/;
-       my ($key,$val) = ($1,$2);
-       $val =~ s/\{(.*?)\}/$1/;
-       $val =~ s/\\x([0-9a-f]{2})/chr(hex($1))/ge;
-
-       if($enc = Encode->getEncoding($key))
-       {
-           push @key, $val;
-           $tbl{$val} = ref($enc) eq 'Encode::Tcl' ? $enc->loadEncoding : $enc;
-           $ssc{$val} = substr($val,1) if $val =~ /^>/;
-       }
-       else
-       {
-           $obj->{$key} = $val;
-       }
-    }
-    $obj->{'SSC'} = \%ssc; # single shift char
-    $obj->{'Tbl'} = \%tbl; # encoding tables
-    $obj->{'Key'} = \@key; # keys of table hash
-    return $obj;
-}
-
-sub decode
-{
-    my ($obj,$str,$chk) = @_;
-    my $name = $obj->{'Name'};
-    my $tbl  = $obj->{'Tbl'};
-    my $ssc  = $obj->{'SSC'};
-    my $cur = ''; # current state
-    my $uni;
-    while (length($str))
-    {
-       my $cc = substr($str,0,1,'');
-       my $ch  = ord($cc);
-       if(!$cur && $ch > 0x7F)
-       {
-           $cur = '>';
-           $cur .= $cc, next if $ssc->{$cur.$cc};
-       }
-       $ch ^= 0x80 if $cur;
-
-       if(ref($tbl->{$cur}) ne 'Encode::Tcl::Table')
-       {
-           $uni .= $tbl->{$cur}->decode($cc);
-           $cur = '';
-           next;
-       }
-       my $rep   = $tbl->{$cur}->{'Rep'};
-       my $touni = $tbl->{$cur}->{'ToUni'};
-       my $x;
-       if (&$rep($ch) eq 'C')
-       {
-           $x = $touni->[0][$ch];
-       }
-       else
-       {
-           if(! length $str)
-           {
-               $str = $cc; # split leading byte
-               last;
-           }
-           my $c2 = substr($str,0,1,'');
-           $cc .= $c2;
-           $x = $touni->[$ch][0x80 ^ ord($c2)];
-       }
-       unless (defined $x)
-       {
-         Encode::Tcl::no_map_in_decode($name, $cc.$str);
-       }
-       $uni .= $x;
-       $cur = '';
-    }
-    if($chk)
-    {
-       $cur =~ s/>//;
-       $_[1] = $cur ne '' ? $cur.$str : $str;
-    }
-    return $uni;
-}
-
-sub encode
-{
-    my ($obj,$uni,$chk) = @_;
-    my $name = $obj->{'Name'};
-    my $tbl = $obj->{'Tbl'};
-    my $ssc = $obj->{'SSC'};
-    my $key = $obj->{'Key'};
-    my $str;
-    my $cur;
-
-    while (length($uni))
-    {
-       my $ch = substr($uni,0,1,'');
-       my $x;
-       foreach my $k (@$key)
-       {
-           $x = ref($tbl->{$k}) ne 'Encode::Tcl::Table'
-               ? $k =~ /^>/
-                   ? $tbl->{$k}->encode(chr(0x80 ^ ord $ch),1)
-                       : $tbl->{$k}->encode($ch,1)
-                           : $tbl->{$k}->{FmUni}->{$ch};
-           $cur = $k, last if defined $x;
-       }
-       unless (defined $x)
-       {
-           unless($chk)
-           {
-             Encode::Tcl::no_map_in_encode(ord($ch), $name)
-             }
-           return undef;
-       }
-       if(ref($tbl->{$cur}) eq 'Encode::Tcl::Table')
-       {
-           my $def = $tbl->{$cur}->{'Def'};
-           my $rep = $tbl->{$cur}->{'Rep'};
-           my $r = &$rep($x);
-           $x = pack($r,
-                     $cur =~ /^>/
-                     ? $r eq 'C' ? 0x80 ^ $x : 0x8080 ^ $x
-                     : $x);
-       }
-       $str .= $ssc->{$cur} if defined $ssc->{$cur};
-       $str .= $x;
-    }
-    $_[1] = $uni if $chk;
-    return $str;
-}
-1;
-__END__
-
-=head1 NAME
-
-Encode::Tcl::Extended - Tcl EUC encodings
-
-=head1 SYNOPSIS
-
-none
-
-=head1 DESCRIPTION
-
-This module is used internally by Encode::Tcl
-and handles type X of Tcl encodings (a Perl extenstion).
-
-Only F<euc-jp-0212.enc> belongs to type X.
-This is a variant of EUC-JP with JIS X 0212 in G3.
-If another Encode:: module would support the above encoding,
-this module should be removed.
-
-=head1 SEE ALSO
-
-L<Encode>
-
-L<Encode::Tcl>
-
-L<Encode::JP>
-
-=cut
index 2e9a837..948c3b9 100644 (file)
@@ -1,6 +1,7 @@
 package Encode::Tcl::Table;
 use strict;
-our $VERSION = do {my @r=(q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use base 'Encode::Encoding';
 
 use Carp;
@@ -109,7 +110,6 @@ sub decode
     return $uni;
 }
 
-
 sub encode
 {
     my ($obj,$uni,$chk) = @_;
@@ -152,7 +152,7 @@ This module is used internally by Encode::Tcl
 and handles types S, D, and M of Tcl encodings.
 
 Implementation for type M is restricted to encodings
-in which bytes per a character is up to 2.
+in which the number of bytes per a character is up to 2.
 
 =head1 SEE ALSO
 
index 13a8e9c..919c9f2 100644 (file)
@@ -1,6 +1,7 @@
 package Encoding::Unicode;
 use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use base 'Encode::Encoding';
 
 __PACKAGE__->Define('Unicode') unless ord('A') == 65;
index c356cd6..9522828 100644 (file)
@@ -1,8 +1,8 @@
 package Encode::XS;
 use strict;
-our $VERSION = do {my @r=(q$Revision: 0.40 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use base 'Encode::Encoding';
 1;
 __END__
 
-
index cabc6c3..0cc71d3 100644 (file)
@@ -1,6 +1,7 @@
 package Encode::iso10646_1;
 use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use base 'Encode::Encoding';
 # Encoding is 16-bit network order Unicode (no surogates)
 # Used for X font encodings
index 82d67ca..ef25a8f 100644 (file)
@@ -1,6 +1,7 @@
 package Encode::ucs_2le;
 use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use base 'Encode::Encoding';
 
 __PACKAGE__->Define(qw(UCS-2le UCS-2LE ucs-2le));
index b7acdad..3743d30 100644 (file)
@@ -1,6 +1,7 @@
 package Encode::utf8;
 use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 use base 'Encode::Encoding';
 # package to allow long-hand
 #   $octets = encode( utf8 => $string );
diff --git a/ext/Encode/t/CJKalias.t b/ext/Encode/t/CJKalias.t
new file mode 100644 (file)
index 0000000..cc1efe5
--- /dev/null
@@ -0,0 +1,35 @@
+use strict;
+use Encode::CN;
+use Encode::JP;
+use Encode::KR;
+use Encode::TW;
+
+print "# alias test\n";
+
+my %a2c;
+
+BEGIN {
+       %a2c = qw(
+                 ja_JP.euc     euc-jp
+                 x-euc-jp      euc-jp
+                 zh_CN.euc     euc-cn
+                 x-euc-cn      euc-cn
+                 ko_KR.euc     euc-kr
+                 x-euc-kr      euc-kr
+                 ujis          euc-jp
+                 Shift_JIS     shiftjis
+                 x-sjis        shiftjis
+                 jis           7bit-jis
+                 big-5         big5
+                 zh_TW.Big5    big5
+                 big5-hk       big5-hkscs
+                 );
+}
+
+use Test::More tests => scalar keys %a2c;
+
+foreach my $a (keys %a2c){          
+    my $e = Encode::find_encoding($a);
+    is($e->name, $a2c{$a});
+}
+
index 2185a07..671ee05 100644 (file)
@@ -1,6 +1,6 @@
 BEGIN {
     chdir 't' if -d 't';
-    @INC = '../lib';
+    unshift @INC, '../lib';
     require Config; import Config;
     if ($Config{'extensions'} !~ /\bEncode\b/) {
       print "1..0 # Skip: Encode was not built\n";
index 28becb4..9c21578 100644 (file)
@@ -1,6 +1,6 @@
 BEGIN {
     chdir 't' if -d 't';
-    push @INC, '../lib';
+    unshift @INC, '../lib';
     require Config; import Config;
     if ($Config{'extensions'} !~ /\bEncode\b/) {
       print "1..0 # Skip: Encode was not built\n";
index 31ba2da..733aeb9 100644 (file)
@@ -1,6 +1,6 @@
 BEGIN {
-    chdir 't' if -d 't';
-    @INC = '../lib';
+    chdir 't' if -d 't' and $ENV{PWD} !~ m,/Encode[^/]*$,o;
+    unshift @INC, '../lib';
     require Config; import Config;
     if ($Config{'extensions'} !~ /\bEncode\b/) {
       print "1..0 # Skip: Encode was not built\n";
@@ -17,38 +17,45 @@ BEGIN {
     $| = 1;
 }
 use strict;
-use Test::More tests => 22;
+use Test::More tests => 27;
+#use Test::More qw(no_plan);
 use Encode;
 use File::Basename;
 use File::Spec;
 use File::Compare;
 require_ok "Encode::JP";
 
-my ($src, $uni, $dst, $txt);
+my ($src, $uni, $dst, $txt, $euc, $utf, $ref, $rnd);
 
 ok(defined(my $enc = find_encoding('euc-jp')));
 ok($enc->isa('Encode::XS'));
 is($enc->name,'euc-jp');
 my $dir = dirname(__FILE__);
-my $euc = File::Spec->catfile($dir,"table.euc");
-my $utf = File::Spec->catfile($dir,"$$.utf8");
-my $ref = File::Spec->catfile($dir,"table.ref");
-my $rnd = File::Spec->catfile($dir,"$$.rnd");
-print "# Basic decode test\n";
-open($src,"<",$euc) || die "Cannot open $euc:$!";
-binmode($src);
-ok(defined($src) && fileno($src));
-$txt = join('',<$src>);
-open($dst,">:utf8",$utf) || die "Cannot open $utf:$!";
-binmode($dst);
-ok(defined($dst) && fileno($dst));
-$uni = $enc->decode($txt,1);
-ok(defined($uni));
-is(length($txt),0);
-print $dst $uni;
-close($dst);
-close($src);
-ok(compare($utf,$ref) == 0);
+
+my @subcodings = qw(jisx0212 jisx0208);
+
+for my $subcoding (@subcodings){
+    $euc = File::Spec->catfile($dir,"$subcoding.euc");
+    $utf = File::Spec->catfile($dir,"$$.utf8");
+    $ref = File::Spec->catfile($dir,"$subcoding.ref");
+    $rnd = File::Spec->catfile($dir,"$$.rnd");
+    print "# Basic decode test\n";
+    open($src,"<",$euc) || die "Cannot open $euc:$!";
+    binmode($src);
+    ok(defined($src) && fileno($src));
+    $txt = join('',<$src>);
+    open($dst,">:utf8",$utf) || die "Cannot open $utf:$!";
+    binmode($dst);
+    ok(defined($dst) && fileno($dst));
+    eval{ $uni = $enc->decode($txt,1) };
+    $@ and print $@;
+    ok(defined($uni));
+    is(length($txt),0);
+    print $dst $uni;
+    close($dst);
+    close($src);
+    ok(compare($utf,$ref) == 0);
+}
 
 print "# Basic encode test\n";
 open($src,"<:utf8",$ref) || die "Cannot open $ref:$!";
@@ -82,6 +89,7 @@ while (<$src>)
  }
 close($dst);
 close($src);
+
 TODO:
 {
   local $TODO = 'needs debugging on VMS' if $^O eq 'VMS';
@@ -111,6 +119,7 @@ SKIP:
 }
 
 is($enc->name,'euc-jp');
+
 END {
  1 while unlink($utf,$rnd);
 }
index b125a8f..a902d23 100644 (file)
@@ -1,6 +1,6 @@
 BEGIN {
     chdir 't' if -d 't';
-    @INC = '../lib';
+    unshift @INC,  '../lib';
     require Config; import Config;
     if ($Config{'extensions'} !~ /\bEncode\b/) {
       print "1..0 # Skip: Encode was not built\n";
index 4f44191..96dc214 100644 (file)
@@ -1,6 +1,6 @@
 BEGIN {
     chdir 't' if -d 't';
-    @INC = '../lib';
+    unshift @INC, '../lib';
     require Config; import Config;
     if ($Config{'extensions'} !~ /\bEncode\b/) {
       print "1..0 # Skip: Encode was not built\n";
@@ -15,12 +15,11 @@ use Test;
 use Encode qw(encode decode);
 use Encode::Tcl;
 
-my @encodings = qw(euc-cn euc-jp euc-kr big5 shiftjis); # CJK
+my @encodings = qw(euc-cn euc-kr big5 shiftjis); # CJK
 my $n = 2;
 
 my %greek = (
   'euc-cn'   => [0xA6A1..0xA6B8,0xA6C1..0xA6D8],
-  'euc-jp'   => [0xA6A1..0xA6B8,0xA6C1..0xA6D8],
   'euc-kr'   => [0xA5C1..0xA5D8,0xA5E1..0xA5F8],
   'big5'     => [0xA344..0xA35B,0xA35C..0xA373],
   'shiftjis' => [0x839F..0x83B6,0x83BF..0x83D6],
@@ -37,7 +36,6 @@ my @greek = qw(
 
 my %ideodigit = ( # cjk ideograph 'one' to 'ten'
   'euc-cn'   => [qw(d2bb b6fe c8fd cbc4 cee5 c1f9 c6df b0cb bec5 caae)],
-  'euc-jp'   => [qw(b0ec c6f3 bbb0 bbcd b8de cfbb bcb7 c8ac b6e5 bdbd)],
   'euc-kr'   => [qw(ece9 eca3 dfb2 decc e7e9 d7bf f6d2 f8a2 cefa e4a8)],
   'big5'     => [qw(a440 a447 a454 a57c a4ad a4bb a443 a44b a445 a451)],
   'shiftjis' => [qw(88ea 93f1 8e4f 8e6c 8cdc 985a 8eb5 94aa 8be3 8f5c)],
@@ -45,23 +43,9 @@ my %ideodigit = ( # cjk ideograph 'one' to 'ten'
 );
 my @ideodigit = qw(one two three four five six seven eight nine ten);
 
-my $jis = '7bit-jis';
 my $kr  = '2022-kr';
 my %esc_str;
 
-$esc_str{$jis} = {qw(
-  1b24422422242424262428242a1b2842
-  3042304430463048304a
-  1b284931323334355d1b2842
-  ff71ff72ff73ff74ff75ff9d
-  1b2442467c4b5c1b2842
-  65e5672c
-  3132331b244234413b7a1b28425065726c
-  0031003200336f225b57005000650072006c
-  546573740a1b24422546253925481b28420a
-  0054006500730074000a30c630b930c8000a
-)};
-
 $esc_str{$kr} = {qw(
   1b2429430e2a22213e0f410d0a
   304200b10041000d000a
@@ -84,24 +68,15 @@ use constant YES      =>  1;
 my @ary_buff = (  # [ encoding, decoded, encoded ]
 # type-M
   ["euc-cn",      hiragana, "\xA4\xA2\xA4\xA4\xA4\xA6\xA4\xA8\xA4\xAA" ],
-  ["euc-jp",      hiragana, "\xA4\xA2\xA4\xA4\xA4\xA6\xA4\xA8\xA4\xAA" ],
-  ["euc-jp",      han_kana, "\x8E\xB1\x8E\xB2\x8E\xB3\x8E\xB4\x8E\xB5" ],
   ["euc-kr",      hiragana, "\xAA\xA2\xAA\xA4\xAA\xA6\xAA\xA8\xAA\xAA" ],
   ["shiftjis",    hiragana, "\x82\xA0\x82\xA2\x82\xA4\x82\xA6\x82\xA8" ],
   ["shiftjis",    han_kana, "\xB1\xB2\xB3\xB4\xB5" ],
 # type-E
   ["2022-cn",     hiragana, "\e\$)A\cN". '$"$$$&$($*' . "\cO" ],
-  ["2022-jp",     hiragana, "\e\$B".'$"$$$&$($*'."\e(B" ],
   ["2022-kr",     hiragana, "\e\$)C\cN". '*"*$*&*(**' . "\cO" ],
-#  [ $jis,         han_kana, "\e\(I".'12345'."\e(B" ],
   ["2022-jp1", macron, "\e\$(D\x2A\x27\x2A\x37\x2A\x45\x2A\x57\x2A\x69\e(B"],
   ["2022-jp2", "\x{C0}" . macron . "\x{C1}", 
        "\e\$(D\e.A\eN\x40\x2A\x27\x2A\x37\x2A\x45\x2A\x57\x2A\x69\e(B\eN\x41"],
-# type-X
-  ["euc-jp-0212", hiragana, "\xA4\xA2\xA4\xA4\xA4\xA6\xA4\xA8\xA4\xAA" ],
-  ["euc-jp-0212", han_kana, "\x8E\xB1\x8E\xB2\x8E\xB3\x8E\xB4\x8E\xB5" ],
-  ["euc-jp-0212", macron, 
-     "\x8F\xAA\xA7\x8F\xAA\xB7\x8F\xAA\xC5\x8F\xAA\xD7\x8F\xAA\xE9" ],
 );
 
 plan test => $n*@encodings + $n*@encodings*@greek
diff --git a/ext/Encode/t/japanese.pl b/ext/Encode/t/japanese.pl
deleted file mode 100644 (file)
index c0fe3ca..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-use strict;
-#use blib;
-use Encode::Japanese;
-
-# print join("\n", Encode::encodings()),"\n";
diff --git a/ext/Encode/t/jisx0212.euc b/ext/Encode/t/jisx0212.euc
new file mode 100644 (file)
index 0000000..3ca8fd3
--- /dev/null
@@ -0,0 +1,288 @@
+0x8fa0a0:                                                               
+0x8fa0c0:                                                               
+0x8fa0e0:                                                               
+0x8fa1a0:                                                               
+0x8fa1c0:                                                               
+0x8fa1e0:                                                               
+0x8fa2a0:                               ¢¯¢°¢±¢²¢³¢´¢µ¢¶~¢¸¢¹          
+0x8fa2c0:     ¢Â¢Ã¢Ä                                                    
+0x8fa2e0:                       ¢ë¢ì¢í¢î¢ï¢ð¢ñ                          
+0x8fa3a0:                                                               
+0x8fa3c0:                                                               
+0x8fa3e0:                                                               
+0x8fa4a0:                                                               
+0x8fa4c0:                                                               
+0x8fa4e0:                                                               
+0x8fa5a0:                                                               
+0x8fa5c0:                                                               
+0x8fa5e0:                                                               
+0x8fa6a0:                                                               
+0x8fa6c0:                                                               
+0x8fa6e0:   ¦á¦â¦ã¦ä¦å  ¦ç  ¦é¦ê  ¦ì        ¦ñ¦ò¦ó¦ô¦õ¦ö¦÷¦ø¦ù¦ú¦û¦ü    
+0x8fa7a0:                                                               
+0x8fa7c0:     §Â§Ã§Ä§Å§Æ§Ç§È§É§Ê§Ë§Ì§Í§Î                                
+0x8fa7e0:                                     §ò§ó§ô§õ§ö§÷§ø§ù§ú§û§ü§ý§þ
+0x8fa8a0:                                                               
+0x8fa8c0:                                                               
+0x8fa8e0:                                                               
+0x8fa9a0:   ©¡©¢  ©¤  ©¦  ©¨©©  ©«©¬©­  ©¯©°                            
+0x8fa9c0:   ©Á©Â©Ã©Ä©Å©Æ©Ç©È©É©Ê©Ë©Ì©Í©Î©Ï©Ð                            
+0x8fa9e0:                                                               
+0x8faaa0:   ª¡ª¢ª£ª¤ª¥ª¦ª§ª¨ª©ªªª«ª¬ª­ª®ª¯ª°ª±ª²ª³ª´ªµª¶ª·ª¸  ªºª»ª¼ª½ª¾
+0x8faac0: ªÀªÁªÂªÃªÄªÅªÆªÇªÈªÉªÊªËªÌªÍªÎªÏªÐªÑªÒªÓªÔªÕªÖª×ªØªÙªÚªÛªÜªÝªÞ
+0x8faae0: ªàªáªâªãªäªåªæªçªèªéªêªëªìªíªîªïªðªñªòªóªôªõªöª÷              
+0x8faba0:   «¡«¢«£«¤«¥«¦«§«¨«©«ª«««¬«­«®«¯«°«±«²«³«´«µ«¶«·«¸«¹«º«»  «½«¾
+0x8fabc0: «À«Á«Â«Ã  «Å«Æ«Ç«È«É«Ê«Ë«Ì«Í«Î«Ï«Ð«Ñ«Ò«Ó«Ô«Õ«Ö«×«Ø«Ù«Ú«Û«Ü«Ý«Þ
+0x8fabe0: «à«á«â«ã«ä«å«æ«ç«è«é«ê«ë«ì«í«î«ï«ð«ñ«ò«ó«ô«õ«ö«÷              
+0x8faca0:                                                               
+0x8facc0:                                                               
+0x8face0:                                                               
+0x8fada0:                                                               
+0x8fadc0:                                                               
+0x8fade0:                                                               
+0x8faea0:                                                               
+0x8faec0:                                                               
+0x8faee0:                                                               
+0x8fafa0:                                                               
+0x8fafc0:                                                               
+0x8fafe0:                                                               
+0x8fb0a0:   °¡°¢°£°¤°¥°¦°§°¨°©°ª°«°¬°­°®°¯°°°±°²°³°´°µ°¶°·°¸°¹°º°»°¼°½°¾
+0x8fb0c0: °À°Á°Â°Ã°Ä°Å°Æ°Ç°È°É°Ê°Ë°Ì°Í°Î°Ï°Ð°Ñ°Ò°Ó°Ô°Õ°Ö°×°Ø°Ù°Ú°Û°Ü°Ý°Þ
+0x8fb0e0: °à°á°â°ã°ä°å°æ°ç°è°é°ê°ë°ì°í°î°ï°ð°ñ°ò°ó°ô°õ°ö°÷°ø°ù°ú°û°ü°ý°þ
+0x8fb1a0:   ±¡±¢±£±¤±¥±¦±§±¨±©±ª±«±¬±­±®±¯±°±±±²±³±´±µ±¶±·±¸±¹±º±»±¼±½±¾
+0x8fb1c0: ±À±Á±Â±Ã±Ä±Å±Æ±Ç±È±É±Ê±Ë±Ì±Í±Î±Ï±Ð±Ñ±Ò±Ó±Ô±Õ±Ö±×±Ø±Ù±Ú±Û±Ü±Ý±Þ
+0x8fb1e0: ±à±á±â±ã±ä±å±æ±ç±è±é±ê±ë±ì±í±î±ï±ð±ñ±ò±ó±ô±õ±ö±÷±ø±ù±ú±û±ü±ý±þ
+0x8fb2a0:   ²¡²¢²£²¤²¥²¦²§²¨²©²ª²«²¬²­²®²¯²°²±²²²³²´²µ²¶²·²¸²¹²º²»²¼²½²¾
+0x8fb2c0: ²À²Á²Â²Ã²Ä²Å²Æ²Ç²È²É²Ê²Ë²Ì²Í²Î²Ï²Ð²Ñ²Ò²Ó²Ô²Õ²Ö²×²Ø²Ù²Ú²Û²Ü²Ý²Þ
+0x8fb2e0: ²à²á²â²ã²ä²å²æ²ç²è²é²ê²ë²ì²í²î²ï²ð²ñ²ò²ó²ô²õ²ö²÷²ø²ù²ú²û²ü²ý²þ
+0x8fb3a0:   ³¡³¢³£³¤³¥³¦³§³¨³©³ª³«³¬³­³®³¯³°³±³²³³³´³µ³¶³·³¸³¹³º³»³¼³½³¾
+0x8fb3c0: ³À³Á³Â³Ã³Ä³Å³Æ³Ç³È³É³Ê³Ë³Ì³Í³Î³Ï³Ð³Ñ³Ò³Ó³Ô³Õ³Ö³×³Ø³Ù³Ú³Û³Ü³Ý³Þ
+0x8fb3e0: ³à³á³â³ã³ä³å³æ³ç³è³é³ê³ë³ì³í³î³ï³ð³ñ³ò³ó³ô³õ³ö³÷³ø³ù³ú³û³ü³ý³þ
+0x8fb4a0:   ´¡´¢´£´¤´¥´¦´§´¨´©´ª´«´¬´­´®´¯´°´±´²´³´´´µ´¶´·´¸´¹´º´»´¼´½´¾
+0x8fb4c0: ´À´Á´Â´Ã´Ä´Å´Æ´Ç´È´É´Ê´Ë´Ì´Í´Î´Ï´Ð´Ñ´Ò´Ó´Ô´Õ´Ö´×´Ø´Ù´Ú´Û´Ü´Ý´Þ
+0x8fb4e0: ´à´á´â´ã´ä´å´æ´ç´è´é´ê´ë´ì´í´î´ï´ð´ñ´ò´ó´ô´õ´ö´÷´ø´ù´ú´û´ü´ý´þ
+0x8fb5a0:   µ¡µ¢µ£µ¤µ¥µ¦µ§µ¨µ©µªµ«µ¬µ­µ®µ¯µ°µ±µ²µ³µ´µµµ¶µ·µ¸µ¹µºµ»µ¼µ½µ¾
+0x8fb5c0: µÀµÁµÂµÃµÄµÅµÆµÇµÈµÉµÊµËµÌµÍµÎµÏµÐµÑµÒµÓµÔµÕµÖµ×µØµÙµÚµÛµÜµÝµÞ
+0x8fb5e0: µàµáµâµãµäµåµæµçµèµéµêµëµìµíµîµïµðµñµòµóµôµõµöµ÷µøµùµúµûµüµýµþ
+0x8fb6a0:   ¶¡¶¢¶£¶¤¶¥¶¦¶§¶¨¶©¶ª¶«¶¬¶­¶®¶¯¶°¶±¶²¶³¶´¶µ¶¶¶·¶¸¶¹¶º¶»¶¼¶½¶¾
+0x8fb6c0: ¶À¶Á¶Â¶Ã¶Ä¶Å¶Æ¶Ç¶È¶É¶Ê¶Ë¶Ì¶Í¶Î¶Ï¶Ð¶Ñ¶Ò¶Ó¶Ô¶Õ¶Ö¶×¶Ø¶Ù¶Ú¶Û¶Ü¶Ý¶Þ
+0x8fb6e0: ¶à¶á¶â¶ã¶ä¶å¶æ¶ç¶è¶é¶ê¶ë¶ì¶í¶î¶ï¶ð¶ñ¶ò¶ó¶ô¶õ¶ö¶÷¶ø¶ù¶ú¶û¶ü¶ý¶þ
+0x8fb7a0:   ·¡·¢·£·¤·¥·¦·§·¨·©·ª·«·¬·­·®·¯·°·±·²·³·´·µ·¶···¸·¹·º·»·¼·½·¾
+0x8fb7c0: ·À·Á·Â·Ã·Ä·Å·Æ·Ç·È·É·Ê·Ë·Ì·Í·Î·Ï·Ð·Ñ·Ò·Ó·Ô·Õ·Ö·×·Ø·Ù·Ú·Û·Ü·Ý·Þ
+0x8fb7e0: ·à·á·â·ã·ä·å·æ·ç·è·é·ê·ë·ì·í·î·ï·ð·ñ·ò·ó·ô·õ·ö·÷·ø·ù·ú·û·ü·ý·þ
+0x8fb8a0:   ¸¡¸¢¸£¸¤¸¥¸¦¸§¸¨¸©¸ª¸«¸¬¸­¸®¸¯¸°¸±¸²¸³¸´¸µ¸¶¸·¸¸¸¹¸º¸»¸¼¸½¸¾
+0x8fb8c0: ¸À¸Á¸Â¸Ã¸Ä¸Å¸Æ¸Ç¸È¸É¸Ê¸Ë¸Ì¸Í¸Î¸Ï¸Ð¸Ñ¸Ò¸Ó¸Ô¸Õ¸Ö¸×¸Ø¸Ù¸Ú¸Û¸Ü¸Ý¸Þ
+0x8fb8e0: ¸à¸á¸â¸ã¸ä¸å¸æ¸ç¸è¸é¸ê¸ë¸ì¸í¸î¸ï¸ð¸ñ¸ò¸ó¸ô¸õ¸ö¸÷¸ø¸ù¸ú¸û¸ü¸ý¸þ
+0x8fb9a0:   ¹¡¹¢¹£¹¤¹¥¹¦¹§¹¨¹©¹ª¹«¹¬¹­¹®¹¯¹°¹±¹²¹³¹´¹µ¹¶¹·¹¸¹¹¹º¹»¹¼¹½¹¾
+0x8fb9c0: ¹À¹Á¹Â¹Ã¹Ä¹Å¹Æ¹Ç¹È¹É¹Ê¹Ë¹Ì¹Í¹Î¹Ï¹Ð¹Ñ¹Ò¹Ó¹Ô¹Õ¹Ö¹×¹Ø¹Ù¹Ú¹Û¹Ü¹Ý¹Þ
+0x8fb9e0: ¹à¹á¹â¹ã¹ä¹å¹æ¹ç¹è¹é¹ê¹ë¹ì¹í¹î¹ï¹ð¹ñ¹ò¹ó¹ô¹õ¹ö¹÷¹ø¹ù¹ú¹û¹ü¹ý¹þ
+0x8fbaa0:   º¡º¢º£º¤º¥º¦º§º¨º©ºªº«º¬º­º®º¯º°º±º²º³º´ºµº¶º·º¸º¹ººº»º¼º½º¾
+0x8fbac0: ºÀºÁºÂºÃºÄºÅºÆºÇºÈºÉºÊºËºÌºÍºÎºÏºÐºÑºÒºÓºÔºÕºÖº×ºØºÙºÚºÛºÜºÝºÞ
+0x8fbae0: ºàºáºâºãºäºåºæºçºèºéºêºëºìºíºîºïºðºñºòºóºôºõºöº÷ºøºùºúºûºüºýºþ
+0x8fbba0:   »¡»¢»£»¤»¥»¦»§»¨»©»ª»«»¬»­»®»¯»°»±»²»³»´»µ»¶»·»¸»¹»º»»»¼»½»¾
+0x8fbbc0: »À»Á»Â»Ã»Ä»Å»Æ»Ç»È»É»Ê»Ë»Ì»Í»Î»Ï»Ð»Ñ»Ò»Ó»Ô»Õ»Ö»×»Ø»Ù»Ú»Û»Ü»Ý»Þ
+0x8fbbe0: »à»á»â»ã»ä»å»æ»ç»è»é»ê»ë»ì»í»î»ï»ð»ñ»ò»ó»ô»õ»ö»÷»ø»ù»ú»û»ü»ý»þ
+0x8fbca0:   ¼¡¼¢¼£¼¤¼¥¼¦¼§¼¨¼©¼ª¼«¼¬¼­¼®¼¯¼°¼±¼²¼³¼´¼µ¼¶¼·¼¸¼¹¼º¼»¼¼¼½¼¾
+0x8fbcc0: ¼À¼Á¼Â¼Ã¼Ä¼Å¼Æ¼Ç¼È¼É¼Ê¼Ë¼Ì¼Í¼Î¼Ï¼Ð¼Ñ¼Ò¼Ó¼Ô¼Õ¼Ö¼×¼Ø¼Ù¼Ú¼Û¼Ü¼Ý¼Þ
+0x8fbce0: ¼à¼á¼â¼ã¼ä¼å¼æ¼ç¼è¼é¼ê¼ë¼ì¼í¼î¼ï¼ð¼ñ¼ò¼ó¼ô¼õ¼ö¼÷¼ø¼ù¼ú¼û¼ü¼ý¼þ
+0x8fbda0:   ½¡½¢½£½¤½¥½¦½§½¨½©½ª½«½¬½­½®½¯½°½±½²½³½´½µ½¶½·½¸½¹½º½»½¼½½½¾
+0x8fbdc0: ½À½Á½Â½Ã½Ä½Å½Æ½Ç½È½É½Ê½Ë½Ì½Í½Î½Ï½Ð½Ñ½Ò½Ó½Ô½Õ½Ö½×½Ø½Ù½Ú½Û½Ü½Ý½Þ
+0x8fbde0: ½à½á½â½ã½ä½å½æ½ç½è½é½ê½ë½ì½í½î½ï½ð½ñ½ò½ó½ô½õ½ö½÷½ø½ù½ú½û½ü½ý½þ
+0x8fbea0:   ¾¡¾¢¾£¾¤¾¥¾¦¾§¾¨¾©¾ª¾«¾¬¾­¾®¾¯¾°¾±¾²¾³¾´¾µ¾¶¾·¾¸¾¹¾º¾»¾¼¾½¾¾
+0x8fbec0: ¾À¾Á¾Â¾Ã¾Ä¾Å¾Æ¾Ç¾È¾É¾Ê¾Ë¾Ì¾Í¾Î¾Ï¾Ð¾Ñ¾Ò¾Ó¾Ô¾Õ¾Ö¾×¾Ø¾Ù¾Ú¾Û¾Ü¾Ý¾Þ
+0x8fbee0: ¾à¾á¾â¾ã¾ä¾å¾æ¾ç¾è¾é¾ê¾ë¾ì¾í¾î¾ï¾ð¾ñ¾ò¾ó¾ô¾õ¾ö¾÷¾ø¾ù¾ú¾û¾ü¾ý¾þ
+0x8fbfa0:   ¿¡¿¢¿£¿¤¿¥¿¦¿§¿¨¿©¿ª¿«¿¬¿­¿®¿¯¿°¿±¿²¿³¿´¿µ¿¶¿·¿¸¿¹¿º¿»¿¼¿½¿¾
+0x8fbfc0: ¿À¿Á¿Â¿Ã¿Ä¿Å¿Æ¿Ç¿È¿É¿Ê¿Ë¿Ì¿Í¿Î¿Ï¿Ð¿Ñ¿Ò¿Ó¿Ô¿Õ¿Ö¿×¿Ø¿Ù¿Ú¿Û¿Ü¿Ý¿Þ
+0x8fbfe0: ¿à¿á¿â¿ã¿ä¿å¿æ¿ç¿è¿é¿ê¿ë¿ì¿í¿î¿ï¿ð¿ñ¿ò¿ó¿ô¿õ¿ö¿÷¿ø¿ù¿ú¿û¿ü¿ý¿þ
+0x8fc0a0:   À¡À¢À£À¤À¥À¦À§À¨À©ÀªÀ«À¬À­À®À¯À°À±À²À³À´ÀµÀ¶À·À¸À¹ÀºÀ»À¼À½À¾
+0x8fc0c0: ÀÀÀÁÀÀÏÀďÀŏÀƏÀǏÀȏÀɏÀʏÀˏÀ̏À͏ÀΏÀϏÀЏÀяÀҏÀӏÀԏÀՏÀ֏À׏À؏ÀُÀڏÀۏÀ܏ÀݏÀÞ
+0x8fc0e0: ÀàÀáÀâÀãÀäÀåÀæÀçÀèÀéÀêÀëÀìÀíÀîÀïÀðÀñÀòÀóÀôÀõÀöÀ÷ÀøÀùÀúÀûÀüÀýÀþ
+0x8fc1a0:   Á¡Á¢Á£Á¤Á¥Á¦Á§Á¨Á©ÁªÁ«Á¬Á­Á®Á¯Á°Á±Á²Á³Á´ÁµÁ¶Á·Á¸Á¹ÁºÁ»Á¼Á½Á¾
+0x8fc1c0: ÁÀÁÁÁÁÏÁďÁŏÁƏÁǏÁȏÁɏÁʏÁˏÁ̏Á͏ÁΏÁϏÁЏÁяÁҏÁӏÁԏÁՏÁ֏Á׏Á؏ÁُÁڏÁۏÁ܏ÁݏÁÞ
+0x8fc1e0: ÁàÁáÁâÁãÁäÁåÁæÁçÁèÁéÁêÁëÁìÁíÁîÁïÁðÁñÁòÁóÁôÁõÁöÁ÷ÁøÁùÁúÁûÁüÁýÁþ
+0x8fc2a0:   Â¡Â¢Â£Â¤Â¥Â¦Â§Â¨Â©ÂªÂ«Â¬Â­Â®Â¯Â°Â±Â²Â³Â´ÂµÂ¶Â·Â¸Â¹ÂºÂ»Â¼Â½Â¾
+0x8fc2c0: ÂÀÂÁÂÂÏÂďÂŏÂƏÂǏÂȏÂɏÂʏÂˏÂ̏Â͏ÂΏÂϏÂЏÂяÂҏÂӏÂԏÂՏÂ֏Â׏Â؏ÂُÂڏÂۏÂ܏ÂݏÂÞ
+0x8fc2e0: ÂàÂáÂâÂãÂäÂåÂæÂçÂèÂéÂêÂëÂìÂíÂîÂïÂðÂñÂòÂóÂôÂõÂöÂ÷ÂøÂùÂúÂûÂüÂýÂþ
+0x8fc3a0:   Ã¡Ã¢Ã£Ã¤Ã¥Ã¦Ã§Ã¨Ã©ÃªÃ«Ã¬Ã­Ã®Ã¯Ã°Ã±Ã²Ã³Ã´ÃµÃ¶Ã·Ã¸Ã¹ÃºÃ»Ã¼Ã½Ã¾
+0x8fc3c0: ÃÀÃÁÃÃÏÃďÃŏÃƏÃǏÃȏÃɏÃʏÃˏÃ̏Ã͏ÃΏÃϏÃЏÃяÃҏÃӏÃԏÃՏÃ֏Ã׏Ã؏ÃُÃڏÃۏÃ܏ÃݏÃÞ
+0x8fc3e0: ÃàÃáÃâÃãÃäÃåÃæÃçÃèÃéÃêÃëÃìÃíÃîÃïÃðÃñÃòÃóÃôÃõÃöÃ÷ÃøÃùÃúÃûÃüÃýÃþ
+0x8fc4a0:   Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬Ä­Ä®Ä¯Ä°Ä±Ä²Ä³Ä´ÄµÄ¶Ä·Ä¸Ä¹ÄºÄ»Ä¼Ä½Ä¾
+0x8fc4c0: ÄÀÄÁÄÄÏÄďÄŏÄƏÄǏÄȏÄɏÄʏÄˏÄ̏Ä͏ÄΏÄϏÄЏÄяÄҏÄӏÄԏÄՏÄ֏Ä׏Ä؏ÄُÄڏÄۏÄ܏ÄݏÄÞ
+0x8fc4e0: ÄàÄáÄâÄãÄäÄåÄæÄçÄèÄéÄêÄëÄìÄíÄîÄïÄðÄñÄòÄóÄôÄõÄöÄ÷ÄøÄùÄúÄûÄüÄýÄþ
+0x8fc5a0:   Å¡Å¢Å£Å¤Å¥Å¦Å§Å¨Å©ÅªÅ«Å¬Å­Å®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾
+0x8fc5c0: ÅÀÅÁÅÅÏÅďÅŏÅƏÅǏÅȏÅɏÅʏÅˏÅ̏Å͏ÅΏÅϏÅЏÅяÅҏÅӏÅԏÅՏÅ֏Å׏Å؏ÅُÅڏÅۏÅ܏ÅݏÅÞ
+0x8fc5e0: ÅàÅáÅâÅãÅäÅåÅæÅçÅèÅéÅêÅëÅìÅíÅîÅïÅðÅñÅòÅóÅôÅõÅöÅ÷ÅøÅùÅúÅûÅüÅýÅþ
+0x8fc6a0:   Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬Æ­Æ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ»Æ¼Æ½Æ¾
+0x8fc6c0: ÆÀÆÁÆÆÏÆďÆŏÆƏÆǏÆȏÆɏÆʏÆˏÆ̏Æ͏ÆΏÆϏÆЏÆяÆҏÆӏÆԏÆՏÆ֏Æ׏Æ؏ÆُÆڏÆۏÆ܏ÆݏÆÞ
+0x8fc6e0: ÆàÆáÆâÆãÆäÆåÆæÆçÆèÆéÆêÆëÆìÆíÆîÆïÆðÆñÆòÆóÆôÆõÆöÆ÷ÆøÆùÆúÆûÆüÆýÆþ
+0x8fc7a0:   Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬Ç­Ç®Ç¯Ç°Ç±Ç²Ç³Ç´ÇµÇ¶Ç·Ç¸Ç¹ÇºÇ»Ç¼Ç½Ç¾
+0x8fc7c0: ÇÀÇÁÇÇÏÇďÇŏÇƏÇǏÇȏÇɏÇʏÇˏÇ̏Ç͏ÇΏÇϏÇЏÇяÇҏÇӏÇԏÇՏÇ֏Ç׏Ç؏ÇُÇڏÇۏÇ܏ÇݏÇÞ
+0x8fc7e0: ÇàÇáÇâÇãÇäÇåÇæÇçÇèÇéÇêÇëÇìÇíÇîÇïÇðÇñÇòÇóÇôÇõÇöÇ÷ÇøÇùÇúÇûÇüÇýÇþ
+0x8fc8a0:   È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬È­È®È¯È°È±È²È³È´ÈµÈ¶È·È¸È¹ÈºÈ»È¼È½È¾
+0x8fc8c0: ÈÀÈÁÈÈÏÈďÈŏÈƏÈǏÈȏÈɏÈʏÈˏÈ̏È͏ÈΏÈϏÈЏÈяÈҏÈӏÈԏÈՏÈ֏È׏È؏ÈُÈڏÈۏÈ܏ÈݏÈÞ
+0x8fc8e0: ÈàÈáÈâÈãÈäÈåÈæÈçÈèÈéÈêÈëÈìÈíÈîÈïÈðÈñÈòÈóÈôÈõÈöÈ÷ÈøÈùÈúÈûÈüÈýÈþ
+0x8fc9a0:   É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬É­É®É¯É°É±É²É³É´ÉµÉ¶É·É¸É¹ÉºÉ»É¼É½É¾
+0x8fc9c0: ÉÀÉÁÉÉÏÉďÉŏÉƏÉǏÉȏÉɏÉʏÉˏÉ̏É͏ÉΏÉϏÉЏÉяÉҏÉӏÉԏÉՏÉ֏É׏É؏ÉُÉڏÉۏÉ܏ÉݏÉÞ
+0x8fc9e0: ÉàÉáÉâÉãÉäÉåÉæÉçÉèÉéÉêÉëÉìÉíÉîÉïÉðÉñÉòÉóÉôÉõÉöÉ÷ÉøÉùÉúÉûÉüÉýÉþ
+0x8fcaa0:   Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬Ê­Ê®Ê¯Ê°Ê±Ê²Ê³Ê´ÊµÊ¶Ê·Ê¸Ê¹ÊºÊ»Ê¼Ê½Ê¾
+0x8fcac0: ÊÀÊÁÊÊÏÊďÊŏÊƏÊǏÊȏÊɏÊʏÊˏÊ̏Ê͏ÊΏÊϏÊЏÊяÊҏÊӏÊԏÊՏÊ֏Ê׏Ê؏ÊُÊڏÊۏÊ܏ÊݏÊÞ
+0x8fcae0: ÊàÊáÊâÊãÊäÊåÊæÊçÊèÊéÊêÊëÊìÊíÊîÊïÊðÊñÊòÊóÊôÊõÊöÊ÷ÊøÊùÊúÊûÊüÊýÊþ
+0x8fcba0:   Ë¡Ë¢Ë£Ë¤Ë¥Ë¦Ë§Ë¨Ë©ËªË«Ë¬Ë­Ë®Ë¯Ë°Ë±Ë²Ë³Ë´ËµË¶Ë·Ë¸Ë¹ËºË»Ë¼Ë½Ë¾
+0x8fcbc0: ËÀËÁËËÏËďËŏËƏËǏËȏËɏËʏËˏË̏Ë͏ËΏËϏËЏËяËҏËӏËԏËՏË֏Ë׏Ë؏ËُËڏËۏË܏ËݏËÞ
+0x8fcbe0: ËàËáËâËãËäËåËæËçËèËéËêËëËìËíËîËïËðËñËòËóËôËõËöË÷ËøËùËúËûËüËýËþ
+0x8fcca0:   Ì¡Ì¢Ì£Ì¤Ì¥Ì¦Ì§Ì¨Ì©ÌªÌ«Ì¬Ì­Ì®Ì¯Ì°Ì±Ì²Ì³Ì´ÌµÌ¶Ì·Ì¸Ì¹ÌºÌ»Ì¼Ì½Ì¾
+0x8fccc0: ÌÀÌÁÌÌÏÌďÌŏÌƏÌǏÌȏÌɏÌʏÌˏÌ̏Ì͏ÌΏÌϏÌЏÌяÌҏÌӏÌԏÌՏÌ֏Ì׏Ì؏ÌُÌڏÌۏÌ܏ÌݏÌÞ
+0x8fcce0: ÌàÌáÌâÌãÌäÌåÌæÌçÌèÌéÌêÌëÌìÌíÌîÌïÌðÌñÌòÌóÌôÌõÌöÌ÷ÌøÌùÌúÌûÌüÌýÌþ
+0x8fcda0:   Í¡Í¢Í£Í¤Í¥Í¦Í§Í¨Í©ÍªÍ«Í¬Í­Í®Í¯Í°Í±Í²Í³Í´ÍµÍ¶Í·Í¸Í¹ÍºÍ»Í¼Í½Í¾
+0x8fcdc0: ÍÀÍÁÍÍÏÍďÍŏÍƏÍǏÍȏÍɏÍʏÍˏÍ̏Í͏ÍΏÍϏÍЏÍяÍҏÍӏÍԏÍՏÍ֏Í׏Í؏ÍُÍڏÍۏÍ܏ÍݏÍÞ
+0x8fcde0: ÍàÍáÍâÍãÍäÍåÍæÍçÍèÍéÍêÍëÍìÍíÍîÍïÍðÍñÍòÍóÍôÍõÍöÍ÷ÍøÍùÍúÍûÍüÍýÍþ
+0x8fcea0:   Î¡Î¢Î£Î¤Î¥Î¦Î§Î¨Î©ÎªÎ«Î¬Î­Î®Î¯Î°Î±Î²Î³Î´ÎµÎ¶Î·Î¸Î¹ÎºÎ»Î¼Î½Î¾
+0x8fcec0: ÎÀÎÁÎÎÏÎďÎŏÎƏÎǏÎȏÎɏÎʏÎˏÎ̏Î͏ÎΏÎϏÎЏÎяÎҏÎӏÎԏÎՏÎ֏Î׏Î؏ÎُÎڏÎۏÎ܏ÎݏÎÞ
+0x8fcee0: ÎàÎáÎâÎãÎäÎåÎæÎçÎèÎéÎêÎëÎìÎíÎîÎïÎðÎñÎòÎóÎôÎõÎöÎ÷ÎøÎùÎúÎûÎüÎýÎþ
+0x8fcfa0:   Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬Ï­Ï®Ï¯Ï°Ï±Ï²Ï³Ï´ÏµÏ¶Ï·Ï¸Ï¹ÏºÏ»Ï¼Ï½Ï¾
+0x8fcfc0: ÏÀÏÁÏÏÏÏďÏŏÏƏÏǏÏȏÏɏÏʏÏˏÏ̏Ï͏ÏΏÏϏÏЏÏяÏҏÏӏÏԏÏՏÏ֏Ï׏Ï؏ÏُÏڏÏۏÏ܏ÏݏÏÞ
+0x8fcfe0: ÏàÏáÏâÏãÏäÏåÏæÏçÏèÏéÏêÏëÏìÏíÏîÏïÏðÏñÏòÏóÏôÏõÏöÏ÷ÏøÏùÏúÏûÏüÏýÏþ
+0x8fd0a0:   Ð¡Ð¢Ð£Ð¤Ð¥Ð¦Ð§Ð¨Ð©ÐªÐ«Ð¬Ð­Ð®Ð¯Ð°Ð±Ð²Ð³Ð´ÐµÐ¶Ð·Ð¸Ð¹ÐºÐ»Ð¼Ð½Ð¾
+0x8fd0c0: ÐÀÐÁÐÐÏÐďÐŏÐƏÐǏÐȏÐɏÐʏÐˏÐ̏Ð͏ÐΏÐϏÐЏÐяÐҏÐӏÐԏÐՏÐ֏Ð׏Ð؏ÐُÐڏÐۏÐ܏ÐݏÐÞ
+0x8fd0e0: ÐàÐáÐâÐãÐäÐåÐæÐçÐèÐéÐêÐëÐìÐíÐîÐïÐðÐñÐòÐóÐôÐõÐöÐ÷ÐøÐùÐúÐûÐüÐýÐþ
+0x8fd1a0:   Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬Ñ­Ñ®Ñ¯Ñ°Ñ±Ñ²Ñ³Ñ´ÑµÑ¶Ñ·Ñ¸Ñ¹ÑºÑ»Ñ¼Ñ½Ñ¾
+0x8fd1c0: ÑÀÑÁÑÑÏÑďÑŏÑƏÑǏÑȏÑɏÑʏÑˏÑ̏Ñ͏ÑΏÑϏÑЏÑяÑҏÑӏÑԏÑՏÑ֏Ñ׏Ñ؏ÑُÑڏÑۏÑ܏ÑݏÑÞ
+0x8fd1e0: ÑàÑáÑâÑãÑäÑåÑæÑçÑèÑéÑêÑëÑìÑíÑîÑïÑðÑñÑòÑóÑôÑõÑöÑ÷ÑøÑùÑúÑûÑüÑýÑþ
+0x8fd2a0:   Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬Ò­Ò®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾
+0x8fd2c0: ÒÀÒÁÒÒÏÒďÒŏÒƏÒǏÒȏÒɏÒʏÒˏÒ̏Ò͏ÒΏÒϏÒЏÒяÒҏÒӏÒԏÒՏÒ֏Ò׏Ò؏ÒُÒڏÒۏÒ܏ÒݏÒÞ
+0x8fd2e0: ÒàÒáÒâÒãÒäÒåÒæÒçÒèÒéÒêÒëÒìÒíÒîÒïÒðÒñÒòÒóÒôÒõÒöÒ÷ÒøÒùÒúÒûÒüÒýÒþ
+0x8fd3a0:   Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬Ó­Ó®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹ÓºÓ»Ó¼Ó½Ó¾
+0x8fd3c0: ÓÀÓÁÓÓÏÓďÓŏÓƏÓǏÓȏÓɏÓʏÓˏÓ̏Ó͏ÓΏÓϏÓЏÓяÓҏÓӏÓԏÓՏÓ֏Ó׏Ó؏ÓُÓڏÓۏÓ܏ÓݏÓÞ
+0x8fd3e0: ÓàÓáÓâÓãÓäÓåÓæÓçÓèÓéÓêÓëÓìÓíÓîÓïÓðÓñÓòÓóÓôÓõÓöÓ÷ÓøÓùÓúÓûÓüÓýÓþ
+0x8fd4a0:   Ô¡Ô¢Ô£Ô¤Ô¥Ô¦Ô§Ô¨Ô©ÔªÔ«Ô¬Ô­Ô®Ô¯Ô°Ô±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾
+0x8fd4c0: ÔÀÔÁÔÔÏÔďÔŏÔƏÔǏÔȏÔɏÔʏÔˏÔ̏Ô͏ÔΏÔϏÔЏÔяÔҏÔӏÔԏÔՏÔ֏Ô׏Ô؏ÔُÔڏÔۏÔ܏ÔݏÔÞ
+0x8fd4e0: ÔàÔáÔâÔãÔäÔåÔæÔçÔèÔéÔêÔëÔìÔíÔîÔïÔðÔñÔòÔóÔôÔõÔöÔ÷ÔøÔùÔúÔûÔüÔýÔþ
+0x8fd5a0:   Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬Õ­Õ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾
+0x8fd5c0: ÕÀÕÁÕÕÏÕďÕŏÕƏÕǏÕȏÕɏÕʏÕˏÕ̏Õ͏ÕΏÕϏÕЏÕяÕҏÕӏÕԏÕՏÕ֏Õ׏Õ؏ÕُÕڏÕۏÕ܏ÕݏÕÞ
+0x8fd5e0: ÕàÕáÕâÕãÕäÕåÕæÕçÕèÕéÕêÕëÕìÕíÕîÕïÕðÕñÕòÕóÕôÕõÕöÕ÷ÕøÕùÕúÕûÕüÕýÕþ
+0x8fd6a0:   Ö¡Ö¢Ö£Ö¤Ö¥Ö¦Ö§Ö¨Ö©ÖªÖ«Ö¬Ö­Ö®Ö¯Ö°Ö±Ö²Ö³Ö´ÖµÖ¶Ö·Ö¸Ö¹ÖºÖ»Ö¼Ö½Ö¾
+0x8fd6c0: ÖÀÖÁÖÖÏÖďÖŏÖƏÖǏÖȏÖɏÖʏÖˏÖ̏Ö͏ÖΏÖϏÖЏÖяÖҏÖӏÖԏÖՏÖ֏Ö׏Ö؏ÖُÖڏÖۏÖ܏ÖݏÖÞ
+0x8fd6e0: ÖàÖáÖâÖãÖäÖåÖæÖçÖèÖéÖêÖëÖìÖíÖîÖïÖðÖñÖòÖóÖôÖõÖöÖ÷ÖøÖùÖúÖûÖüÖýÖþ
+0x8fd7a0:   ×¡×¢×£×¤×¥×¦×§×¨×©×ª×«×¬×­×®×¯×°×±×²×³×´×µ×¶×·×¸×¹×º×»×¼×½×¾
+0x8fd7c0: ×À×Á××Ï×ď×ŏ×Ə×Ǐ×ȏ×ɏ×ʏ×ˏ×̏×͏×Ώ×Ϗ×Џ×я×ҏ×ӏ×ԏ×Տ×֏×׏×؏×ُ×ڏ×ۏ×܏×ݏ×Þ
+0x8fd7e0: ×à×á×â×ã×ä×å×æ×ç×è×é×ê×ë×ì×í×î×ï×ð×ñ×ò×ó×ô×õ×ö×÷×ø×ù×ú×û×ü×ý×þ
+0x8fd8a0:   Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬Ø­Ø®Ø¯Ø°Ø±Ø²Ø³Ø´ØµØ¶Ø·Ø¸Ø¹ØºØ»Ø¼Ø½Ø¾
+0x8fd8c0: ØÀØÁØØÏØďØŏØƏØǏØȏØɏØʏØˏØ̏Ø͏ØΏØϏØЏØяØҏØӏØԏØՏØ֏Ø׏Ø؏ØُØڏØۏØ܏ØݏØÞ
+0x8fd8e0: ØàØáØâØãØäØåØæØçØèØéØêØëØìØíØîØïØðØñØòØóØôØõØöØ÷ØøØùØúØûØüØýØþ
+0x8fd9a0:   Ù¡Ù¢Ù£Ù¤Ù¥Ù¦Ù§Ù¨Ù©ÙªÙ«Ù¬Ù­Ù®Ù¯Ù°Ù±Ù²Ù³Ù´ÙµÙ¶Ù·Ù¸Ù¹ÙºÙ»Ù¼Ù½Ù¾
+0x8fd9c0: ÙÀÙÁÙÙÏÙďÙŏÙƏÙǏÙȏÙɏÙʏÙˏÙ̏Ù͏ÙΏÙϏÙЏÙяÙҏÙӏÙԏÙՏÙ֏Ù׏Ù؏ÙُÙڏÙۏÙ܏ÙݏÙÞ
+0x8fd9e0: ÙàÙáÙâÙãÙäÙåÙæÙçÙèÙéÙêÙëÙìÙíÙîÙïÙðÙñÙòÙóÙôÙõÙöÙ÷ÙøÙùÙúÙûÙüÙýÙþ
+0x8fdaa0:   Ú¡Ú¢Ú£Ú¤Ú¥Ú¦Ú§Ú¨Ú©ÚªÚ«Ú¬Ú­Ú®Ú¯Ú°Ú±Ú²Ú³Ú´ÚµÚ¶Ú·Ú¸Ú¹ÚºÚ»Ú¼Ú½Ú¾
+0x8fdac0: ÚÀÚÁÚÚÏÚďÚŏÚƏÚǏÚȏÚɏÚʏÚˏÚ̏Ú͏ÚΏÚϏÚЏÚяÚҏÚӏÚԏÚՏÚ֏Ú׏Ú؏ÚُÚڏÚۏÚ܏ÚݏÚÞ
+0x8fdae0: ÚàÚáÚâÚãÚäÚåÚæÚçÚèÚéÚêÚëÚìÚíÚîÚïÚðÚñÚòÚóÚôÚõÚöÚ÷ÚøÚùÚúÚûÚüÚýÚþ
+0x8fdba0:   Û¡Û¢Û£Û¤Û¥Û¦Û§Û¨Û©ÛªÛ«Û¬Û­Û®Û¯Û°Û±Û²Û³Û´ÛµÛ¶Û·Û¸Û¹ÛºÛ»Û¼Û½Û¾
+0x8fdbc0: ÛÀÛÁÛÛÏÛďÛŏÛƏÛǏÛȏÛɏÛʏÛˏÛ̏Û͏ÛΏÛϏÛЏÛяÛҏÛӏÛԏÛՏÛ֏Û׏Û؏ÛُÛڏÛۏÛ܏ÛݏÛÞ
+0x8fdbe0: ÛàÛáÛâÛãÛäÛåÛæÛçÛèÛéÛêÛëÛìÛíÛîÛïÛðÛñÛòÛóÛôÛõÛöÛ÷ÛøÛùÛúÛûÛüÛýÛþ
+0x8fdca0:   Ü¡Ü¢Ü£Ü¤Ü¥Ü¦Ü§Ü¨Ü©ÜªÜ«Ü¬Ü­Ü®Ü¯Ü°Ü±Ü²Ü³Ü´ÜµÜ¶Ü·Ü¸Ü¹ÜºÜ»Ü¼Ü½Ü¾
+0x8fdcc0: ÜÀÜÁÜÜÏÜďÜŏÜƏÜǏÜȏÜɏÜʏÜˏÜ̏Ü͏ÜΏÜϏÜЏÜяÜҏÜӏÜԏÜՏÜ֏Ü׏Ü؏ÜُÜڏÜۏÜ܏ÜݏÜÞ
+0x8fdce0: ÜàÜáÜâÜãÜäÜåÜæÜçÜèÜéÜêÜëÜìÜíÜîÜïÜðÜñÜòÜóÜôÜõÜöÜ÷ÜøÜùÜúÜûÜüÜýÜþ
+0x8fdda0:   Ý¡Ý¢Ý£Ý¤Ý¥Ý¦Ý§Ý¨Ý©ÝªÝ«Ý¬Ý­Ý®Ý¯Ý°Ý±Ý²Ý³Ý´ÝµÝ¶Ý·Ý¸Ý¹ÝºÝ»Ý¼Ý½Ý¾
+0x8fddc0: ÝÀÝÁÝÝÏÝďÝŏÝƏÝǏÝȏÝɏÝʏÝˏÝ̏Ý͏ÝΏÝϏÝЏÝяÝҏÝӏÝԏÝՏÝ֏Ý׏Ý؏ÝُÝڏÝۏÝ܏ÝݏÝÞ
+0x8fdde0: ÝàÝáÝâÝãÝäÝåÝæÝçÝèÝéÝêÝëÝìÝíÝîÝïÝðÝñÝòÝóÝôÝõÝöÝ÷ÝøÝùÝúÝûÝüÝýÝþ
+0x8fdea0:   Þ¡Þ¢Þ£Þ¤Þ¥Þ¦Þ§Þ¨Þ©ÞªÞ«Þ¬Þ­Þ®Þ¯Þ°Þ±Þ²Þ³Þ´ÞµÞ¶Þ·Þ¸Þ¹ÞºÞ»Þ¼Þ½Þ¾
+0x8fdec0: ÞÀÞÁÞÞÏÞďÞŏÞƏÞǏÞȏÞɏÞʏÞˏÞ̏Þ͏ÞΏÞϏÞЏÞяÞҏÞӏÞԏÞՏÞ֏Þ׏Þ؏ÞُÞڏÞۏÞ܏ÞݏÞÞ
+0x8fdee0: ÞàÞáÞâÞãÞäÞåÞæÞçÞèÞéÞêÞëÞìÞíÞîÞïÞðÞñÞòÞóÞôÞõÞöÞ÷ÞøÞùÞúÞûÞüÞýÞþ
+0x8fdfa0:   ß¡ß¢ß£ß¤ß¥ß¦ß§ß¨ß©ßªß«ß¬ß­ß®ß¯ß°ß±ß²ß³ß´ßµß¶ß·ß¸ß¹ßºß»ß¼ß½ß¾
+0x8fdfc0: ßÀßÁßßÏßďßŏßƏßǏßȏßɏßʏßˏß̏ß͏ßΏßϏßЏßяßҏßӏßԏßՏß֏ß׏ß؏ßُßڏßۏß܏ßݏßÞ
+0x8fdfe0: ßàßáßâßãßäßåßæßçßèßéßêßëßìßíßîßïßðßñßòßóßôßõßöß÷ßøßùßúßûßüßýßþ
+0x8fe0a0:   à¡à¢à£à¤à¥à¦à§à¨à©àªà«à¬à­à®à¯à°à±à²à³à´àµà¶à·à¸à¹àºà»à¼à½à¾
+0x8fe0c0: àÀàÁààÏàďàŏàƏàǏàȏàɏàʏàˏà̏à͏àΏàϏàЏàяàҏàӏàԏàՏà֏à׏à؏àُàڏàۏà܏àݏàÞ
+0x8fe0e0: àààáàâàãàäàåàæàçàèàéàêàëàìàíàîàïàðàñàòàóàôàõàöà÷àøàùàúàûàüàýàþ
+0x8fe1a0:   á¡á¢á£á¤á¥á¦á§á¨á©áªá«á¬á­á®á¯á°á±á²á³á´áµá¶á·á¸á¹áºá»á¼á½á¾
+0x8fe1c0: áÀáÁááÏáďáŏáƏáǏáȏáɏáʏáˏá̏á͏áΏáϏáЏáяáҏáӏáԏáՏá֏á׏á؏áُáڏáۏá܏áݏáÞ
+0x8fe1e0: áàáááâáãáäáåáæáçáèáéáêáëáìáíáîáïáðáñáòáóáôáõáöá÷áøáùáúáûáüáýáþ
+0x8fe2a0:   â¡â¢â£â¤â¥â¦â§â¨â©âªâ«â¬â­â®â¯â°â±â²â³â´âµâ¶â·â¸â¹âºâ»â¼â½â¾
+0x8fe2c0: âÀâÁââÏâďâŏâƏâǏâȏâɏâʏâˏâ̏â͏âΏâϏâЏâяâҏâӏâԏâՏâ֏â׏â؏âُâڏâۏâ܏âݏâÞ
+0x8fe2e0: âàâáâââãâäâåâæâçâèâéâêâëâìâíâîâïâðâñâòâóâôâõâöâ÷âøâùâúâûâüâýâþ
+0x8fe3a0:   ã¡ã¢ã£ã¤ã¥ã¦ã§ã¨ã©ãªã«ã¬ã­ã®ã¯ã°ã±ã²ã³ã´ãµã¶ã·ã¸ã¹ãºã»ã¼ã½ã¾
+0x8fe3c0: ãÀãÁããÏãďãŏãƏãǏãȏãɏãʏãˏã̏ã͏ãΏãϏãЏãяãҏãӏãԏãՏã֏ã׏ã؏ãُãڏãۏã܏ãݏãÞ
+0x8fe3e0: ãàãáãâãããäãåãæãçãèãéãêãëãìãíãîãïãðãñãòãóãôãõãöã÷ãøãùãúãûãüãýãþ
+0x8fe4a0:   ä¡ä¢ä£ä¤ä¥ä¦ä§ä¨ä©äªä«ä¬ä­ä®ä¯ä°ä±ä²ä³ä´äµä¶ä·ä¸ä¹äºä»ä¼ä½ä¾
+0x8fe4c0: äÀäÁääÏäďäŏäƏäǏäȏäɏäʏäˏä̏ä͏äΏäϏäЏäяäҏäӏäԏäՏä֏ä׏ä؏äُäڏäۏä܏äݏäÞ
+0x8fe4e0: äàäáäâäãäääåäæäçäèäéäêäëäìäíäîäïäðäñäòäóäôäõäöä÷äøäùäúäûäüäýäþ
+0x8fe5a0:   å¡å¢å£å¤å¥å¦å§å¨å©åªå«å¬å­å®å¯å°å±å²å³å´åµå¶å·å¸å¹åºå»å¼å½å¾
+0x8fe5c0: åÀåÁååÏåďåŏåƏåǏåȏåɏåʏåˏå̏å͏åΏåϏåЏåяåҏåӏåԏåՏå֏å׏å؏åُåڏåۏå܏åݏåÞ
+0x8fe5e0: åàåáåâåãåäåååæåçåèåéåêåëåìåíåîåïåðåñåòåóåôåõåöå÷åøåùåúåûåüåýåþ
+0x8fe6a0:   æ¡æ¢æ£æ¤æ¥æ¦æ§æ¨æ©æªæ«æ¬æ­æ®æ¯æ°æ±æ²æ³æ´æµæ¶æ·æ¸æ¹æºæ»æ¼æ½æ¾
+0x8fe6c0: æÀæÁææÏæďæŏæƏæǏæȏæɏæʏæˏæ̏æ͏æΏæϏæЏæяæҏæӏæԏæՏæ֏æ׏æ؏æُæڏæۏæ܏æݏæÞ
+0x8fe6e0: æàæáæâæãæäæåæææçæèæéæêæëæìæíæîæïæðæñæòæóæôæõæöæ÷æøæùæúæûæüæýæþ
+0x8fe7a0:   ç¡ç¢ç£ç¤ç¥ç¦ç§ç¨ç©çªç«ç¬ç­ç®ç¯ç°ç±ç²ç³ç´çµç¶ç·ç¸ç¹çºç»ç¼ç½ç¾
+0x8fe7c0: çÀçÁççÏçďçŏçƏçǏçȏçɏçʏçˏç̏ç͏çΏçϏçЏçяçҏçӏçԏçՏç֏ç׏ç؏çُçڏçۏç܏çݏçÞ
+0x8fe7e0: çàçáçâçãçäçåçæçççèçéçêçëçìçíçîçïçðçñçòçóçôçõçöç÷çøçùçúçûçüçýçþ
+0x8fe8a0:   è¡è¢è£è¤è¥è¦è§è¨è©èªè«è¬è­è®è¯è°è±è²è³è´èµè¶è·è¸è¹èºè»è¼è½è¾
+0x8fe8c0: èÀèÁèèÏèďèŏèƏèǏèȏèɏèʏèˏè̏è͏èΏèϏèЏèяèҏèӏèԏèՏè֏è׏è؏èُèڏèۏè܏èݏèÞ
+0x8fe8e0: èàèáèâèãèäèåèæèçèèèéèêèëèìèíèîèïèðèñèòèóèôèõèöè÷èøèùèúèûèüèýèþ
+0x8fe9a0:   é¡é¢é£é¤é¥é¦é§é¨é©éªé«é¬é­é®é¯é°é±é²é³é´éµé¶é·é¸é¹éºé»é¼é½é¾
+0x8fe9c0: éÀéÁééÏéďéŏéƏéǏéȏéɏéʏéˏé̏é͏éΏéϏéЏéяéҏéӏéԏéՏé֏é׏é؏éُéڏéۏé܏éݏéÞ
+0x8fe9e0: éàéáéâéãéäéåéæéçéèéééêéëéìéíéîéïéðéñéòéóéôéõéöé÷éøéùéúéûéüéýéþ
+0x8feaa0:   ê¡ê¢ê£ê¤ê¥ê¦ê§ê¨ê©êªê«ê¬ê­ê®ê¯ê°ê±ê²ê³ê´êµê¶ê·ê¸ê¹êºê»ê¼ê½ê¾
+0x8feac0: êÀêÁêêÏêďêŏêƏêǏêȏêɏêʏêˏê̏ê͏êΏêϏêЏêяêҏêӏêԏêՏê֏ê׏ê؏êُêڏêۏê܏êݏêÞ
+0x8feae0: êàêáêâêãêäêåêæêçêèêéêêêëêìêíêîêïêðêñêòêóêôêõêöê÷êøêùêúêûêüêýêþ
+0x8feba0:   ë¡ë¢ë£ë¤ë¥ë¦ë§ë¨ë©ëªë«ë¬ë­ë®ë¯ë°ë±ë²ë³ë´ëµë¶ë·ë¸ë¹ëºë»ë¼ë½ë¾
+0x8febc0: ëÀëÁëëÏëďëŏëƏëǏëȏëɏëʏëˏë̏ë͏ëΏëϏëЏëяëҏëӏëԏëՏë֏ë׏ë؏ëُëڏëۏë܏ëݏëÞ
+0x8febe0: ëàëáëâëãëäëåëæëçëèëéëêëëëìëíëîëïëðëñëòëóëôëõëöë÷ëøëùëúëûëüëýëþ
+0x8feca0:   ì¡ì¢ì£ì¤ì¥ì¦ì§ì¨ì©ìªì«ì¬ì­ì®ì¯ì°ì±ì²ì³ì´ìµì¶ì·ì¸ì¹ìºì»ì¼ì½ì¾
+0x8fecc0: ìÀìÁììÏìďìŏìƏìǏìȏìɏìʏìˏì̏ì͏ìΏìϏìЏìяìҏìӏìԏìՏì֏ì׏ì؏ìُìڏìۏì܏ìݏìÞ
+0x8fece0: ìàìáìâìãìäìåìæìçìèìéìêìëìììíìîìïìðìñìòìóìôìõìöì÷ìøìùìúìûìüìýìþ
+0x8feda0:   í¡í¢í£í¤í¥í¦í§í¨í©íªí«í¬í­í®í¯í°í±í²í³í´íµí¶í·í¸í¹íºí»í¼í½í¾
+0x8fedc0: íÀíÁííÏíďíŏíƏíǏíȏíɏíʏíˏí̏í͏íΏíϏíЏíяíҏíӏíԏíՏí֏í׏í؏íُíڏíۏí܏íݏíÞ
+0x8fede0: íàíáíâíã                                                      
+0x8feea0:                                                               
+0x8feec0:                                                               
+0x8feee0:                                                               
+0x8fefa0:                                                               
+0x8fefc0:                                                               
+0x8fefe0:                                                               
+0x8ff0a0:                                                               
+0x8ff0c0:                                                               
+0x8ff0e0:                                                               
+0x8ff1a0:                                                               
+0x8ff1c0:                                                               
+0x8ff1e0:                                                               
+0x8ff2a0:                                                               
+0x8ff2c0:                                                               
+0x8ff2e0:                                                               
+0x8ff3a0:                                                               
+0x8ff3c0:                                                               
+0x8ff3e0:                                                               
+0x8ff4a0:                                                               
+0x8ff4c0:                                                               
+0x8ff4e0:                                                               
+0x8ff5a0:                                                               
+0x8ff5c0:                                                               
+0x8ff5e0:                                                               
+0x8ff6a0:                                                               
+0x8ff6c0:                                                               
+0x8ff6e0:                                                               
+0x8ff7a0:                                                               
+0x8ff7c0:                                                               
+0x8ff7e0:                                                               
+0x8ff8a0:                                                               
+0x8ff8c0:                                                               
+0x8ff8e0:                                                               
+0x8ff9a0:                                                               
+0x8ff9c0:                                                               
+0x8ff9e0:                                                               
+0x8ffaa0:                                                               
+0x8ffac0:                                                               
+0x8ffae0:                                                               
+0x8ffba0:                                                               
+0x8ffbc0:                                                               
+0x8ffbe0:                                                               
+0x8ffca0:                                                               
+0x8ffcc0:                                                               
+0x8ffce0:                                                               
+0x8ffda0:                                                               
+0x8ffdc0:                                                               
+0x8ffde0:                                                               
+0x8ffea0:                                                               
+0x8ffec0:                                                               
+0x8ffee0:                                                               
+0x8fffa0:                                                               
+0x8fffc0:                                                               
+0x8fffe0:                                                               
diff --git a/ext/Encode/t/jisx0212.ref b/ext/Encode/t/jisx0212.ref
new file mode 100644 (file)
index 0000000..b484808
--- /dev/null
@@ -0,0 +1,288 @@
+0x8fa0a0:                                                               
+0x8fa0c0:                                                               
+0x8fa0e0:                                                               
+0x8fa1a0:                                                               
+0x8fa1c0:                                                               
+0x8fa1e0:                                                               
+0x8fa2a0:                               ˘ˇ¸˙˝¯˛˚~΄΅          
+0x8fa2c0:     ¡¦¿                                                    
+0x8fa2e0:                       ºª©®™¤№                          
+0x8fa3a0:                                                               
+0x8fa3c0:                                                               
+0x8fa3e0:                                                               
+0x8fa4a0:                                                               
+0x8fa4c0:                                                               
+0x8fa4e0:                                                               
+0x8fa5a0:                                                               
+0x8fa5c0:                                                               
+0x8fa5e0:                                                               
+0x8fa6a0:                                                               
+0x8fa6c0:                                                               
+0x8fa6e0:   ΆΈΉΊΪ  Ό  ΎΫ  Ώ        άέήίϊΐόςύϋΰώ    
+0x8fa7a0:                                                               
+0x8fa7c0:     ЂЃЄЅІЇЈЉЊЋЌЎЏ                                
+0x8fa7e0:                                     ђѓєѕіїјљњћќўџ
+0x8fa8a0:                                                               
+0x8fa8c0:                                                               
+0x8fa8e0:                                                               
+0x8fa9a0:   ÆĐ  Ħ  IJ  ŁĿ  ŊØŒ  ŦÞ                            
+0x8fa9c0:   æđðħıijĸłŀʼnŋøœßŧþ                            
+0x8fa9e0:                                                               
+0x8faaa0:   ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ  ĜĞĢĠĤ
+0x8faac0: ÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠ
+0x8faae0: ŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ              
+0x8faba0:   áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ  ġĥ
+0x8fabc0: ìïîǐ  īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝš
+0x8fabe0: ťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż              
+0x8faca0:                                                               
+0x8facc0:                                                               
+0x8face0:                                                               
+0x8fada0:                                                               
+0x8fadc0:                                                               
+0x8fade0:                                                               
+0x8faea0:                                                               
+0x8faec0:                                                               
+0x8faee0:                                                               
+0x8fafa0:                                                               
+0x8fafc0:                                                               
+0x8fafe0:                                                               
+0x8fb0a0:   丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖
+0x8fb0c0: 亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱
+0x8fb0e0: 伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄
+0x8fb1a0:   侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍
+0x8fb1c0: 俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵
+0x8fb1e0: 偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐
+0x8fb2a0:   傒傓傔傖傛傜傞傟傠傡傢傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟
+0x8fb2c0: 僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯
+0x8fb2e0: 儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂
+0x8fb3a0:   凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅
+0x8fb3c0: 剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰
+0x8fb3e0: 劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋
+0x8fb4a0:   匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬
+0x8fb4c0: 卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝
+0x8fb4e0: 叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿
+0x8fb5a0:   咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪
+0x8fb5c0: 哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚
+0x8fb5e0: 啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒
+0x8fb6a0:   嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍嘎嘏嘐嘑嘒嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀
+0x8fb6c0: 噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟
+0x8fb6e0: 嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤囥囦囧囨囱囫园
+0x8fb7a0:   囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌
+0x8fb7c0: 坒坢坥坧坨坫坭坮坯坰坱坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟
+0x8fb7e0: 垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡
+0x8fb8a0:   堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈
+0x8fb8c0: 墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳
+0x8fb8e0: 夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭
+0x8fb9a0:   奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍
+0x8fb9c0: 姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈
+0x8fb9e0: 婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿
+0x8fbaa0:   嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖
+0x8fbac0: 孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏
+0x8fbae0: 寗寘寙寚寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩
+0x8fbba0:   屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮
+0x8fbbc0: 峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭
+0x8fbbe0: 嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤
+0x8fbca0:   巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪幫幬
+0x8fbcc0: 幮幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇
+0x8fbce0: 弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧
+0x8fbda0:   彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐忑
+0x8fbdc0: 忓忔忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀
+0x8fbde0: 恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷
+0x8fbea0:   悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐愑愒
+0x8fbec0: 愔愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄
+0x8fbee0: 憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥
+0x8fbfa0:   懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜
+0x8fbfc0: 扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋
+0x8fbfe0: 挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵
+0x8fc0a0:   捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠
+0x8fc0c0: 揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔
+0x8fc0e0: 摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿
+0x8fc1a0:   擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙
+0x8fc1c0: 攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣
+0x8fc1e0: 斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝
+0x8fc2a0:   昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡
+0x8fc2c0: 晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿
+0x8fc2e0: 曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝
+0x8fc3a0:   杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉
+0x8fc3c0: 柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘
+0x8fc3e0: 桫桮桯桰桱桲桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏
+0x8fc4a0:   棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳
+0x8fc4c0: 椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫
+0x8fc4e0: 榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲
+0x8fc5a0:   樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛
+0x8fc5c0: 檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃
+0x8fc5e0: 欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽
+0x8fc6a0:   歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮
+0x8fc6c0: 毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙
+0x8fc6e0: 汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖
+0x8fc7a0:   泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞
+0x8fc7c0: 浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠
+0x8fc7e0: 淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞
+0x8fc8a0:   湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹
+0x8fc8c0: 滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢
+0x8fc8e0: 潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊
+0x8fc9a0:   濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕
+0x8fc9c0: 灞灎灤灥灬灮灵灶灾炁炅炆炔炕炖炗炘炛炤炫炰炱炴炷烊烑烓烔烕烖烘
+0x8fc9e0: 烤烺焃焄焅焆焇焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠
+0x8fcaa0:   煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀
+0x8fcac0: 爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮
+0x8fcae0: 牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻
+0x8fcba0:   狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝
+0x8fcbc0: 獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦
+0x8fcbe0: 玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽
+0x8fcca0:   珿琀琁琄琇琊琑琚琛琤琦琨琩琪琫琬琭琮琯琰琱琹瑀瑃瑄瑆瑇瑋瑍瑑
+0x8fccc0: 瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨
+0x8fcce0: 璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆
+0x8fcda0:   甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹畺
+0x8fcdc0: 畼畽畾疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬
+0x8fcde0: 痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹
+0x8fcea0:   瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠
+0x8fcec0: 皣皤皥皦皧皨皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒
+0x8fcee0: 眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢
+0x8fcfa0:   睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑
+0x8fcfc0: 矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄
+0x8fcfe0: 硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳
+0x8fd0a0:   碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐
+0x8fd0c0: 礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻
+0x8fd0e0: 祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞
+0x8fd1a0:   秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺
+0x8fd1c0: 穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬
+0x8fd1e0: 窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰
+0x8fd2a0:   笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬
+0x8fd2c0: 箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃
+0x8fd2e0: 簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙籚籛籜籝籞
+0x8fd3a0:   籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍
+0x8fd3c0: 糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀
+0x8fd3e0: 絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝
+0x8fd4a0:   綞綦綧綪綳綶綷綹緂緃緄緅緆緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺
+0x8fd4c0: 縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸
+0x8fd4e0: 纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭
+0x8fd5a0:   罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥
+0x8fd5c0: 翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹
+0x8fd5e0: 耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮
+0x8fd6a0:   胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡
+0x8fd6c0: 腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝
+0x8fd6e0: 臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆
+0x8fd7a0:   艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡
+0x8fd7c0: 芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁
+0x8fd7e0: 茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸
+0x8fd8a0:   荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓
+0x8fd8c0: 菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥
+0x8fd8e0: 葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓
+0x8fd9a0:   蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴
+0x8fd9c0: 蔿蕆蕏蕐蕑蕒蕓蕖蕙蕜蕝蕞蕟蕠蕡蕢蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏
+0x8fd9e0: 薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼
+0x8fdaa0:   藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙
+0x8fdac0: 虠虡虢虣虤虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿
+0x8fdae0: 蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣
+0x8fdba0:   蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃螄螅螆螇螈螉
+0x8fdbc0: 螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣
+0x8fdbe0: 蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵
+0x8fdca0:   蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠
+0x8fdcc0: 袪袺袽袾裀裊裋裌裍裎裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚
+0x8fdce0: 褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺
+0x8fdda0:   襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔觕觖觗觘觥觩觫觭觱觳
+0x8fddc0: 觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓
+0x8fdde0: 詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳
+0x8fdea0:   誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟
+0x8fdec0: 謭謰謷謼譂譃譄譅譆譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕
+0x8fdee0: 讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆
+0x8fdfa0:   貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾
+0x8fdfc0: 贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀
+0x8fdfe0: 跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢
+0x8fe0a0:   踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹
+0x8fe0c0: 蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮
+0x8fe0e0: 軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁
+0x8fe1a0:   轃轇轏轑轒轓轔轕轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒
+0x8fe1c0: 迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛
+0x8fe1e0: 遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃
+0x8fe2a0:   郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗
+0x8fe2c0: 鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧
+0x8fe2e0: 酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿
+0x8fe3a0:   釂釃釅釓釔釗釙釚釞釤釥釩釪釬釭釮釯釰釱釷釹釻釽鈀鈁鈄鈅鈆鈇鈉
+0x8fe3c0: 鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍
+0x8fe3e0: 鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵鉶鉷鉸鉹鉻鉼鉽鉿銈銉銊銍銎銒銗
+0x8fe4a0:   銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿鋀鋁鋂鋃鋅鋆鋇鋈鋋鋌鋍鋎鋐
+0x8fe4c0: 鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡
+0x8fe4e0: 錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶
+0x8fe5a0:   鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅
+0x8fe5c0: 鏇鏉鏊鏋鏌鏍鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗
+0x8fe5e0: 鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹
+0x8fe6a0:   镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝
+0x8fe6c0: 闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾
+0x8fe6e0: 隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂
+0x8fe7a0:   霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸
+0x8fe7c0: 靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌
+0x8fe7e0: 韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦
+0x8fe8a0:   頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴
+0x8fe8c0: 颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫
+0x8fe8e0: 餲餳餴餵餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵
+0x8fe9a0:   馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖
+0x8fe9c0: 騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹
+0x8fe9e0: 骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿鬀鬁鬂鬃
+0x8feaa0:   鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖
+0x8feac0: 魛魞魡魣魥魦魨魪魫魬魭魮魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚
+0x8feae0: 鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸
+0x8feba0:   鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦鰧鰨鰩鰪鰱鰵鰶鰷鰽鱁鱃鱄
+0x8febc0: 鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂
+0x8febe0: 鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻
+0x8feca0:   鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖
+0x8fecc0: 鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃
+0x8fece0: 麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵
+0x8feda0:   黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿
+0x8fedc0: 齃齄齅齆齇齓齕齖齗齘齚齝齞齨齩齭齮齯齰齱齳齵齺齽龏龐龑龒龔龖龗
+0x8fede0: 龡龢龣龥                                                      
+0x8feea0:                                                               
+0x8feec0:                                                               
+0x8feee0:                                                               
+0x8fefa0:                                                               
+0x8fefc0:                                                               
+0x8fefe0:                                                               
+0x8ff0a0:                                                               
+0x8ff0c0:                                                               
+0x8ff0e0:                                                               
+0x8ff1a0:                                                               
+0x8ff1c0:                                                               
+0x8ff1e0:                                                               
+0x8ff2a0:                                                               
+0x8ff2c0:                                                               
+0x8ff2e0:                                                               
+0x8ff3a0:                                                               
+0x8ff3c0:                                                               
+0x8ff3e0:                                                               
+0x8ff4a0:                                                               
+0x8ff4c0:                                                               
+0x8ff4e0:                                                               
+0x8ff5a0:                                                               
+0x8ff5c0:                                                               
+0x8ff5e0:                                                               
+0x8ff6a0:                                                               
+0x8ff6c0:                                                               
+0x8ff6e0:                                                               
+0x8ff7a0:                                                               
+0x8ff7c0:                                                               
+0x8ff7e0:                                                               
+0x8ff8a0:                                                               
+0x8ff8c0:                                                               
+0x8ff8e0:                                                               
+0x8ff9a0:                                                               
+0x8ff9c0:                                                               
+0x8ff9e0:                                                               
+0x8ffaa0:                                                               
+0x8ffac0:                                                               
+0x8ffae0:                                                               
+0x8ffba0:                                                               
+0x8ffbc0:                                                               
+0x8ffbe0:                                                               
+0x8ffca0:                                                               
+0x8ffcc0:                                                               
+0x8ffce0:                                                               
+0x8ffda0:                                                               
+0x8ffdc0:                                                               
+0x8ffde0:                                                               
+0x8ffea0:                                                               
+0x8ffec0:                                                               
+0x8ffee0:                                                               
+0x8fffa0:                                                               
+0x8fffc0:                                                               
+0x8fffe0:                                                               
index d9551a9..23465b9 100644 (file)
@@ -5,6 +5,7 @@ WriteMakefile(
     MAN3PODS   => {},  # Pods will be built by installman.
     XSPROTOARG => '-noprototypes',             # XXX remove later?
     VERSION_FROM => 'Fcntl.pm',
+    realclean => {FILES=> 'const-c.inc const-xs.inc'},
 );
 
 my @names = (qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FD_CLOEXEC FEXCL FLARGEFILE
index 3cf83f1..0d4267a 100644 (file)
@@ -5,6 +5,7 @@ WriteMakefile(
     VERSION_FROM       => 'Glob.pm',
     MAN3PODS           => {},     # Pods will be built by installman.
     OBJECT             => 'bsd_glob$(OBJ_EXT) Glob$(OBJ_EXT)',
+    realclean => {FILES=> 'const-c.inc const-xs.inc'},
 
 ## uncomment for glob debugging (will cause make test to fail)
 #   DEFINE             => '-DGLOB_DEBUG',
index abdceec..c0824c7 100644 (file)
@@ -6,6 +6,7 @@ WriteMakefile(
     MAN3PODS   => {},  # Pods will be built by installman.
     XSPROTOARG => '-noprototypes',             # XXX remove later?
     VERSION_FROM => 'GDBM_File.pm',
+    realclean => {FILES=> 'const-c.inc const-xs.inc'},
 );
 WriteConstants(
     NAME => 'GDBM_File',
index 730a45f..b307aca 100644 (file)
@@ -13,6 +13,7 @@ WriteMakefile(
        # Insert -I. if you add *.h files later:
     'INC'              => '', # e.g., '-I/usr/include/other'
     'MAN3PODS'         => {},  # Pods will be built by installman
+    realclean => {FILES=> 'const-c.inc const-xs.inc'},
        # Un-comment this if you add C files to link with later:
     # 'OBJECT'         => '$(O_FILES)', # link all the C files too
 );
diff --git a/ext/I18N/Langinfo/fallback/const-c.inc b/ext/I18N/Langinfo/fallback/const-c.inc
new file mode 100644 (file)
index 0000000..ca073b7
--- /dev/null
@@ -0,0 +1,780 @@
+#define PERL_constant_NOTFOUND 1
+#define PERL_constant_NOTDEF   2
+#define PERL_constant_ISIV     3
+#define PERL_constant_ISNO     4
+#define PERL_constant_ISNV     5
+#define PERL_constant_ISPV     6
+#define PERL_constant_ISPVN    7
+#define PERL_constant_ISSV     8
+#define PERL_constant_ISUNDEF  9
+#define PERL_constant_ISUV     10
+#define PERL_constant_ISYES    11
+
+#ifndef NVTYPE
+typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it.  */
+#endif
+#ifndef aTHX_
+#define aTHX_ /* 5.6 or later define this for threading support.  */
+#endif
+#ifndef pTHX_
+#define pTHX_ /* 5.6 or later define this for threading support.  */
+#endif
+
+static int
+constant_5 (pTHX_ const char *name, IV *iv_return) {
+  /* When generated this function returned values for the list of names given
+     here.  However, subsequent manual editing may have added or removed some.
+     DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 D_FMT MON_1 MON_2 MON_3 MON_4
+     MON_5 MON_6 MON_7 MON_8 MON_9 NOSTR T_FMT */
+  /* Offset 4 gives the best switch position.  */
+  switch (name[4]) {
+  case '1':
+    if (memEQ(name, "DAY_1", 5)) {
+    /*                   ^      */
+#if defined(DAY_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = DAY_1;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "MON_1", 5)) {
+    /*                   ^      */
+#if defined(MON_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_1;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '2':
+    if (memEQ(name, "DAY_2", 5)) {
+    /*                   ^      */
+#if defined(DAY_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = DAY_2;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "MON_2", 5)) {
+    /*                   ^      */
+#if defined(MON_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_2;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '3':
+    if (memEQ(name, "DAY_3", 5)) {
+    /*                   ^      */
+#if defined(DAY_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = DAY_3;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "MON_3", 5)) {
+    /*                   ^      */
+#if defined(MON_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_3;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '4':
+    if (memEQ(name, "DAY_4", 5)) {
+    /*                   ^      */
+#if defined(DAY_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = DAY_4;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "MON_4", 5)) {
+    /*                   ^      */
+#if defined(MON_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_4;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '5':
+    if (memEQ(name, "DAY_5", 5)) {
+    /*                   ^      */
+#if defined(DAY_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = DAY_5;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "MON_5", 5)) {
+    /*                   ^      */
+#if defined(MON_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_5;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '6':
+    if (memEQ(name, "DAY_6", 5)) {
+    /*                   ^      */
+#if defined(DAY_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = DAY_6;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "MON_6", 5)) {
+    /*                   ^      */
+#if defined(MON_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_6;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '7':
+    if (memEQ(name, "DAY_7", 5)) {
+    /*                   ^      */
+#if defined(DAY_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = DAY_7;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "MON_7", 5)) {
+    /*                   ^      */
+#if defined(MON_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_7;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '8':
+    if (memEQ(name, "MON_8", 5)) {
+    /*                   ^      */
+#if defined(MON_8) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_8;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '9':
+    if (memEQ(name, "MON_9", 5)) {
+    /*                   ^      */
+#if defined(MON_9) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_9;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'R':
+    if (memEQ(name, "NOSTR", 5)) {
+    /*                   ^      */
+#if defined(NOSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = NOSTR;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'T':
+    if (memEQ(name, "D_FMT", 5)) {
+    /*                   ^      */
+#if defined(D_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = D_FMT;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "T_FMT", 5)) {
+    /*                   ^      */
+#if defined(T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = T_FMT;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  }
+  return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_6 (pTHX_ const char *name, IV *iv_return) {
+  /* When generated this function returned values for the list of names given
+     here.  However, subsequent manual editing may have added or removed some.
+     AM_STR MON_10 MON_11 MON_12 NOEXPR PM_STR YESSTR */
+  /* Offset 0 gives the best switch position.  */
+  switch (name[0]) {
+  case 'A':
+    if (memEQ(name, "AM_STR", 6)) {
+    /*               ^           */
+#if defined(AM_STR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = AM_STR;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'M':
+    if (memEQ(name, "MON_10", 6)) {
+    /*               ^           */
+#if defined(MON_10) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_10;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "MON_11", 6)) {
+    /*               ^           */
+#if defined(MON_11) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_11;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "MON_12", 6)) {
+    /*               ^           */
+#if defined(MON_12) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = MON_12;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'N':
+    if (memEQ(name, "NOEXPR", 6)) {
+    /*               ^           */
+#if defined(NOEXPR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = NOEXPR;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'P':
+    if (memEQ(name, "PM_STR", 6)) {
+    /*               ^           */
+#if defined(PM_STR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = PM_STR;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'Y':
+    if (memEQ(name, "YESSTR", 6)) {
+    /*               ^           */
+#if defined(YESSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = YESSTR;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  }
+  return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_7 (pTHX_ const char *name, IV *iv_return) {
+  /* When generated this function returned values for the list of names given
+     here.  However, subsequent manual editing may have added or removed some.
+     ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 ABDAY_6 ABDAY_7 ABMON_1 ABMON_2
+     ABMON_3 ABMON_4 ABMON_5 ABMON_6 ABMON_7 ABMON_8 ABMON_9 CODESET D_T_FMT
+     THOUSEP YESEXPR */
+  /* Offset 6 gives the best switch position.  */
+  switch (name[6]) {
+  case '1':
+    if (memEQ(name, "ABDAY_1", 7)) {
+    /*                     ^      */
+#if defined(ABDAY_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABDAY_1;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "ABMON_1", 7)) {
+    /*                     ^      */
+#if defined(ABMON_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_1;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '2':
+    if (memEQ(name, "ABDAY_2", 7)) {
+    /*                     ^      */
+#if defined(ABDAY_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABDAY_2;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "ABMON_2", 7)) {
+    /*                     ^      */
+#if defined(ABMON_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_2;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '3':
+    if (memEQ(name, "ABDAY_3", 7)) {
+    /*                     ^      */
+#if defined(ABDAY_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABDAY_3;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "ABMON_3", 7)) {
+    /*                     ^      */
+#if defined(ABMON_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_3;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '4':
+    if (memEQ(name, "ABDAY_4", 7)) {
+    /*                     ^      */
+#if defined(ABDAY_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABDAY_4;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "ABMON_4", 7)) {
+    /*                     ^      */
+#if defined(ABMON_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_4;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '5':
+    if (memEQ(name, "ABDAY_5", 7)) {
+    /*                     ^      */
+#if defined(ABDAY_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABDAY_5;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "ABMON_5", 7)) {
+    /*                     ^      */
+#if defined(ABMON_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_5;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '6':
+    if (memEQ(name, "ABDAY_6", 7)) {
+    /*                     ^      */
+#if defined(ABDAY_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABDAY_6;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "ABMON_6", 7)) {
+    /*                     ^      */
+#if defined(ABMON_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_6;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '7':
+    if (memEQ(name, "ABDAY_7", 7)) {
+    /*                     ^      */
+#if defined(ABDAY_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABDAY_7;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "ABMON_7", 7)) {
+    /*                     ^      */
+#if defined(ABMON_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_7;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '8':
+    if (memEQ(name, "ABMON_8", 7)) {
+    /*                     ^      */
+#if defined(ABMON_8) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_8;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '9':
+    if (memEQ(name, "ABMON_9", 7)) {
+    /*                     ^      */
+#if defined(ABMON_9) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_9;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'P':
+    if (memEQ(name, "THOUSEP", 7)) {
+    /*                     ^      */
+#if defined(THOUSEP) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))
+      *iv_return = THOUSEP;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'R':
+    if (memEQ(name, "YESEXPR", 7)) {
+    /*                     ^      */
+#if defined(YESEXPR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = YESEXPR;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'T':
+    if (memEQ(name, "CODESET", 7)) {
+    /*                     ^      */
+#ifdef CODESET
+      *iv_return = CODESET;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    if (memEQ(name, "D_T_FMT", 7)) {
+    /*                     ^      */
+#if defined(D_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = D_T_FMT;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  }
+  return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_8 (pTHX_ const char *name, IV *iv_return) {
+  /* When generated this function returned values for the list of names given
+     here.  However, subsequent manual editing may have added or removed some.
+     ABMON_10 ABMON_11 ABMON_12 CRNCYSTR */
+  /* Offset 7 gives the best switch position.  */
+  switch (name[7]) {
+  case '0':
+    if (memEQ(name, "ABMON_10", 8)) {
+    /*                      ^      */
+#if defined(ABMON_10) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_10;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '1':
+    if (memEQ(name, "ABMON_11", 8)) {
+    /*                      ^      */
+#if defined(ABMON_11) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_11;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '2':
+    if (memEQ(name, "ABMON_12", 8)) {
+    /*                      ^      */
+#if defined(ABMON_12) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ABMON_12;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'R':
+    if (memEQ(name, "CRNCYSTR", 8)) {
+    /*                      ^      */
+#if defined(CRNCYSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))
+      *iv_return = CRNCYSTR;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  }
+  return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_9 (pTHX_ const char *name, IV *iv_return) {
+  /* When generated this function returned values for the list of names given
+     here.  However, subsequent manual editing may have added or removed some.
+     ERA_D_FMT ERA_T_FMT RADIXCHAR */
+  /* Offset 4 gives the best switch position.  */
+  switch (name[4]) {
+  case 'D':
+    if (memEQ(name, "ERA_D_FMT", 9)) {
+    /*                   ^          */
+#if defined(ERA_D_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ERA_D_FMT;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'T':
+    if (memEQ(name, "ERA_T_FMT", 9)) {
+    /*                   ^          */
+#if defined(ERA_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ERA_T_FMT;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'X':
+    if (memEQ(name, "RADIXCHAR", 9)) {
+    /*                   ^          */
+#if defined(RADIXCHAR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))
+      *iv_return = RADIXCHAR;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  }
+  return PERL_constant_NOTFOUND;
+}
+
+static int
+constant (pTHX_ const char *name, STRLEN len, IV *iv_return) {
+  /* Initially switch on the length of the name.  */
+  /* When generated this function returned values for the list of names given
+     in this section of perl code.  Rather than manually editing these functions
+     to add or remove constants, which would result in this comment and section
+     of code becoming inaccurate, we recommend that you edit this section of
+     code, and use it to regenerate a new set of constant functions which you
+     then use to replace the originals.
+
+     Regenerate these constant functions by feeding this entire source file to
+     perl -x
+
+#!/mnt/six/blead/15141/miniperl -w
+use ExtUtils::Constant qw (constant_types C_constant XS_constant);
+
+my $types = {map {($_, 1)} qw(IV)};
+my @names = (qw(CODESET),
+            {name=>"ABDAY_1", type=>"IV", macro=>["#if defined(ABDAY_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABDAY_2", type=>"IV", macro=>["#if defined(ABDAY_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABDAY_3", type=>"IV", macro=>["#if defined(ABDAY_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABDAY_4", type=>"IV", macro=>["#if defined(ABDAY_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABDAY_5", type=>"IV", macro=>["#if defined(ABDAY_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABDAY_6", type=>"IV", macro=>["#if defined(ABDAY_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABDAY_7", type=>"IV", macro=>["#if defined(ABDAY_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_1", type=>"IV", macro=>["#if defined(ABMON_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_10", type=>"IV", macro=>["#if defined(ABMON_10) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_11", type=>"IV", macro=>["#if defined(ABMON_11) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_12", type=>"IV", macro=>["#if defined(ABMON_12) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_2", type=>"IV", macro=>["#if defined(ABMON_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_3", type=>"IV", macro=>["#if defined(ABMON_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_4", type=>"IV", macro=>["#if defined(ABMON_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_5", type=>"IV", macro=>["#if defined(ABMON_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_6", type=>"IV", macro=>["#if defined(ABMON_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_7", type=>"IV", macro=>["#if defined(ABMON_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_8", type=>"IV", macro=>["#if defined(ABMON_8) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ABMON_9", type=>"IV", macro=>["#if defined(ABMON_9) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ALT_DIGITS", type=>"IV", macro=>["#if defined(ALT_DIGITS) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"AM_STR", type=>"IV", macro=>["#if defined(AM_STR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"CRNCYSTR", type=>"IV", macro=>["#if defined(CRNCYSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))\n", "#endif\n"]},
+            {name=>"DAY_1", type=>"IV", macro=>["#if defined(DAY_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"DAY_2", type=>"IV", macro=>["#if defined(DAY_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"DAY_3", type=>"IV", macro=>["#if defined(DAY_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"DAY_4", type=>"IV", macro=>["#if defined(DAY_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"DAY_5", type=>"IV", macro=>["#if defined(DAY_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"DAY_6", type=>"IV", macro=>["#if defined(DAY_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"DAY_7", type=>"IV", macro=>["#if defined(DAY_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"D_FMT", type=>"IV", macro=>["#if defined(D_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"D_T_FMT", type=>"IV", macro=>["#if defined(D_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ERA", type=>"IV", macro=>["#if defined(ERA) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ERA_D_FMT", type=>"IV", macro=>["#if defined(ERA_D_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ERA_D_T_FMT", type=>"IV", macro=>["#if defined(ERA_D_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"ERA_T_FMT", type=>"IV", macro=>["#if defined(ERA_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_1", type=>"IV", macro=>["#if defined(MON_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_10", type=>"IV", macro=>["#if defined(MON_10) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_11", type=>"IV", macro=>["#if defined(MON_11) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_12", type=>"IV", macro=>["#if defined(MON_12) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_2", type=>"IV", macro=>["#if defined(MON_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_3", type=>"IV", macro=>["#if defined(MON_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_4", type=>"IV", macro=>["#if defined(MON_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_5", type=>"IV", macro=>["#if defined(MON_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_6", type=>"IV", macro=>["#if defined(MON_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_7", type=>"IV", macro=>["#if defined(MON_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_8", type=>"IV", macro=>["#if defined(MON_8) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"MON_9", type=>"IV", macro=>["#if defined(MON_9) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"NOEXPR", type=>"IV", macro=>["#if defined(NOEXPR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"NOSTR", type=>"IV", macro=>["#if defined(NOSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"PM_STR", type=>"IV", macro=>["#if defined(PM_STR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"RADIXCHAR", type=>"IV", macro=>["#if defined(RADIXCHAR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))\n", "#endif\n"]},
+            {name=>"THOUSEP", type=>"IV", macro=>["#if defined(THOUSEP) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))\n", "#endif\n"]},
+            {name=>"T_FMT", type=>"IV", macro=>["#if defined(T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"T_FMT_AMPM", type=>"IV", macro=>["#if defined(T_FMT_AMPM) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"YESEXPR", type=>"IV", macro=>["#if defined(YESEXPR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+            {name=>"YESSTR", type=>"IV", macro=>["#if defined(YESSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]});
+
+print constant_types(); # macro defs
+foreach (C_constant ("I18N::Langinfo", 'constant', 'IV', $types, undef, 3, @names) ) {
+    print $_, "\n"; # C constant subs
+}
+print "#### XS Section:\n";
+print XS_constant ("I18N::Langinfo", $types);
+__END__
+   */
+
+  switch (len) {
+  case 3:
+    if (memEQ(name, "ERA", 3)) {
+#if defined(ERA) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ERA;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 5:
+    return constant_5 (aTHX_ name, iv_return);
+    break;
+  case 6:
+    return constant_6 (aTHX_ name, iv_return);
+    break;
+  case 7:
+    return constant_7 (aTHX_ name, iv_return);
+    break;
+  case 8:
+    return constant_8 (aTHX_ name, iv_return);
+    break;
+  case 9:
+    return constant_9 (aTHX_ name, iv_return);
+    break;
+  case 10:
+    /* Names all of length 10.  */
+    /* ALT_DIGITS T_FMT_AMPM */
+    /* Offset 7 gives the best switch position.  */
+    switch (name[7]) {
+    case 'I':
+      if (memEQ(name, "ALT_DIGITS", 10)) {
+      /*                      ^         */
+#if defined(ALT_DIGITS) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+        *iv_return = ALT_DIGITS;
+        return PERL_constant_ISIV;
+#else
+        return PERL_constant_NOTDEF;
+#endif
+      }
+      break;
+    case 'M':
+      if (memEQ(name, "T_FMT_AMPM", 10)) {
+      /*                      ^         */
+#if defined(T_FMT_AMPM) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+        *iv_return = T_FMT_AMPM;
+        return PERL_constant_ISIV;
+#else
+        return PERL_constant_NOTDEF;
+#endif
+      }
+      break;
+    }
+    break;
+  case 11:
+    if (memEQ(name, "ERA_D_T_FMT", 11)) {
+#if defined(ERA_D_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+      *iv_return = ERA_D_T_FMT;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  }
+  return PERL_constant_NOTFOUND;
+}
+
index 04ba745..ae00b04 100644 (file)
@@ -10,7 +10,8 @@ WriteMakefile(
     @libs,
     MAN3PODS   => {},  # Pods will be built by installman.
     XSPROTOARG => '-noprototypes',             # XXX remove later?
-    VERSION_FROM => 'POSIX.pm', 
+    VERSION_FROM => 'POSIX.pm',
+    realclean => {FILES=> 'const-c.inc const-xs.inc'},
 );
 
 my @names =
index 19f0acd..e543689 100644 (file)
@@ -7,6 +7,7 @@ WriteMakefile(
    ($Config{libs} =~ /(-lsocks\S*)/ ? (LIBS => [ "$1" ] ) : ()),
     MAN3PODS    => {},         # Pods will be built by installman.
     XSPROTOARG   => '-noprototypes',           # XXX remove later?
+    realclean => {FILES=> 'const-c.inc const-xs.inc'},
 );
 my @names = (qw(AF_802 AF_AAL AF_APPLETALK AF_CCITT AF_CHAOS AF_CTF
                AF_DATAKIT AF_DECnet AF_DLI AF_ECMA AF_GOSIP AF_HYLINK
index 1a5f1fc..5a5da6f 100644 (file)
@@ -6,6 +6,7 @@ WriteMakefile(
     VERSION_FROM       => 'Syslog.pm', 
     MAN3PODS           => {},  # Pods will be built by installman.
     XSPROTOARG          => '-noprototypes',
+    realclean => {FILES=> 'const-c.inc const-xs.inc'},
 );
 
 # We hope syslogd understands /dev/log.
index eabf7b4..18f1d4d 100644 (file)
@@ -9,6 +9,17 @@ use Carp;
 @EXPORT_OK = qw(setlogsock);
 $VERSION = '0.02';
 
+# it would be nice to try stream/unix first, since that will be
+# most efficient. However streams are dodgy - see _syslog_send_stream
+#my @connectMethods = ( 'stream', 'unix', 'tcp', 'udp' );
+my @connectMethods = ( 'tcp', 'udp', 'unix', 'stream', 'console' );
+my @defaultMethods = @connectMethods;
+my $syslog_path = undef;
+my $transmit_ok = 0;
+my $current_proto = undef;
+my $failed = undef;
+my $fail_time = undef;
+
 use Socket;
 use Sys::Hostname;
 
@@ -21,8 +32,6 @@ use Sys::Hostname;
 #  with support from Tim Bunce <Tim.Bunce@ig.co.uk> and the perl5-porters mailing list
 # Modified to use an XS backend instead of syslog.ph by Tom Hughes <tom@compton.nu>
 
-# Todo: enable connect to try all three types before failing (auto setlogsock)?
-
 =head1 NAME
 
 Sys::Syslog, openlog, closelog, setlogmask, syslog - Perl interface to the UNIX syslog(3) calls
@@ -50,9 +59,11 @@ Syslog provides the functions:
 
 =item openlog $ident, $logopt, $facility
 
-I<$ident> is prepended to every message.
-I<$logopt> contains zero or more of the words I<pid>, I<ndelay>, I<cons>, I<nowait>.
-I<$facility> specifies the part of the system
+I<$ident> is prepended to every message.  I<$logopt> contains zero or
+more of the words I<pid>, I<ndelay>, I<nowait>.  The cons option is
+ignored, since the failover mechanism will drop down to the console
+automatically if all other media fail.  I<$facility> specifies the
+part of the system
 
 =item syslog $priority, $format, @args
 
@@ -64,19 +75,28 @@ is replaced with C<"$!"> (the latest error message).
 
 Sets log mask I<$mask_priority> and returns the old mask.
 
-=item setlogsock $sock_type (added in 5.004_02)
+=item setlogsock $sock_type [$stream_location] (added in 5.004_02)
 
 Sets the socket type to be used for the next call to
 C<openlog()> or C<syslog()> and returns TRUE on success,
 undef on failure.
 
-A value of 'unix' will connect to the UNIX domain socket returned by the
-C<_PATH_LOG> macro (if you system defines it) in F<syslog.h>.  A value of
-'inet' will connect to an INET socket returned by getservbyname().  If
-C<_PATH_LOG> is unavailable or if getservbyname() fails, returns undef.  Any
-other value croaks.
+A value of 'unix' will connect to the UNIX domain socket returned by
+the C<_PATH_LOG> macro (if your system defines it) in F<syslog.ph>.  A
+value of 'stream' will connect to the stream indicated by the pathname
+provided as the optional second parameter.  A value of 'inet' will
+connect to an INET socket (either tcp or udp, tried in that order)
+returned by getservbyname(). 'tcp' and 'udp' can also be given as
+values. The value 'console' will send messages directly to the
+console, as for the 'cons' option in the logopts in openlog().
+
+A reference to an array can also be passed as the first parameter.
+When this calling method is used, the array should contain a list of
+sock_types which are attempted in order.
 
-The default is for the INET socket to be used.
+The default is to try tcp, udp, unix, stream, console.
+
+Giving an invalid value for sock_type will croak.
 
 =item closelog
 
@@ -113,20 +133,23 @@ Tom Christiansen E<lt>F<tchrist@perl.com>E<gt> and Larry Wall
 E<lt>F<larry@wall.org>E<gt>.
 
 UNIX domain sockets added by Sean Robinson
-E<lt>F<robinson_s@sc.maricopa.edu>E<gt> with support from Tim Bunce
-E<lt>F<Tim.Bunce@ig.co.uk>E<gt> and the perl5-porters mailing list.
+E<lt>F<robinson_s@sc.maricopa.edu>E<gt> with support from Tim Bunce 
+E<lit>F<Tim.Bunce@ig.co.uk>E<gt> and the perl5-porters mailing list.
 
 Dependency on F<syslog.ph> replaced with XS code by Tom Hughes
 E<lt>F<tom@compton.nu>E<gt>.
 
-Code for constant()s regenerated by Nicholas Clark E<lt>nick@ccl4.orgE<gt>.
+Code for constant()s regenerated by Nicholas Clark E<lt>F<nick@ccl4.org>E<gt>.
+
+Failover to different communication modes by Nick Williams
+E<lt>F<Nick.Williams@morganstanley.com>E<gt>.
 
 =cut
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
     # XS function.
-
+    
     my $constname;
     our $AUTOLOAD;
     ($constname = $AUTOLOAD) =~ s/.*:://;
@@ -147,7 +170,6 @@ sub openlog {
     ($ident, $logopt, $facility) = @_;  # package vars
     $lo_pid = $logopt =~ /\bpid\b/;
     $lo_ndelay = $logopt =~ /\bndelay\b/;
-    $lo_cons = $logopt =~ /\bcons\b/;
     $lo_nowait = $logopt =~ /\bnowait\b/;
     return 1 unless $lo_ndelay;
     &connect;
@@ -166,21 +188,49 @@ sub setlogmask {
  
 sub setlogsock {
     local($setsock) = shift;
+    $syslog_path = shift;
     &disconnect if $connected;
-    if (lc($setsock) eq 'unix') {
-        if (length _PATH_LOG()) {
-            $sock_type = 1;
+    $transmit_ok = 0;
+    @fallbackMethods = ();
+    @connectMethods = @defaultMethods;
+    if (ref $setsock eq 'ARRAY') {
+       @connectMethods = @$setsock;
+    } elsif (lc($setsock) eq 'stream') {
+       $syslog_path = '/dev/log' unless($syslog_path);
+       if (!-w $syslog_path) {
+           carp "stream passed to setlogsock, but $syslog_path is not writable";
+           return undef;
+       } else {
+           @connectMethods = ( 'stream' );
+       }
+    } elsif (lc($setsock) eq 'unix') {
+        if (length _PATH_LOG() && !defined $syslog_path) {
+           $syslog_path = _PATH_LOG();
+           @connectMethods = ( 'unix' );
         } else {
-            return undef;
+           carp 'unix passed to setlogsock, but path not available';
+           return undef;
         }
+    } elsif (lc($setsock) eq 'tcp') {
+       if (getservbyname('syslog', 'tcp') || getservbyname('syslogng', 'tcp')) {
+           @connectMethods = ( 'tcp' );
+       } else {
+           carp "tcp passed to setlogsock, but tcp service unavailable";
+           return undef;
+       }
+    } elsif (lc($setsock) eq 'udp') {
+       if (getservbyname('syslog', 'udp')) {
+           @connectMethods = ( 'udp' );
+       } else {
+           carp "udp passed to setlogsock, but udp service unavailable";
+           return undef;
+       }
     } elsif (lc($setsock) eq 'inet') {
-        if (getservbyname('syslog','udp')) {
-            undef($sock_type);
-        } else {
-            return undef;
-        }
+       @connectMethods = ( 'tcp', 'udp' );
+    } elsif (lc($setsock) eq 'console') {
+       @connectMethods = ( 'console' );
     } else {
-        croak "Invalid argument passed to setlogsock; must be 'unix' or 'inet'";
+        carp "Invalid argument passed to setlogsock; must be 'stream', 'unix', 'tcp', 'udp' or 'inet'";
     }
     return 1;
 }
@@ -243,24 +293,86 @@ sub syslog {
     $message = sprintf ($mask, @_);
 
     $sum = $numpri + $numfac;
-    unless (send(SYSLOG,"<$sum>$whoami: $message\0",0)) {
-       if ($lo_cons) {
-           if ($pid = fork) {
-               unless ($lo_nowait) {
-                   $died = waitpid($pid, 0);
-               }
+    my $buf = "<$sum>$whoami: $message\0";
+
+    # it's possible that we'll get an error from sending
+    # (e.g. if method is UDP and there is no UDP listener,
+    # then we'll get ECONNREFUSED on the send). So what we
+    # want to do at this point is to fallback onto a different
+    # connection method.
+    while (scalar @fallbackMethods || $syslog_send) {
+       if ($failed && (time - $fail_time) > 60) {
+           # it's been a while... maybe things have been fixed
+           @fallbackMethods = ();
+           disconnect();
+           $transmit_ok = 0; # make it look like a fresh attempt
+           &connect;
+        }
+       if ($connected && !connection_ok()) {
+           # Something was OK, but has now broken. Remember coz we'll
+           # want to go back to what used to be OK.
+           $failed = $current_proto unless $failed;
+           $fail_time = time;
+           disconnect();
+       }
+       &connect unless $connected;
+       $failed = undef if ($current_proto eq $failed);
+       if ($syslog_send) {
+           if (&{$syslog_send}($buf)) {
+               $transmit_ok++;
+               return 1;
            }
-           else {
-               if (open(CONS,">/dev/console")) {
-                   print CONS "<$facility.$priority>$whoami: $message\r";
-                   close CONS;
-               }
-               exit if defined $pid;           # if fork failed, we're parent
+           # typically doesn't happen, since errors are rare from write().
+           disconnect();
+       }
+    }
+    # could not send, could not fallback onto a working
+    # connection method. Lose.
+    return 0;
+}
+
+sub _syslog_send_console {
+    my ($buf) = @_;
+    chop($buf); # delete the NUL from the end
+    # The console print is a method which could block
+    # so we do it in a child process and always return success
+    # to the caller.
+    if (my $pid = fork) {
+       if ($lo_nowait) {
+           return 1;
+       } else {
+           if (waitpid($pid, 0) >= 0) {
+               return ($? >> 8);
+           } else {
+               # it's possible that the caller has other
+               # plans for SIGCHLD, so let's not interfere
+               return 1;
            }
        }
+    } else {
+        if (open(CONS, ">/dev/console")) {
+           my $ret = print CONS $buf . "\r";
+           exit ($ret) if defined $pid;
+           close CONS;
+       }
+       exit if defined $pid;
     }
 }
 
+sub _syslog_send_stream {
+    my ($buf) = @_;
+    # XXX: this only works if the OS stream implementation makes a write 
+    # look like a putmsg() with simple header. For instance it works on 
+    # Solaris 8 but not Solaris 7.
+    # To be correct, it should use a STREAMS API, but perl doesn't have one.
+    return syswrite(SYSLOG, $buf, length($buf));
+}
+sub _syslog_send_socket {
+    my ($buf) = @_;
+    return syswrite(SYSLOG, $buf, length($buf));
+    #return send(SYSLOG, $buf, 0);
+}
+
 sub xlate {
     local($name) = @_;
     $name = uc $name;
@@ -272,35 +384,190 @@ sub xlate {
 }
 
 sub connect {
+    @fallbackMethods = @connectMethods unless (scalar @fallbackMethods);
+    if ($transmit_ok && $current_proto) {
+       # Retry what we were on, because it's worked in the past.
+       unshift(@fallbackMethods, $current_proto);
+    }
+    $connected = 0;
+    my @errs = ();
+    my $proto = undef;
+    while ($proto = shift(@fallbackMethods)) {
+       my $fn = "connect_$proto";
+       $connected = &$fn(\@errs) unless (!defined &$fn);
+       last if ($connected);
+    }
+
+    $transmit_ok = 0;
+    if ($connected) {
+       $current_proto = $proto; 
+        local($old) = select(SYSLOG); $| = 1; select($old);
+    } else {
+       @fallbackMethods = ();
+       foreach my $err (@errs) {
+           carp $err;
+       }
+       croak "no connection to syslog available";
+    }
+}
+
+sub connect_tcp {
+    my ($errs) = @_;
+    unless ($host) {
+       require Sys::Hostname;
+       my($host_uniq) = Sys::Hostname::hostname();
+       ($host) = $host_uniq =~ /([A-Za-z0-9_.-]+)/; # allow FQDN (inc _)
+    }
+    my $tcp = getprotobyname('tcp');
+    if (!defined $tcp) {
+       push(@{$errs}, "getprotobyname failed for tcp");
+       return 0;
+    }
+    my $syslog = getservbyname('syslog','tcp');
+    $syslog = getservbyname('syslogng','tcp') unless (defined $syslog);
+    if (!defined $syslog) {
+       push(@{$errs}, "getservbyname failed for tcp");
+       return 0;
+    }
+
+    my $this = sockaddr_in($syslog, INADDR_ANY);
+    my $that = sockaddr_in($syslog, inet_aton($host));
+    if (!$that) {
+       push(@{$errs}, "can't lookup $host");
+       return 0;
+    }
+    if (!socket(SYSLOG,AF_INET,SOCK_STREAM,$tcp)) {
+       push(@{$errs}, "tcp socket: $!");
+       return 0;
+    }
+    setsockopt(SYSLOG, SOL_SOCKET, SO_KEEPALIVE, 1);
+    setsockopt(SYSLOG, IPPROTO_TCP, TCP_NODELAY, 1);
+    if (!connect(SYSLOG,$that)) {
+       push(@{$errs}, "tcp connect: $!");
+       return 0;
+    }
+    $syslog_send = \&_syslog_send_socket;
+    return 1;
+}
+
+sub connect_udp {
+    my ($errs) = @_;
     unless ($host) {
        require Sys::Hostname;
        my($host_uniq) = Sys::Hostname::hostname();
        ($host) = $host_uniq =~ /([A-Za-z0-9_.-]+)/; # allow FQDN (inc _)
     }
-    unless ( $sock_type ) {
-        my $udp = getprotobyname('udp')                 || croak "getprotobyname failed for udp";
-        my $syslog = getservbyname('syslog','udp')      || croak "getservbyname failed";
-        my $this = sockaddr_in($syslog, INADDR_ANY);
-        my $that = sockaddr_in($syslog, inet_aton($host) || croak "Can't lookup $host");
-        socket(SYSLOG,AF_INET,SOCK_DGRAM,$udp)           || croak "socket: $!";
-        connect(SYSLOG,$that)                            || croak "connect: $!";
+    my $udp = getprotobyname('udp');
+    if (!defined $udp) {
+       push(@{$errs}, "getprotobyname failed for udp");
+       return 0;
+    }
+    my $syslog = getservbyname('syslog','udp');
+    if (!defined $syslog) {
+       push(@{$errs}, "getservbyname failed for udp");
+       return 0;
+    }
+    my $this = sockaddr_in($syslog, INADDR_ANY);
+    my $that = sockaddr_in($syslog, inet_aton($host));
+    if (!$that) {
+       push(@{$errs}, "can't lookup $host");
+       return 0;
+    }
+    if (!socket(SYSLOG,AF_INET,SOCK_DGRAM,$udp)) {
+       push(@{$errs}, "udp socket: $!");
+       return 0;
+    }
+    if (!connect(SYSLOG,$that)) {
+       push(@{$errs}, "udp connect: $!");
+       return 0;
+    }
+    # We want to check that the UDP connect worked. However the only
+    # way to do that is to send a message and see if an ICMP is returned
+    _syslog_send_socket("");
+    if (!connection_ok()) {
+       push(@{$errs}, "udp connect: nobody listening");
+       return 0;
+    }
+    $syslog_send = \&_syslog_send_socket;
+    return 1;
+}
+
+sub connect_stream {
+    my ($errs) = @_;
+    # might want syslog_path to be variable based on syslog.h (if only
+    # it were in there!)
+    $syslog_path = '/dev/conslog'; 
+    if (!-w $syslog_path) {
+       push(@{$errs}, "stream $syslog_path is not writable");
+       return 0;
+    }
+    if (!open(SYSLOG, ">" . $syslog_path)) {
+       push(@{$errs}, "stream can't open $syslog_path: $!");
+       return 0;
+    }
+    $syslog_send = \&_syslog_send_stream;
+    return 1;
+}
+
+sub connect_unix {
+    my ($errs) = @_;
+    if (length _PATH_LOG()) {
+       $syslog_path = _PATH_LOG();
     } else {
-        my $syslog = _PATH_LOG();
-       length($syslog)                                  || croak "_PATH_LOG unavailable in syslog.h";
-        my $that = sockaddr_un($syslog)                  || croak "Can't locate $syslog";
-        socket(SYSLOG,AF_UNIX,SOCK_STREAM,0)             || croak "socket: $!";
+        push(@{$errs}, "_PATH_LOG not available in syslog.h");
+       return 0;
+    }
+    my $that = sockaddr_un($syslog_path);
+    if (!$that) {
+       push(@{$errs}, "can't locate $syslog_path");
+       return 0;
+    }
+    if (!socket(SYSLOG,AF_UNIX,SOCK_STREAM,0)) {
+       push(@{$errs}, "unix stream socket: $!");
+       return 0;
+    }
+    if (!connect(SYSLOG,$that)) {
+        if (!socket(SYSLOG,AF_UNIX,SOCK_DGRAM,0)) {
+           push(@{$errs}, "unix dgram socket: $!");
+           return 0;
+       }
         if (!connect(SYSLOG,$that)) {
-            socket(SYSLOG,AF_UNIX,SOCK_DGRAM,0)          || croak "socket: $!";
-            connect(SYSLOG,$that) || croak "connect: $! (SOCK_DGRAM after trying SOCK_STREAM)";
-        }
+           push(@{$errs}, "unix dgram connect: $!");
+           return 0;
+       }
     }
-    local($old) = select(SYSLOG); $| = 1; select($old);
-    $connected = 1;
+    $syslog_send = \&_syslog_send_socket;
+    return 1;
+}
+
+sub connect_console {
+    my ($errs) = @_;
+    if (!-w '/dev/console') {
+       push(@{$errs}, "console is not writable");
+       return 0;
+    }
+    $syslog_send = \&_syslog_send_console;
+    return 1;
+}
+
+# to test if the connection is still good, we need to check if any
+# errors are present on the connection. The errors will not be raised
+# by a write. Instead, sockets are made readable and the next read
+# would cause the error to be returned. Unfortunately the syslog 
+# 'protocol' never provides anything for us to read. But with 
+# judicious use of select(), we can see if it would be readable...
+sub connection_ok {
+    return 1 if ($current_proto eq 'console');
+    my $rin = '';
+    vec($rin, fileno(SYSLOG), 1) = 1;
+    my $ret = select $rin, undef, $rin, 0;
+    return ($ret ? 0 : 1);
 }
 
 sub disconnect {
     close SYSLOG;
     $connected = 0;
+    $syslog_send = undef;
 }
 
 1;
index 35c1b94..37f7dee 100644 (file)
@@ -1,5 +1,15 @@
 Revision history for Perl extension Unicode::Normalize.
 
+0.16  Thu Mar 21 13:36:14 2002
+       - synchronization with bleadperl.
+       - Change 15318: by jhi
+       - Change 15319: by jhi
+
+0.15  Tue Mar 19 22:04:07 2002
+       - Quick check is implemented.
+       - decompose(), reorder(), and compose() are documented.
+       - The Non-XS version is also independent of Lingua::KO::Hangul::Util.
+
 0.14  Sat Feb 02 20:40:14 2002
        - synchronization with bleadperl.
        - Change 14128: by Arthur
index cec5fa7..52d1232 100644 (file)
@@ -11,7 +11,7 @@ use strict;
 use warnings;
 use Carp;
 
-our $VERSION = '0.14';
+our $VERSION = '0.16';
 our $PACKAGE = __PACKAGE__;
 
 require Exporter;
@@ -22,9 +22,16 @@ our @ISA = qw(Exporter DynaLoader);
 our @EXPORT = qw( NFC NFD NFKC NFKD );
 our @EXPORT_OK = qw(
     normalize decompose reorder compose
-    getCanon getCompat getComposite getCombinClass isExclusion
+    checkNFD checkNFKD checkNFC checkNFKC check
+    getCanon getCompat getComposite getCombinClass
+    isExclusion isSingleton isNonStDecomp isComp2nd isComp_Ex
+    isNFD_NO isNFC_NO isNFC_MAYBE isNFKD_NO isNFKC_NO isNFKC_MAYBE
+);
+our %EXPORT_TAGS = (
+    all       => [ @EXPORT, @EXPORT_OK ],
+    normalize => [ @EXPORT, qw/normalize decompose reorder compose/ ],
+    check     => [ qw/checkNFD checkNFKD checkNFC checkNFKC check/ ],
 );
-our %EXPORT_TAGS = ( all => [ @EXPORT, @EXPORT_OK ] );
 
 bootstrap Unicode::Normalize $VERSION;
 
@@ -32,7 +39,6 @@ use constant COMPAT => 1;
 
 sub NFD  ($) { reorder(decompose($_[0])) }
 sub NFKD ($) { reorder(decompose($_[0], COMPAT)) }
-
 sub NFC  ($) { compose(reorder(decompose($_[0]))) }
 sub NFKC ($) { compose(reorder(decompose($_[0], COMPAT))) }
 
@@ -48,6 +54,18 @@ sub normalize($$)
       croak $PACKAGE."::normalize: invalid form name: $form";
 }
 
+sub check($$)
+{
+    my $form = shift;
+    $form =~ s/^NF//;
+    return
+       $form eq 'D'  ? checkNFD ($_[0]) :
+       $form eq 'C'  ? checkNFC ($_[0]) :
+       $form eq 'KD' ? checkNFKD($_[0]) :
+       $form eq 'KC' ? checkNFKC($_[0]) :
+      croak $PACKAGE."::check: invalid form name: $form";
+}
+
 1;
 __END__
 
@@ -59,19 +77,19 @@ Unicode::Normalize - normalized forms of Unicode text
 
   use Unicode::Normalize;
 
-  $string_NFD  = NFD($raw_string);  # Normalization Form D
-  $string_NFC  = NFC($raw_string);  # Normalization Form C
-  $string_NFKD = NFKD($raw_string); # Normalization Form KD
-  $string_NFKC = NFKC($raw_string); # Normalization Form KC
+  $NFD_string  = NFD($string);  # Normalization Form D
+  $NFC_string  = NFC($string);  # Normalization Form C
+  $NFKD_string = NFKD($string); # Normalization Form KD
+  $NFKC_string = NFKC($string); # Normalization Form KC
 
    or
 
   use Unicode::Normalize 'normalize';
 
-  $string_NFD  = normalize('D',  $raw_string);  # Normalization Form D
-  $string_NFC  = normalize('C',  $raw_string);  # Normalization Form C
-  $string_NFKD = normalize('KD', $raw_string);  # Normalization Form KD
-  $string_NFKC = normalize('KC', $raw_string);  # Normalization Form KC
+  $NFD_string  = normalize('D',  $string);  # Normalization Form D
+  $NFC_string  = normalize('C',  $string);  # Normalization Form C
+  $NFKD_string = normalize('KD', $string);  # Normalization Form KD
+  $NFKC_string = normalize('KC', $string);  # Normalization Form KC
 
 =head1 DESCRIPTION
 
@@ -79,26 +97,25 @@ Unicode::Normalize - normalized forms of Unicode text
 
 =over 4
 
-=item C<$string_NFD = NFD($raw_string)>
+=item C<$NFD_string = NFD($string)>
 
 returns the Normalization Form D (formed by canonical decomposition).
 
-
-=item C<$string_NFC = NFC($raw_string)>
+=item C<$NFC_string = NFC($string)>
 
 returns the Normalization Form C (formed by canonical decomposition
 followed by canonical composition).
 
-=item C<$string_NFKD = NFKD($raw_string)>
+=item C<$NFKD_string = NFKD($string)>
 
 returns the Normalization Form KD (formed by compatibility decomposition).
 
-=item C<$string_NFKC = NFKC($raw_string)>
+=item C<$NFKC_string = NFKC($string)>
 
 returns the Normalization Form KC (formed by compatibility decomposition
 followed by B<canonical> composition).
 
-=item C<$normalized_string = normalize($form_name, $raw_string)>
+=item C<$normalized_string = normalize($form_name, $string)>
 
 As C<$form_name>, one of the following names must be given.
 
@@ -109,6 +126,107 @@ As C<$form_name>, one of the following names must be given.
 
 =back
 
+=head2 Decomposition and Composition
+
+=over 4
+
+=item C<$decomposed_string = decompose($string)>
+
+=item C<$decomposed_string = decompose($string, $useCompatMapping)>
+
+Decompose the specified string and returns the result.
+
+If the second parameter (a boolean) is omitted or false, decomposes it
+using the Canonical Decomposition Mapping.
+If true, decomposes it using the Compatibility Decomposition Mapping.
+
+The string returned is not always in NFD/NFKD.
+Reordering may be required.
+
+    $NFD_string  = reorder(decompose($string));       # eq. to NFD()
+    $NFKD_string = reorder(decompose($string, TRUE)); # eq. to NFKD()
+
+=item C<$reordered_string  = reorder($string)>
+
+Reorder the combining characters and the like in the canonical ordering
+and returns the result.
+
+E.g., when you have a list of NFD/NFKD strings,
+you can get the concatenated NFD/NFKD string from them, saying
+
+    $concat_NFD  = reorder(join '', @NFD_strings);
+    $concat_NFKD = reorder(join '', @NFKD_strings);
+
+=item C<$composed_string   = compose($string)>
+
+Returns the string where composable pairs are composed.
+
+E.g., when you have a NFD/NFKD string,
+you can get its NFC/NFKC string, saying
+
+    $NFC_string  = compose($NFD_string);
+    $NFKC_string = compose($NFKD_string);
+
+=back
+
+=head2 Quick Check
+
+(see Annex 8, UAX #15; F<DerivedNormalizationProperties.txt>)
+
+The following functions check whether the string is in that normalization form.
+
+The result returned will be:
+
+    YES     The string is in that normalization form.
+    NO      The string is not in that normalization form.
+    MAYBE   Dubious. Maybe yes, maybe no.
+
+=over 4
+
+=item C<$result = checkNFD($string)>
+
+returns YES (1) or NO (empty string).
+
+=item C<$result = checkNFC($string)>
+
+returns YES (1), NO (empty string), or MAYBE (undef).
+
+=item C<$result = checkNFKD($string)>
+
+returns YES (1) or NO (empty string).
+
+=item C<$result = checkNFKC($string)>
+
+returns YES (1), NO (empty string), or MAYBE (undef).
+
+=item C<$result = check($form_name, $string)>
+
+returns YES (1), NO (empty string), or MAYBE (undef).
+
+C<$form_name> is alike to that for C<normalize()>.
+
+=back
+
+B<Note>
+
+In the cases of NFD and NFKD, the answer must be either C<YES> or C<NO>.
+The answer C<MAYBE> may be returned in the cases of NFC and NFKC.
+
+A MAYBE-NFC/NFKC string should contain at least
+one combining character or the like.
+For example, C<COMBINING ACUTE ACCENT> has
+the MAYBE_NFC/MAYBE_NFKC property.
+Both C<checkNFC("A\N{COMBINING ACUTE ACCENT}")>
+and C<checkNFC("B\N{COMBINING ACUTE ACCENT}")> will return C<MAYBE>.
+Though, C<"A\N{COMBINING ACUTE ACCENT}"> is not in NFC 
+(its NFC is C<"\N{LATIN CAPITAL LETTER A WITH ACUTE}">),
+while C<"B\N{COMBINING ACUTE ACCENT}"> is in NFC.
+
+If you want to check exactly, compare the string with its NFC/NFKC; i.e.,
+
+    $string eq NFC($string)    # more thorough than checkNFC($string)
+    $string eq NFKC($string)   # more thorough than checkNFKC($string)
+
 =head2 Character Data
 
 These functions are interface of character data used internally.
@@ -119,30 +237,54 @@ call them yourself.
 
 =item C<$canonical_decomposed = getCanon($codepoint)>
 
+If the character of the specified codepoint is canonically
+decomposable (including Hangul Syllables),
+returns the B<completely decomposed> string canonically equivalent to it.
+
+If it is not decomposable, returns undef.
+
 =item C<$compatibility_decomposed = getCompat($codepoint)>
 
-If the character of the specified codepoint is canonically or 
-compatibility decomposable (including Hangul Syllables),
-returns the B<completely decomposed> string equivalent to it.
+If the character of the specified codepoint is compatibility
+decomposable (including Hangul Syllables),
+returns the B<completely decomposed> string compatibility equivalent to it.
 
 If it is not decomposable, returns undef.
 
-=item C<$uv_composite = getComposite($uv_here, $uv_next)>
+=item C<$codepoint_composite = getComposite($codepoint_here, $codepoint_next)>
 
 If two characters here and next (as codepoints) are composable
-(including Hangul Jamo/Syllables and Exclusions),
+(including Hangul Jamo/Syllables and Composition Exclusions),
 returns the codepoint of the composite.
 
 If they are not composable, returns undef.
 
 =item C<$combining_class = getCombinClass($codepoint)>
 
-Returns the combining class as integer of the character.
+Returns the combining class of the character as an integer.
 
 =item C<$is_exclusion = isExclusion($codepoint)>
 
+Returns a boolean whether the character of the specified codepoint
+is a composition exclusion.
+
+=item C<$is_singleton = isSingleton($codepoint)>
+
 Returns a boolean whether the character of the specified codepoint is
-a composition exclusion.
+a singleton.
+
+=item C<$is_non_startar_decomposition = isNonStDecomp($codepoint)>
+
+Returns a boolean whether the canonical decomposition
+of the character of the specified codepoint
+is a Non-Starter Decomposition.
+
+=item C<$may_be_composed_with_prev_char = isComp2nd($codepoint)>
+
+Returns a boolean whether the character of the specified codepoint
+may be composed with the previous one in a certain composition
+(including Hangul Compositions, but excluding
+Composition Exclusions and Non-Starter Decompositions).
 
 =back
 
@@ -152,16 +294,6 @@ C<NFC>, C<NFD>, C<NFKC>, C<NFKD>: by default.
 
 C<normalize> and other some functions: on request.
 
-=head2 TODO
-
-Unicode::Normalize has not been ported to EBCDIC.  The code mostly
-would work just fine but a decision needs to be made: how the module
-should work in EBCDIC?  Should the low 256 characters be understood as
-Unicode or as EBCDIC code points?  Should one be chosen or should
-there be a way to do either?  Or should such translation be left
-outside the module for the user to do, for example by using
-Encode::from_to()?
-
 =head1 AUTHOR
 
 SADAHIRO Tomoyuki, E<lt>SADAHIRO@cpan.orgE<gt>
@@ -181,6 +313,10 @@ SADAHIRO Tomoyuki, E<lt>SADAHIRO@cpan.orgE<gt>
 
 Unicode Normalization Forms - UAX #15
 
+=item http://www.unicode.org/Public/UNIDATA/DerivedNormalizationProperties.txt
+
+Derived Normalization Properties
+
 =back
 
 =cut
index 7a11095..3cb221f 100644 (file)
@@ -62,16 +62,19 @@ int compare_cc(const void *a, const void *b)
 {
     int ret_cc;
     ret_cc = (*(UNF_cc*)a).cc - (*(UNF_cc*)b).cc;
-    if(ret_cc) return ret_cc;
+    if (ret_cc)
+       return ret_cc;
     return (*(UNF_cc*)a).pos - (*(UNF_cc*)b).pos;
 }
 
 U8* dec_canonical (UV uv)
 {
     U8 ***plane, **row;
-    if(OVER_UTF_MAX(uv)) return NULL;
+    if (OVER_UTF_MAX(uv))
+       return NULL;
     plane = (U8***)UNF_canon[uv >> 16];
-    if(! plane) return NULL;
+    if (! plane)
+       return NULL;
     row = plane[(uv >> 8) & 0xff];
     return row ? row[uv & 0xff] : NULL;
 }
@@ -79,9 +82,11 @@ U8* dec_canonical (UV uv)
 U8* dec_compat (UV uv)
 {
     U8 ***plane, **row;
-    if(OVER_UTF_MAX(uv)) return NULL;
+    if (OVER_UTF_MAX(uv))
+       return NULL;
     plane = (U8***)UNF_compat[uv >> 16];
-    if(! plane) return NULL;
+    if (! plane)
+       return NULL;
     row = plane[(uv >> 8) & 0xff];
     return row ? row[uv & 0xff] : NULL;
 }
@@ -90,25 +95,30 @@ UV composite_uv (UV uv, UV uv2)
 {
     UNF_complist ***plane, **row, *cell, *i;
 
-    if(! uv2 || OVER_UTF_MAX(uv) || OVER_UTF_MAX(uv2)) return 0;
+    if (! uv2 || OVER_UTF_MAX(uv) || OVER_UTF_MAX(uv2))
+       return 0;
 
-    if(Hangul_IsL(uv) && Hangul_IsV(uv2)) {
+    if (Hangul_IsL(uv) && Hangul_IsV(uv2)) {
        uv  -= Hangul_LBase; /* lindex */
        uv2 -= Hangul_VBase; /* vindex */
        return(Hangul_SBase + (uv * Hangul_VCount + uv2) * Hangul_TCount);
     }
-    if(Hangul_IsLV(uv) && Hangul_IsT(uv2)) {
+    if (Hangul_IsLV(uv) && Hangul_IsT(uv2)) {
        uv2 -= Hangul_TBase; /* tindex */
        return(uv + uv2);
     }
     plane = UNF_compos[uv >> 16];
-    if(! plane) return 0;
+    if (! plane)
+       return 0;
     row = plane[(uv >> 8) & 0xff];
-    if(! row)   return 0;
+    if (! row)
+       return 0;
     cell = row[uv & 0xff];
-    if(! cell)  return 0;
-    for(i = cell; i->nextchar; i++) {
-       if(uv2 == i->nextchar) return i->composite;
+    if (! cell)
+       return 0;
+    for (i = cell; i->nextchar; i++) {
+       if (uv2 == i->nextchar)
+           return i->composite;
     }
     return 0;
 }
@@ -116,9 +126,11 @@ UV composite_uv (UV uv, UV uv2)
 U8 getCombinClass (UV uv)
 {
     U8 **plane, *row;
-    if(OVER_UTF_MAX(uv)) return 0;
+    if (OVER_UTF_MAX(uv))
+       return 0;
     plane = (U8**)UNF_combin[uv >> 16];
-    if(! plane) return 0;
+    if (! plane)
+       return 0;
     row = plane[(uv >> 8) & 0xff];
     return row ? row[uv & 0xff] : 0;
 }
@@ -128,7 +140,8 @@ void sv_cat_decompHangul (SV* sv, UV uv)
     UV sindex, lindex, vindex, tindex;
     U8 *t, tmp[3 * UTF8_MAXLEN + 1];
 
-    if(! Hangul_IsS(uv)) return;
+    if (! Hangul_IsS(uv))
+       return;
 
     sindex =  uv - Hangul_SBase;
     lindex =  sindex / Hangul_NCount;
@@ -138,7 +151,8 @@ void sv_cat_decompHangul (SV* sv, UV uv)
     t = tmp;
     t = uvuni_to_utf8(t, (lindex + Hangul_LBase));
     t = uvuni_to_utf8(t, (vindex + Hangul_VBase));
-    if (tindex) t = uvuni_to_utf8(t, (tindex + Hangul_TBase));
+    if (tindex)
+       t = uvuni_to_utf8(t, (tindex + Hangul_TBase));
     *t = '\0';
     sv_catpvn(sv, (char *)tmp, strlen((char *)tmp));
 }
@@ -157,7 +171,7 @@ decompose(arg, compat = &PL_sv_no)
     U8 *s, *e, *p, *r;
     bool iscompat;
   CODE:
-    if(SvUTF8(arg)) {
+    if (SvUTF8(arg)) {
        src = arg;
     } else {
        src = sv_mortalcopy(arg);
@@ -171,14 +185,17 @@ decompose(arg, compat = &PL_sv_no)
 
     s = (U8*)SvPV(src,srclen);
     e = s + srclen;
-    for(p = s; p < e;){
+    for (p = s; p < e;) {
        uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
        p += retlen;
-       if(Hangul_IsS(uv)) sv_cat_decompHangul(dst, uv);
+       if (Hangul_IsS(uv))
+           sv_cat_decompHangul(dst, uv);
        else {
            r = iscompat ? dec_compat(uv) : dec_canonical(uv);
-           if(r) sv_catpv(dst, (char *)r);
-           else  sv_catpvn(dst, (char *)p - retlen, retlen);
+           if (r)
+               sv_catpv(dst, (char *)r);
+           else
+               sv_catpvn(dst, (char *)p - retlen, retlen);
        }
     }
     RETVAL = dst;
@@ -192,22 +209,33 @@ reorder(arg)
     SV * arg
   PROTOTYPE: $
   PREINIT:
-    SV *src;
-    STRLEN srclen, retlen, stk_cc_max;
-    U8 *s, *e, *p, curCC;
+    SV *src, *dst;
+    STRLEN srclen, dstlen, retlen, stk_cc_max;
+    U8 *s, *e, *p, *d, curCC;
     UV uv;
     UNF_cc * stk_cc;
   CODE:
-    src = newSVsv(arg);
-    if(! SvUTF8(arg)) sv_utf8_upgrade(src);
+    if (SvUTF8(arg)) {
+       src = arg;
+    } else {
+       src = sv_mortalcopy(arg);
+       sv_utf8_upgrade(src);
+    }
+
+    s = (U8*)SvPV(src, srclen);
+
+    dstlen = srclen + 1;
+    dst = newSV(dstlen);
+    sv_setpvn(dst,(const char*)s,srclen);
+    SvUTF8_on(dst);
 
     stk_cc_max = 10; /* enough as an initial value? */
     New(0, stk_cc, stk_cc_max, UNF_cc);
 
-    s = (U8*)SvPV(src,srclen);
-    e = s + srclen;
+    d = (U8*)SvPV(dst,dstlen);
+    e = d + dstlen;
 
-    for(p = s; p < e;){
+    for (p = d; p < e;) {
        U8 *cc_in;
        STRLEN cc_len, cc_iter, cc_pos;
 
@@ -215,20 +243,24 @@ reorder(arg)
        curCC = getCombinClass(uv);
        p += retlen;
 
-       if(! (curCC && p < e)) continue; else cc_in = p - retlen;
+       if (! (curCC && p < e))
+           continue;
+       else
+           cc_in = p - retlen;
 
        cc_pos = 0;
        stk_cc[cc_pos].cc  = curCC;
        stk_cc[cc_pos].uv  = uv;
        stk_cc[cc_pos].pos = cc_pos;
 
-       while(p < e) {
+       while (p < e) {
            uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
            curCC = getCombinClass(uv);
-           if(!curCC) break;
+           if (!curCC)
+               break;
            p += retlen;
            cc_pos++;
-           if(stk_cc_max <= cc_pos) { /* extend if need */
+           if (stk_cc_max <= cc_pos) { /* extend if need */
                stk_cc_max = cc_pos + 1;
                Renew(stk_cc, stk_cc_max, UNF_cc);
            }
@@ -238,18 +270,19 @@ reorder(arg)
        }
 
         /* only one c.c. in cc_len from cc_in, no need of reordering */
-       if(!cc_pos) continue;
+       if (!cc_pos)
+           continue;
 
        qsort((void*)stk_cc, cc_pos + 1, sizeof(UNF_cc), compare_cc);
 
        cc_len = p - cc_in;
        p = cc_in;
-       for(cc_iter = 0; cc_iter <= cc_pos; cc_iter++) {
+       for (cc_iter = 0; cc_iter <= cc_pos; cc_iter++) {
            p = uvuni_to_utf8(p, stk_cc[cc_iter].uv);
        }
     }
     Safefree(stk_cc);
-    RETVAL = src;
+    RETVAL = dst;
   OUTPUT:
     RETVAL
 
@@ -266,7 +299,7 @@ compose(arg)
     STRLEN srclen, dstlen, tmplen, retlen;
     bool beginning = TRUE;
   CODE:
-    if(SvUTF8(arg)) {
+    if (SvUTF8(arg)) {
        src = arg;
     } else {
        src = sv_mortalcopy(arg);
@@ -286,12 +319,12 @@ compose(arg)
     (void)SvPOK_only(tmp);
     SvUTF8_on(tmp);
 
-    for(p = s; p < e;){
-       if(beginning) {
+    for (p = s; p < e;) {
+       if (beginning) {
            uvS = utf8n_to_uvuni(p, e - p, &retlen, 0);
            p += retlen;
 
-            if (getCombinClass(uvS)){ /* no Starter found yet */
+            if (getCombinClass(uvS)) { /* no Starter found yet */
                d = uvuni_to_utf8(d, uvS);
                continue;
            }
@@ -303,20 +336,18 @@ compose(arg)
        preCC = 0;
 
     /* to the next Starter */
-       while(p < e) {
+       while (p < e) {
            uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
            p += retlen;
            curCC = getCombinClass(uv);
 
-           if(preCC && preCC == curCC) {
+           if (preCC && preCC == curCC) {
                preCC = curCC;
                t = uvuni_to_utf8(t, uv);
            } else {
                uvComp = composite_uv(uvS, uv);
 
-       /* S + C + S => S-S + C would be also blocked. */
-               if( uvComp && ! isExclusion(uvComp) && preCC <= curCC)
-               {
+               if (uvComp && ! isExclusion(uvComp) && preCC <= curCC) {
                    STRLEN leftcur, rightcur, dstcur;
                    leftcur  = UNISKIP(uvComp);
                    rightcur = UNISKIP(uvS) + UNISKIP(uv);
@@ -326,7 +357,6 @@ compose(arg)
                        dstlen += leftcur - rightcur;
                        d = (U8*)SvGROW(dst,dstlen) + dstcur;
                    }
-
                    /* preCC not changed to curCC */
                    uvS = uvComp;
                } else if (! curCC && p < e) { /* blocked */
@@ -341,7 +371,8 @@ compose(arg)
        tmplen = t - tmp_start;
        if (tmplen) { /* uncomposed combining char */
            t = (U8*)SvPVX(tmp);
-           while(tmplen--) *d++ = *t++;
+           while (tmplen--)
+               *d++ = *t++;
        }
        uvS = uv;
     } /* for */
@@ -352,13 +383,169 @@ compose(arg)
 
 
 
+void
+checkNFD(arg)
+    SV * arg
+  PROTOTYPE: $
+  ALIAS:
+    checkNFKD = 1
+  PREINIT:
+    UV uv;
+    SV *src;
+    STRLEN srclen, retlen;
+    U8 *s, *e, *p, curCC, preCC;
+  PPCODE:
+    if (SvUTF8(arg)) {
+       src = arg;
+    } else {
+       src = sv_mortalcopy(arg);
+       sv_utf8_upgrade(src);
+    }
+    
+    s = (U8*)SvPV(src,srclen);
+    e = s + srclen;
+
+    preCC = 0;
+    for (p = s; p < e; p += retlen) {
+       uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
+       curCC = getCombinClass(uv);
+       if (preCC > curCC && curCC != 0) /* canonical ordering violated */
+           XSRETURN_NO;
+       if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv)))
+           XSRETURN_NO;
+       preCC = curCC;
+    }
+    XSRETURN_YES;
+
+
+
+void
+checkNFC(arg)
+    SV * arg
+  PROTOTYPE: $
+  ALIAS:
+    checkNFKC = 1
+  PREINIT:
+    UV uv;
+    SV *src;
+    STRLEN srclen, retlen;
+    U8 *s, *e, *p, curCC, preCC;
+    bool isMAYBE;
+  PPCODE:
+    if (SvUTF8(arg)) {
+       src = arg;
+    } else {
+       src = sv_mortalcopy(arg);
+       sv_utf8_upgrade(src);
+    }
+    
+    s = (U8*)SvPV(src,srclen);
+    e = s + srclen;
+
+    preCC = 0;
+    isMAYBE = FALSE;
+    for (p = s; p < e; p += retlen) {
+       uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
+       curCC = getCombinClass(uv);
+
+       if (preCC > curCC && curCC != 0) /* canonical ordering violated */
+           XSRETURN_NO;
+
+       /* get NFC/NFKC property */
+       if (Hangul_IsS(uv)) /* Hangul syllables are canonical composites */
+           ; /* YES */
+       else if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv))
+           XSRETURN_NO;
+       else if (isComp2nd(uv))
+           isMAYBE = TRUE;
+       else if (ix) {
+           char *canon, *compat;
+        /*
+         * NFKC_NO when having compatibility mapping;
+         * i.e. dec_compat(uv) defined & different with dec_canonical(uv).
+         */
+           canon  = (char *) dec_canonical(uv);
+           compat = (char *) dec_compat(uv);
+           if (compat && (!canon || strNE(canon, compat)))
+               XSRETURN_NO;
+       } /* end of get NFC/NFKC property */
+
+       preCC = curCC;
+    }
+    if (isMAYBE)
+       XSRETURN_UNDEF;
+    else
+       XSRETURN_YES;
+
+
+
 U8
 getCombinClass(uv)
     UV uv
+  PROTOTYPE: $
 
 bool
 isExclusion(uv)
     UV uv
+  PROTOTYPE: $
+
+bool
+isSingleton(uv)
+    UV uv
+  PROTOTYPE: $
+
+bool
+isNonStDecomp(uv)
+    UV uv
+  PROTOTYPE: $
+
+bool
+isComp2nd(uv)
+    UV uv
+  PROTOTYPE: $
+  ALIAS:
+    isNFC_MAYBE  = 1
+    isNFKC_MAYBE = 2
+
+
+
+void
+isNFD_NO(uv)
+    UV uv
+  PROTOTYPE: $
+  ALIAS:
+    isNFKD_NO = 1
+  PPCODE:
+    if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv)))
+       XSRETURN_YES; /* NFD_NO or NFKD_NO */
+    else
+       XSRETURN_NO;
+
+
+
+void
+isComp_Ex(uv)
+    UV uv
+  PROTOTYPE: $
+  ALIAS:
+    isNFC_NO  = 0
+    isNFKC_NO = 1
+  PPCODE:
+    if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv))
+       XSRETURN_YES; /* NFC_NO or NFKC_NO */
+    else if (ix) {
+       char *canon, *compat;
+       canon  = (char *) dec_canonical(uv);
+       compat = (char *) dec_compat(uv);
+       if (compat && (!canon || strNE(canon, compat)))
+           XSRETURN_YES; /* NFC_NO or NFKC_NO */
+       else
+           XSRETURN_NO;
+    }
+    else
+       XSRETURN_NO;
+
+
 
 SV*
 getComposite(uv, uv2)
@@ -373,6 +560,8 @@ getComposite(uv, uv2)
   OUTPUT:
     RETVAL
 
+
+
 SV*
 getCanon(uv)
     UV uv
@@ -382,7 +571,7 @@ getCanon(uv)
   PREINIT:
     U8 * rstr;
   CODE:
-    if(Hangul_IsS(uv)) {
+    if (Hangul_IsS(uv)) {
        SV * dst;
        dst = newSV(1);
        (void)SvPOK_only(dst);
@@ -390,7 +579,8 @@ getCanon(uv)
        RETVAL = dst;
     } else {
        rstr = ix ? dec_compat(uv) : dec_canonical(uv);
-       if(!rstr) XSRETURN_UNDEF;
+       if (!rstr)
+           XSRETURN_UNDEF;
        RETVAL = newSVpvn((char *)rstr, strlen((char *)rstr));
     }
     SvUTF8_on(RETVAL);
index 2404f2f..1f28333 100644 (file)
@@ -1,4 +1,4 @@
-Unicode/Normalize version 0.14
+Unicode/Normalize version 0.15
 ===================================
 
 Unicode::Normalize - normalized forms of Unicode text
@@ -7,23 +7,26 @@ SYNOPSIS
 
   use Unicode::Normalize;
 
-  $string_NFD  = NFD($string);  # Normalization Form D
-  $string_NFC  = NFC($string);  # Normalization Form C
-  $string_NFKD = NFKD($string); # Normalization Form KD
-  $string_NFKC = NFKC($string); # Normalization Form KC
+  $NFD_string  = NFD($string);  # Normalization Form D
+  $NFC_string  = NFC($string);  # Normalization Form C
+  $NFKD_string = NFKD($string); # Normalization Form KD
+  $NFKC_string = NFKC($string); # Normalization Form KC
+
+
+  or
 
-   or
 
   use Unicode::Normalize 'normalize';
 
-  $string_NFD  = normalize('D',  $string);  # Normalization Form D
-  $string_NFC  = normalize('C',  $string);  # Normalization Form C
-  $string_NFKD = normalize('KD', $string);  # Normalization Form KD
-  $string_NFKC = normalize('KC', $string);  # Normalization Form KC
+  $NFD_string  = normalize('D',  $string);  # Normalization Form D
+  $NFC_string  = normalize('C',  $string);  # Normalization Form C
+  $NFKD_string = normalize('KD', $string);  # Normalization Form KD
+  $NFKC_string = normalize('KC', $string);  # Normalization Form KC
+
 
 INSTALLATION
 
-Perl 5.006 or later
+Perl 5.6 or later
 
 To install this module type the following:
 
@@ -58,26 +61,30 @@ Exporter
 File::Copy
 File::Spec
 
-unicore/CombiningClass.pl
-  (or unicode/CombiningClass.pl)
-unicore/Decomposition.pl
-  (or unicode/Decomposition.pl)
-unicore/CompositionExclusions.txt
-  (or unicode/CompExcl.txt)
+unicore/CombiningClass.pl         (or unicode/CombiningClass.pl)
+unicore/Decomposition.pl          (or unicode/Decomposition.pl)
+unicore/CompositionExclusions.txt (or unicode/CompExcl.txt)
 
-# CAVEAT:
-# In bleadperl, unicore/CompExcl.txt is renamed
-# unicore/CompositionExclusions.txt.
+CAVEAT
 
-And for the NoXS version, in addition to the above,
+(1) In bleadperl, unicore/CompExcl.txt is renamed
+  unicore/CompositionExclusions.txt.
 
-  Lingua::KO::Hangul::Util 0.06
+(2) When these unicore/*.* files are updated;
 
-is required.
+  in the case of an XS version:
+    You must rebuild the module,
+    as the data will be compiled on building.
+
+  in the case of a NoXS version:
+    Rebuilding is not necessary,
+    as the data will be read on requirement.
 
 COPYRIGHT AND LICENCE
 
-SADAHIRO Tomoyuki, E<lt>SADAHIRO@cpan.orgE<gt>
+  SADAHIRO Tomoyuki
+
+  SADAHIRO@cpan.org
 
   http://homepage1.nifty.com/nomenclator/perl/
 
@@ -85,4 +92,3 @@ SADAHIRO Tomoyuki, E<lt>SADAHIRO@cpan.orgE<gt>
 
   This program is free software; you can redistribute it and/or
   modify it under the same terms as Perl itself.
-
index 12c5aa8..67a132b 100644 (file)
@@ -14,257 +14,316 @@ use Carp;
 our $PACKAGE = 'Unicode::Normalize, mkheader';
 
 our $Combin = do "unicore/CombiningClass.pl"
-  || do "unicode/CombiningClass.pl"
-  || croak "$PACKAGE: CombiningClass.pl not found";
+    || do "unicode/CombiningClass.pl"
+    || croak "$PACKAGE: CombiningClass.pl not found";
 
 our $Decomp = do "unicore/Decomposition.pl"
-  || do "unicode/Decomposition.pl"
-  || croak "$PACKAGE: Decomposition.pl not found";
+    || do "unicode/Decomposition.pl"
+    || croak "$PACKAGE: Decomposition.pl not found";
 
 our %Combin; # $codepoint => $number      : combination class
 our %Canon;  # $codepoint => $hexstring   : canonical decomp.
 our %Compat; # $codepoint => $hexstring   : compat. decomp.
 our %Compos; # $string    => $codepoint   : composite
-
 our %Exclus; # $codepoint => 1            : composition exclusions
+our %Single; # $codepoint => 1            : singletons
+our %NonStD; # $codepoint => 1            : non-starter decompositions
 
 {
-  my($f, $fh);
-  foreach my $d (@INC) {
-    use File::Spec;
-    $f = File::Spec->catfile($d, "unicore", "CompositionExclusions.txt");
-    last if open($fh, $f);
-    $f = File::Spec->catfile($d, "unicode", "CompExcl.txt");
-    last if open($fh, $f);
-    $f = undef;
-  }
-  croak "$PACKAGE: CompExcl.txt not found in @INC" unless defined $f;
-  while(<$fh>) {
-    next if /^#/ or /^$/;
-    s/#.*//;
-    $Exclus{ hex($1) } =1 if /([0-9A-Fa-f]+)/;
-  }
-  close $fh;
+    my($f, $fh);
+    foreach my $d (@INC) {
+       use File::Spec;
+       $f = File::Spec->catfile($d, "unicore", "CompositionExclusions.txt");
+       last if open($fh, $f);
+       $f = File::Spec->catfile($d, "unicode", "CompExcl.txt");
+       last if open($fh, $f);
+       $f = undef;
+    }
+       croak "$PACKAGE: CompExcl.txt not found in @INC" unless defined $f;
+       while (<$fh>) {
+           next if /^#/ or /^$/;
+           s/#.*//;
+           $Exclus{ hex($1) } =1 if /([0-9A-Fa-f]+)/;
+       }
+    close $fh;
 }
 
-while($Combin =~ /(.+)/g) {
-  my @tab = split /\t/, $1;
-  my $ini = hex $tab[0];
-  if($tab[1] eq '') {
-    $Combin{ $ini } = $tab[2];
-  } else {
-    $Combin{ $_ } = $tab[2] foreach $ini .. hex($tab[1]);
-  }
+while ($Combin =~ /(.+)/g) {
+    my @tab = split /\t/, $1;
+    my $ini = hex $tab[0];
+    if ($tab[1] eq '') {
+       $Combin{ $ini } = $tab[2];
+    } else {
+       $Combin{ $_ } = $tab[2] foreach $ini .. hex($tab[1]);
+    }
 }
 
-while($Decomp =~ /(.+)/g) {
-  my @tab = split /\t/, $1;
-  my $compat = $tab[2] =~ s/<[^>]+>//;
-  my $dec = [ _getHexArray($tab[2]) ]; # decomposition
-  my $com = pack('U*', @$dec); # composable sequence
-  my $ini = hex($tab[0]);
-  if($tab[1] eq '') {
-    $Compat{ $ini } = $dec;
-    if(! $compat) {
-      $Canon{  $ini } = $dec;
-      $Compos{ $com } = $ini if @$dec > 1;
+while ($Decomp =~ /(.+)/g) {
+    my @tab = split /\t/, $1;
+    my $compat = $tab[2] =~ s/<[^>]+>//;
+    my $dec = [ _getHexArray($tab[2]) ]; # decomposition
+    my $com = pack('U*', @$dec); # composable sequence
+    my $ini = hex($tab[0]); # initial decomposable character
+    if ($tab[1] eq '') {
+       $Compat{ $ini } = $dec;
+
+       if (! $compat) {
+           $Canon{  $ini } = $dec;
+
+           if (@$dec > 1) {
+               if ($Combin{ $dec->[0] }) {
+                   $NonStD{ $ini } = 1;
+               } else {
+                   $Compos{ $com } = $ini;
+               }
+           } else {
+               $Single{ $ini } = 1;
+           }
+       }
+    } else {
+       foreach my $u ($ini .. hex($tab[1])){
+           $Compat{ $u } = $dec;
+           if (! $compat) {
+               $Canon{  $u }   = $dec;
+
+               if (@$dec > 1) {
+                   if ($Combin{ $dec->[0] }) {
+                       $NonStD{ $u } = 1;
+                   } else {
+                       $Compos{ $com } = $u;
+                   }
+               } else {
+                   $Single{ $u } = 1;
+               }
+           }
+       }
     }
-  } else {
-    foreach my $u ($ini .. hex($tab[1])){
-      $Compat{ $u } = $dec;
-      if(! $compat){
-        $Canon{  $u }   = $dec;
-        $Compos{ $com } = $ini if @$dec > 1;
-      }
-    }
-  }
 }
 
 # exhaustive decomposition
 foreach my $key (keys %Canon) {
-  $Canon{$key}  = [ getCanonList($key) ];
+    $Canon{$key}  = [ getCanonList($key) ];
 }
 
 # exhaustive decomposition
 foreach my $key (keys %Compat) { 
-  $Compat{$key} = [ getCompatList($key) ];
+    $Compat{$key} = [ getCompatList($key) ];
 }
 
 sub getCanonList {
-  my @src = @_;
-  my @dec = map $Canon{$_} ? @{ $Canon{$_} } : $_, @src;
-  join(" ",@src) eq join(" ",@dec) ? @dec : getCanonList(@dec);
-  # condition @src == @dec is not ok.
+    my @src = @_;
+    my @dec = map $Canon{$_} ? @{ $Canon{$_} } : $_, @src;
+    return join(" ",@src) eq join(" ",@dec) ? @dec : getCanonList(@dec);
+    # condition @src == @dec is not ok.
 }
 
 sub getCompatList {
-  my @src = @_;
-  my @dec = map $Compat{$_} ? @{ $Compat{$_} } : $_, @src;
-  join(" ",@src) eq join(" ",@dec) ? @dec : getCompatList(@dec);
-  # condition @src == @dec is not ok.
+    my @src = @_;
+    my @dec = map $Compat{$_} ? @{ $Compat{$_} } : $_, @src;
+    return join(" ",@src) eq join(" ",@dec) ? @dec : getCompatList(@dec);
+    # condition @src == @dec is not ok.
 }
 
-sub _getHexArray {
-  my $str = shift;
-  map hex(), $str =~ /([0-9A-Fa-f]+)/g;
-}
+sub _getHexArray { map hex, $_[0] =~ /([0-9A-Fa-f]+)/g }
 
 sub _U_stringify {
-  sprintf '"%s"', join '',
-    map sprintf("\\x%02x", $_), unpack 'C*', pack 'U*', @_;
+    sprintf '"%s"', join '',
+       map sprintf("\\x%02x", $_), unpack 'C*', pack 'U*', @_;
 }
 
 foreach my $hash (\%Canon, \%Compat) {
-  foreach my $key (keys %$hash) {
-    $hash->{$key} = _U_stringify( @{ $hash->{$key} } );
-  }
+    foreach my $key (keys %$hash) {
+       $hash->{$key} = _U_stringify( @{ $hash->{$key} } );
+    }
 }
 
 my $prefix = "UNF_";
-
 my $structname = "${prefix}complist";
 
-our (%Comp1st, %CompList);
+our (%Comp1st, %Comp2nd, %CompList);
 
-foreach(sort keys %Compos) {
-  my @a = unpack('U*', $_);
-  my $val = $Compos{$_};
-  my $name = sprintf "${structname}_%06x", $a[0];
-  $Comp1st{ $a[0] } = $name;
-  $CompList{ $name }{ $a[1] } = $val;
+foreach (sort keys %Compos) {
+    my @a = unpack('U*', $_);
+    my $val = $Compos{$_};
+    my $name = sprintf "${structname}_%06x", $a[0];
+    $Comp1st{$a[0]} = $name;
+    $Comp2nd{$a[1]} = 1 if ! $Exclus{$Compos{$_}} && ! $Combin{$a[0]};
+    $CompList{$name}{$a[1]} = $val;
+}
+
+# modern HANGUL JUNGSEONG and HANGUL JONGSEONG jamo
+foreach (0x1161..0x1175, 0x11A8..0x11C2) {
+    $Comp2nd{$_} = 1;
 }
 
 my $compinit =
-  "typedef struct { UV nextchar; UV composite; } $structname;\n\n";
+    "typedef struct { UV nextchar; UV composite; } $structname;\n\n";
 
 foreach my $i (sort keys %CompList) {
-  $compinit .= "$structname $i [] = {\n";
-  $compinit .= join ",\n", 
-    map sprintf("\t{ %d, %d }", $_, $CompList{$i}{$_}),
-    sort {$a <=> $b } keys %{ $CompList{$i} };
-  $compinit .= ",\n{0,0}\n};\n\n"; # with sentinel
+    $compinit .= "$structname $i [] = {\n";
+    $compinit .= join ",\n",
+       map sprintf("\t{ %d, %d }", $_, $CompList{$i}{$_}),
+           sort {$a <=> $b } keys %{ $CompList{$i} };
+    $compinit .= ",\n{0,0}\n};\n\n"; # with sentinel
 }
 
 ####################################
 
-my @Exclus = sort {$a <=> $b} keys %Exclus;
+my @boolfunc = (
+    {
+       name => "Exclusion",
+       type => "bool",
+       hash => \%Exclus,
+    },
+    {
+       name => "Singleton",
+       type => "bool",
+       hash => \%Single,
+    },
+    {
+       name => "NonStDecomp",
+       type => "bool",
+       hash => \%NonStD,
+    },
+    {
+       name => "Comp2nd",
+       type => "bool",
+       hash => \%Comp2nd,
+    },
+);
 
 my $file = "unfexc.h";
 open FH, ">$file" or croak "$PACKAGE: $file can't be made";
 binmode FH; select FH;
 
-print "bool isExclusion (UV uv) \n{\nreturn\n\t";
+    print << 'EOF';
+/*
+ * This file is auto-generated by mkheader.
+ * Any changes here will be lost!
+ */
+EOF
 
-while(@Exclus) {
-  my $cur = shift @Exclus;
-  if(@Exclus && $cur + 1 == $Exclus[0]) {
-    print "($cur <= uv && uv <= ";
-    while(@Exclus && $cur + 1 == $Exclus[0]) {
-      $cur = shift @Exclus;
+foreach my $tbl (@boolfunc) {
+    my @temp = sort {$a <=> $b} keys %{$tbl->{hash}};
+    my $type = $tbl->{type};
+    my $name = $tbl->{name};
+    print "$type is$name (UV uv)\n{\nreturn\n\t";
+
+    while (@temp) {
+       my $cur = shift @temp;
+       if (@temp && $cur + 1 == $temp[0]) {
+           print "($cur <= uv && uv <= ";
+           while (@temp && $cur + 1 == $temp[0]) {
+               $cur = shift @temp;
+           }
+           print "$cur)";
+           print "\n\t|| " if @temp;
+       } else {
+           print "uv == $cur";
+           print "\n\t|| " if @temp;
+       }
     }
-    print "$cur)";
-    print "\n\t|| " if @Exclus;
-  } else {
-    print "uv == $cur";
-    print "\n\t|| " if @Exclus;
-  }
+    print "\n\t? TRUE : FALSE;\n}\n\n";
 }
 
-print "\n\t? TRUE : FALSE;\n}\n\n";
 close FH;
 
+
 ####################################
 
 my @tripletable = (
-  {
-    file => "unfcmb",
-    name => "combin",
-    type => "STDCHAR",
-    hash => \%Combin,
-    null =>  0,
-  },
-  {
-    file => "unfcan",
-    name => "canon",
-    type => "char*",
-    hash => \%Canon,
-    null => "NULL",
-  },
-  {
-    file => "unfcpt",
-    name => "compat",
-    type => "char*",
-    hash => \%Compat,
-    null => "NULL",
-  },
-  {
-    file => "unfcmp",
-    name => "compos",
-    type => "$structname *",
-    hash => \%Comp1st,
-    null => "NULL",
-    init => $compinit,
-  },
+    {
+       file => "unfcmb",
+       name => "combin",
+       type => "STDCHAR",
+       hash => \%Combin,
+       null =>  0,
+    },
+    {
+       file => "unfcan",
+       name => "canon",
+       type => "char*",
+       hash => \%Canon,
+       null => "NULL",
+    },
+    {
+       file => "unfcpt",
+       name => "compat",
+       type => "char*",
+       hash => \%Compat,
+       null => "NULL",
+    },
+    {
+       file => "unfcmp",
+       name => "compos",
+       type => "$structname *",
+       hash => \%Comp1st,
+       null => "NULL",
+       init => $compinit,
+    },
 );
 
 foreach my $tbl (@tripletable) {
-  my $file = "$tbl->{file}.h";
-  my $head = "${prefix}$tbl->{name}";
-  my $type = $tbl->{type};
-  my $hash = $tbl->{hash};
-  my $null = $tbl->{null};
-  my $init = $tbl->{init};
-
-  open FH, ">$file" or croak "$PACKAGE: $file can't be made";
-  binmode FH; select FH;
-  my %val;
-
-  print FH << 'EOF';
+    my $file = "$tbl->{file}.h";
+    my $head = "${prefix}$tbl->{name}";
+    my $type = $tbl->{type};
+    my $hash = $tbl->{hash};
+    my $null = $tbl->{null};
+    my $init = $tbl->{init};
+
+    open FH, ">$file" or croak "$PACKAGE: $file can't be made";
+    binmode FH; select FH;
+    my %val;
+
+    print FH << 'EOF';
 /*
  * This file is auto-generated by mkheader.
  * Any changes here will be lost!
  */
 EOF
 
-  print $init if defined $init;
-
-  foreach my $uv (keys %$hash) {
-    my @c = unpack 'CCCC', pack 'N', $uv;
-    $val{ $c[1] }{ $c[2] }{ $c[3] } = $hash->{$uv};
-  }
-
-  foreach my $p (sort { $a <=> $b } keys %val) {
-    next if ! $val{ $p };
-    for(my $r = 0; $r < 256; $r++){
-      next if ! $val{ $p }{ $r };
-      printf "$type ${head}_%02x_%02x [256] = {\n", $p, $r;
-      for(my $c = 0; $c < 256; $c++){
-        print "\t", defined $val{$p}{$r}{$c}
-         ? "($type)".$val{$p}{$r}{$c} : $null;
-        print ','  if $c != 255;
-        print "\n" if $c % 8 == 7;
-      }
-      print "};\n\n";
+    print $init if defined $init;
+
+    foreach my $uv (keys %$hash) {
+       my @c = unpack 'CCCC', pack 'N', $uv;
+       $val{ $c[1] }{ $c[2] }{ $c[3] } = $hash->{$uv};
+    }
+
+    foreach my $p (sort { $a <=> $b } keys %val) {
+       next if ! $val{ $p };
+       for (my $r = 0; $r < 256; $r++) {
+           next if ! $val{ $p }{ $r };
+           printf "$type ${head}_%02x_%02x [256] = {\n", $p, $r;
+           for (my $c = 0; $c < 256; $c++) {
+               print "\t", defined $val{$p}{$r}{$c}
+                   ? "($type)".$val{$p}{$r}{$c}
+                   : $null;
+               print ','  if $c != 255;
+               print "\n" if $c % 8 == 7;
+           }
+           print "};\n\n";
+       }
+    }
+    foreach my $p (sort { $a <=> $b } keys %val) {
+       next if ! $val{ $p };
+       printf "$type* ${head}_%02x [256] = {\n", $p;
+       for (my $r = 0; $r < 256; $r++) {
+           print $val{ $p }{ $r }
+               ? sprintf("${head}_%02x_%02x", $p, $r)
+               : "NULL";
+           print ','  if $r != 255;
+           print "\n" if $val{ $p }{ $r } || ($r+1) % 8 == 0;
+       }
+       print "};\n\n";
     }
-  }
-  foreach my $p (sort { $a <=> $b } keys %val) {
-    next if ! $val{ $p };
-    printf "$type* ${head}_%02x [256] = {\n", $p;
-    for(my $r = 0; $r < 256; $r++){
-      print $val{ $p }{ $r } ? sprintf("${head}_%02x_%02x", $p, $r) : "NULL";
-      print ','  if $r != 255;
-      print "\n" if $val{ $p }{ $r } || ($r+1) % 8 == 0;
+    print "$type** $head [] = {\n";
+    for (my $p = 0; $p <= 0x10; $p++) {
+       print $val{ $p } ? sprintf("${head}_%02x", $p) : "NULL";
+       print ','  if $p != 0x10;
+       print "\n";
     }
     print "};\n\n";
-  }
-  print "$type** $head [] = {\n";
-  for(my $p = 0; $p <= 0x10; $p++){
-    print $val{ $p } ? sprintf("${head}_%02x", $p) : "NULL";
-    print ','  if $p != 0x10;
-    print "\n";
-  }
-  print "};\n\n";
-  close FH;
+    close FH;
 }
 
 __END__
index c436a7c..86320cc 100644 (file)
@@ -3,8 +3,8 @@
 
 BEGIN {
     if (ord("A") == 193) {
-       print "1..0 # Unicode::Normalize not ported to EBCDIC\n";
-       exit 0;
+       print "1..0 # Unicode::Normalize not ported to EBCDIC\n";
+       exit 0;
     }
 }
 
@@ -13,7 +13,7 @@ BEGIN {
 use Test;
 use strict;
 use warnings;
-BEGIN { plan tests => 6 };
+BEGIN { plan tests => 10 };
 use Unicode::Normalize qw(:all);
 ok(1); # If we made it this far, we're ok.
 
@@ -22,7 +22,7 @@ ok(1); # If we made it this far, we're ok.
 print getCombinClass(   0) == 0
    && getCombinClass( 768) == 230
    && getCombinClass(1809) == 36
-#  && getCombinClass(119143) == 1
+#  && getCombinClass(119143) == 1 # U+1D167, a Unicode 3.1 character
   ? "ok" : "not ok", " 2\n";
 
 print ! defined getCanon( 0)
@@ -68,13 +68,60 @@ print ! defined getComposite( 0,  0)
    && 0xADF8 == getComposite(0x1100, 0x1173)
    && ! defined getComposite(0x1100, 0x11AF)
    && ! defined getComposite(0x1173, 0x11AF)
+   && ! defined getComposite(0xAC00, 0x11A7)
+   && 0xAC01 == getComposite(0xAC00, 0x11A8)
    && 0xAE00 == getComposite(0xADF8, 0x11AF)
   ? "ok" : "not ok", " 5\n";
 
 print ! isExclusion( 0)
    && ! isExclusion(41)
-   && isExclusion(2392)
-   && isExclusion(3907)
-   && isExclusion(64334)
+   && isExclusion(2392)  # DEVANAGARI LETTER QA
+   && isExclusion(3907)  # TIBETAN LETTER GHA
+   && isExclusion(64334) # HEBREW LETTER PE WITH RAFE
   ? "ok" : "not ok", " 6\n";
 
+print ! isSingleton( 0)
+   && isSingleton(0x212B) # ANGSTROM SIGN
+  ? "ok" : "not ok", " 7\n";
+
+print reorder("") eq ""
+   && reorder(pack("U*", 0x0041, 0x0300, 0x0315, 0x0313, 0x031b, 0x0061))
+      eq pack("U*", 0x0041, 0x031b, 0x0300, 0x0313, 0x0315, 0x0061)
+   && reorder(pack("U*", 0x00C1, 0x0300, 0x0315, 0x0313, 0x031b,
+       0x0061, 0x309A, 0x3099))
+      eq pack("U*", 0x00C1, 0x031b, 0x0300, 0x0313, 0x0315,
+       0x0061, 0x309A, 0x3099)
+  ? "ok" : "not ok", " 8\n";
+
+sub answer { defined $_[0] ? $_[0] ? "YES" : "NO" : "MAYBE" }
+
+print answer(checkNFD(""))  eq "YES"
+  &&  answer(checkNFC(""))  eq "YES"
+  &&  answer(checkNFKD("")) eq "YES"
+  &&  answer(checkNFKC("")) eq "YES"
+  &&  answer(check("NFD", "")) eq "YES"
+  &&  answer(check("NFC", "")) eq "YES"
+  &&  answer(check("NFKD","")) eq "YES"
+  &&  answer(check("NFKC","")) eq "YES"
+# U+0000 to U+007F are prenormalized in all the normalization forms.
+  && answer(checkNFD("AZaz\t12!#`"))  eq "YES"
+  && answer(checkNFC("AZaz\t12!#`"))  eq "YES"
+  && answer(checkNFKD("AZaz\t12!#`")) eq "YES"
+  && answer(checkNFKC("AZaz\t12!#`")) eq "YES"
+  && answer(check("D", "AZaz\t12!#`")) eq "YES"
+  && answer(check("C", "AZaz\t12!#`")) eq "YES"
+  && answer(check("KD","AZaz\t12!#`")) eq "YES"
+  && answer(check("KC","AZaz\t12!#`")) eq "YES"
+  ? "ok" : "not ok", " 9\n";
+
+print 1
+  && answer(checkNFD(NFD(pack('U*', 0xC1, 0x1100, 0x1173, 0x11AF)))) eq "YES"
+  && answer(checkNFD(pack('U*', 0x20, 0xC1, 0x1100, 0x1173, 0x11AF))) eq "NO"
+  && answer(checkNFC(pack('U*', 0x20, 0xC1, 0x1173, 0x11AF))) eq "MAYBE"
+  && answer(checkNFC(pack('U*', 0x20, 0xC1, 0xAE00, 0x1100))) eq "YES"
+  && answer(checkNFC(pack('U*', 0x20, 0xC1, 0xAE00, 0x1100, 0x300))) eq "MAYBE"
+  && answer(checkNFC(pack('U*', 0x20, 0xC1, 0xFF71, 0x2025))) eq "YES"
+  && answer(check("NFC", pack('U*', 0x20, 0xC1, 0x212B, 0x300))) eq "NO"
+  && answer(checkNFKD(pack('U*', 0x20, 0xC1, 0xFF71, 0x2025))) eq "NO"
+  && answer(checkNFKC(pack('U*', 0x20, 0xC1, 0xAE00, 0x2025))) eq "NO"
+  ? "ok" : "not ok", " 10\n";
index 142f09a..73f100d 100644 (file)
@@ -28,7 +28,7 @@ import(...)
        if (!PL_compcv || !(cv = CvOUTSIDE(PL_compcv)))
            croak("can't set attributes outside a subroutine scope");
        if (ckWARN(WARN_DEPRECATED))
-           Perl_warner(aTHX_ WARN_DEPRECATED,
+           Perl_warner(aTHX_ packWARN(WARN_DEPRECATED),
                        "pragma \"attrs\" is deprecated, "
                        "use \"sub NAME : ATTRS\" instead");
        for (i = 1; i < items; i++) {
diff --git a/gv.c b/gv.c
index 6fd5ff7..5b32b0d 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -1821,7 +1821,7 @@ Perl_is_gv_magical(pTHX_ char *name, STRLEN len, U32 flags)
        break;
     case '\017':   /* $^O & $^OPEN */
        if (len == 1
-           || (len == 4 && strEQ(name, "\027PEN")))
+           || (len == 4 && strEQ(name, "\017PEN")))
        {
            goto yes;
        }
index f236303..aa99f27 100644 (file)
@@ -31,11 +31,12 @@ else
        sed -e 's/HP-//' -e 1q`;
     selecttype='int *'
     fi
-    # For some strange reason, the u32align test from Configure hangs in
-    # HP-UX 10.20 since the December 2001 patches.  So hint it to avoid
-    # the test.
-    if [ "$xxOsRevMajor" -le 10 ]; then
-       d_u32align=$define
+
+# For some strange reason, the u32align test from Configure hangs in
+# HP-UX 10.20 since the December 2001 patches.  So hint it to avoid
+# the test.
+if [ "$xxOsRevMajor" -le 10 ]; then
+    d_u32align=$define
     fi
 
 echo "Archname is $archname"
@@ -73,11 +74,11 @@ case `$cc -v 2>&1`"" in
                # Done too late in Configure if hinted
                gccversion=`$cc --version`
                fi
-           case "$gccversion" in
-               [012]*) # HP-UX and gcc-2.* break UINT32_MAX :-(
-                       ccflags="$ccflags -DUINT32_MAX_BROKEN"
-                       ;;
-               esac
+           case "$gccversion" in
+               [012]*) # HP-UX and gcc-2.* break UINT32_MAX :-(
+                       ccflags="$ccflags -DUINT32_MAX_BROKEN"
+                       ;;
+               esac
            case "`getconf KERNEL_BITS 2>/dev/null`" in
                *64*)
                    echo "main(){}">try.c
@@ -101,12 +102,12 @@ case `$cc -v 2>&1`"" in
                            gnu_ld=yes
                            ;;
                        *)                      # HPld
-                           case "$gccversion" in
-                               [12]*)
-                                   ldflags="$ldflags -Wl,+vnocompatwarnings"
-                                   ccflags="$ccflags -Wl,+vnocompatwarnings"
-                                   ;;
-                               esac
+                          case "$gccversion" in
+                              [12]*)
+                                  ldflags="$ldflags -Wl,+vnocompatwarnings"
+                                  ccflags="$ccflags -Wl,+vnocompatwarnings"
+                                  ;;
+                              esac
                            ;;
                        esac
                    rm -f try.c
@@ -168,16 +169,16 @@ case "$archname" in
        so='so'
        ;;
     *)
-    case "$uselongdouble" in
-       *) ;;
-       $define|true|[yY]*)
-           cat <<EOM >&4
+       case "$uselongdouble" in
+           *) ;;
+           $define|true|[yY]*)
+               cat <<EOM >&4
 
 *** long doubles are not (yet) supported on HP-UX (any version)
 *** Until it does, we cannot continue, aborting.
 EOM
-           exit 1 ;;
-       esac
+               exit 1 ;;
+           esac
        ;;
     esac
 
@@ -349,14 +350,14 @@ case "$ccisgcc" in
            esac
        case "$optimize" in
            *-O*|\
-           *O2*)    opt=`echo "$optimize" | sed -e 's/-O/+O2/' -e 's/O2/O1/' -e 's/ *+Onolimit//'`
+           *O2*)   opt=`echo "$optimize" | sed -e 's/-O/+O2/' -e 's/O2/O1/' -e 's/ *+Onolimit//'`
                    ;;
-           *)  opt="$optimize"
-               ;;
-               esac
+           *)      opt="$optimize"
+                   ;;
+           esac
        if [ $maxdsiz -le 64 ]; then
-               toke_cflags="$toke_cflags;optimize=\"$opt\""
-               regexec_cflags="optimize=\"$opt\""
+           toke_cflags="$toke_cflags;optimize=\"$opt\""
+           regexec_cflags="optimize=\"$opt\""
            fi
        case "$archname" in
            IA64*)
@@ -397,7 +398,7 @@ ccflags_uselargefiles="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
        *) ccflags="$ccflags $ccflags_uselargefiles" ;;
        esac
 
-        if test -z "$ccisgcc" -a -z "$gccversion"; then
+       if test -z "$ccisgcc" -a -z "$gccversion"; then
            # The strict ANSI mode (-Aa) doesn't like large files.
            ccflags=`echo " $ccflags "|sed 's@ -Aa @ @g'`
            case "$ccflags" in
@@ -432,10 +433,10 @@ EOM
                if [ -f /usr/lib/libcma.sl ]; then
                    # DCE (from Core OS CD) is installed
 
-                   # Check if it is pristine, or patched
-                   cmavsn=`what /usr/lib/libcma.sl 2>&1 | grep 1996`
-                   if [ ! -z "$cmavsn" ]; then
-                       cat <<EOM >&4
+                  # Check if it is pristine, or patched
+                  cmavsn=`what /usr/lib/libcma.sl 2>&1 | grep 1996`
+                  if [ ! -z "$cmavsn" ]; then
+                      cat <<EOM >&4
 \a
 ***************************************************************************
 
@@ -450,8 +451,8 @@ consider to upgrade using patch PHSS_23672 (read README.hpux)
 
 (sleeping for 10 seconds...)
 EOM
-                         sleep 10
-                       fi
+                      sleep 10
+                      fi
 
                    # It needs # libcma and OLD_PTHREADS_API. Also
                    # <pthread.h> needs to be #included before any
index e1c2c28..4c40980 100644 (file)
@@ -249,18 +249,22 @@ esac
 cat > UU/usethreads.cbu <<'EOCBU'
 case "$usethreads" in
 $define|true|[yY]*)
-        ccflags="-D_GNU_SOURCE -D_REENTRANT $ccflags"
+        ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags"
         set `echo X "$libswanted "| sed -e 's/ c / pthread c /'`
         shift
         libswanted="$*"
+
        # Somehow at least in Debian 2.2 these manage to escape
        # the #define forest of <features.h> and <time.h> so that
        # the hasproto macro of Configure doesn't see these protos,
-       # regardless of the -D_GNU_SOURCE that should turn on everything.
+       # even with the -D_GNU_SOURCE.
+
        d_asctime_r_proto="$define"
+       d_crypt_r_proto="$define"
        d_ctime_r_proto="$define"
        d_gmtime_r_proto="$define"
        d_localtime_r_proto="$define"
+
        ;;
 esac
 EOCBU
index 37142d0..c377f94 100644 (file)
@@ -409,6 +409,8 @@ EOM
        # Ditto. (Solaris 7)
        d_readdir_r_proto="$define"
        d_readdir64_r_proto="$define"
+       d_tmpnam_r_proto="$define"
+       d_ttyname_r_proto="$define"
 
        ;;
 esac
index 31d6449..94125c5 100644 (file)
@@ -515,6 +515,8 @@ PERLVARI(IOpSpace,I32,0)
 PERLVAR(IOpSlab,I32 *)
 #endif
 
+PERLVAR(Iwantutf8, bool)       /* want utf8 as the default discipline */
+
 /* New variables must be added to the very end for binary compatibility.
  * XSUB.h provides wrapper functions via perlapi.h that make this
  * irrelevant, but not all code may be expected to #include XSUB.h. */
similarity index 99%
rename from lib/ExtUtils/t/ExtUtils.t
rename to lib/ExtUtils/t/Constant.t
index e63d117..5b6bf56 100644 (file)
@@ -403,6 +403,7 @@ if ($^O eq 'MSWin32' && $make eq 'nmake') { $make .= " -nologo"; }
 
 my @makeout;
 
+if ($^O eq 'VMS') { $make .= ' all'; }
 print "# make = '$make'\n";
 @makeout = `$make`;
 if ($?) {
@@ -413,6 +414,8 @@ if ($?) {
   print "ok 3\n";
 }
 
+if ($^O eq 'VMS') { $make =~ s{ all}{}; }
+
 if ($Config{usedl}) {
   print "ok 4\n";
 } else {
index f1ac4f5..86dd61f 100644 (file)
@@ -2,12 +2,12 @@
 
 package Getopt::Long;
 
-# RCS Status      : $Id: GetoptLong.pm,v 2.54 2002-02-20 15:00:10+01 jv Exp $
+# RCS Status      : $Id: GetoptLong.pm,v 2.55 2002-03-13 13:06:44+01 jv Exp $
 # Author          : Johan Vromans
 # Created On      : Tue Sep 11 15:00:12 1990
 # Last Modified By: Johan Vromans
-# Last Modified On: Wed Feb 20 15:00:04 2002
-# Update Count    : 1045
+# Last Modified On: Wed Mar 13 12:54:01 2002
+# Update Count    : 1070
 # Status          : Released
 
 ################ Copyright ################
@@ -35,10 +35,10 @@ use 5.004;
 use strict;
 
 use vars qw($VERSION);
-$VERSION        =  2.28;
+$VERSION        =  2.29;
 # For testing versions only.
 use vars qw($VERSION_STRING);
-$VERSION_STRING = "2.28";
+$VERSION_STRING = "2.29";
 
 use Exporter;
 
@@ -70,7 +70,6 @@ sub ConfigDefaults ();
 sub ParseOptionSpec ($$);
 sub OptCtl ($);
 sub FindOption ($$$$);
-sub Croak (@);                 # demand loading the real Croak
 
 ################ Local Variables ################
 
@@ -168,8 +167,8 @@ sub new {
     }
 
     if ( %atts ) {             # Oops
-       Getopt::Long::Croak(__PACKAGE__.": unhandled attributes: ".
-                           join(" ", sort(keys(%atts))));
+       die(__PACKAGE__.": unhandled attributes: ".
+           join(" ", sort(keys(%atts)))."\n");
     }
 
     $self;
@@ -261,7 +260,7 @@ sub GetOptions {
     $error = '';
 
     print STDERR ("GetOpt::Long $Getopt::Long::VERSION (",
-                 '$Revision: 2.54 $', ") ",
+                 '$Revision: 2.55 $', ") ",
                  "called from package \"$pkg\".",
                  "\n  ",
                  "ARGV: (@ARGV)",
@@ -504,7 +503,7 @@ sub GetOptions {
                    else {
                        print STDERR ("Invalid REF type \"", ref($linkage{$opt}),
                                      "\" in linkage\n");
-                       Croak ("Getopt::Long -- internal error!\n");
+                       die("Getopt::Long -- internal error!\n");
                    }
                }
                # No entry in linkage means entry in userlinkage.
@@ -713,10 +712,8 @@ sub ParseOptionSpec ($$) {
     }
 
     if ( $dups && $^W ) {
-       require 'Carp.pm';
-       $Carp::CarpLevel = 2;
        foreach ( split(/\n+/, $dups) ) {
-           Carp::cluck($_);
+           warn($_."\n");
        }
     }
     ($names[0], $orig);
@@ -757,7 +754,7 @@ sub FindOption ($$$$) {
 
     #### Look it up ###
 
-    my $tryopt;                        # option to try
+    my $tryopt = $opt;         # option to try
 
     if ( $bundling && $starter eq '-' ) {
 
@@ -1011,7 +1008,7 @@ sub FindOption ($$$$) {
        }
     }
     else {
-       Croak ("GetOpt::Long internal error (Can't happen)\n");
+       die("GetOpt::Long internal error (Can't happen)\n");
     }
     return (1, $opt, $ctl, $arg, $key);
 }
@@ -1090,7 +1087,7 @@ sub Configure (@) {
            # Turn into regexp. Needs to be parenthesized!
            $genprefix = "(" . quotemeta($genprefix) . ")";
            eval { '' =~ /$genprefix/; };
-           Croak ("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
+           die("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
        }
        elsif ( $try =~ /^prefix_pattern=(.+)$/ && $action ) {
            $genprefix = $1;
@@ -1098,13 +1095,13 @@ sub Configure (@) {
            $genprefix = "(" . $genprefix . ")"
              unless $genprefix =~ /^\(.*\)$/;
            eval { '' =~ /$genprefix/; };
-           Croak ("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
+           die("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
        }
        elsif ( $try eq 'debug' ) {
            $debug = $action;
        }
        else {
-           Croak ("Getopt::Long: unknown config parameter \"$opt\"")
+           die("Getopt::Long: unknown config parameter \"$opt\"")
        }
     }
     $prevconfig;
@@ -1115,13 +1112,6 @@ sub config (@) {
     Configure (@_);
 }
 
-# To prevent Carp from being loaded unnecessarily.
-sub Croak (@) {
-    require 'Carp.pm';
-    $Carp::CarpLevel = 1;
-    Carp::croak(@_);
-};
-
 ################ Documentation ################
 
 =head1 NAME
index 004dfab..95489d5 100644 (file)
@@ -1,3 +1,12 @@
+Changes in version 2.29
+-----------------------
+
+* Fix a problem where options were not recognized when both
+  auto_abbrev and ignore_case were disabled. Thanks to Seth Robertson
+  <seth@systemdetection.com>.
+
+* Remove Carp.
+
 Changes in version 2.28
 -----------------------
 
index dd2f0bf..1ae81c9 100644 (file)
@@ -492,8 +492,6 @@ END_OF_HEAD
                if (/^=(head[1-6])\s+(.*\S)/s) {        # =head[1-6] heading
                    process_head( $1, $2, $doindex && $index );
                } elsif (/^=item\s*(.*\S)?/sm) {        # =item text
-                   warn "$0: $podfile: =item without bullet, number or text"
-                      . " in paragraph $paragraph.\n" if !defined($1) or $1 eq '';
                    $need_dd = process_item( $1 );
                    $after_item = 1;
                } elsif (/^=over\s*(.*)/) {             # =over N
index 4c32825..a684d67 100644 (file)
@@ -223,6 +223,7 @@ undef $o;
 untie @a;
 # (79) We can't use check_contents any more, because the object is dead
 open F, "< $file" or die;
+binmode F;
 { local $/ ; $z = <F> }
 close F;
 my $x = join("$:", qw(flushed recordB recordE 
index 2fb1f69..12c9e91 100644 (file)
@@ -250,6 +250,13 @@ sub unwrap {
     }
 }
 
+sub matchlex {
+  (my $var = $_[0]) =~ s/.//;
+  $var eq $_[1] or 
+    ($_[1] =~ /^([!~])(.)([\x00-\xff]*)/) and 
+      ($1 eq '!') ^ (eval { $var =~ /$2$3/ });
+}
+
 sub matchvar {
   $_[0] eq $_[1] or 
     ($_[1] =~ /^([!~])(.)([\x00-\xff]*)/) and 
@@ -326,6 +333,36 @@ sub dumpglob {
     }
 }
 
+sub dumplex {
+  return if $DB::signal;
+  my ($key, $val, $m, @vars) = @_;
+  return if @vars && !grep( matchlex($key, $_), @vars );
+  local %address;
+  my $off = 0;  # It reads better this way
+  my $fileno;
+  if (UNIVERSAL::isa($val,'ARRAY')) {
+    print( (' ' x $off) . "$key = (\n" );
+    unwrap($val,3+$off,$m) ;
+    print( (' ' x $off) .  ")\n" );
+  }
+  elsif (UNIVERSAL::isa($val,'HASH')) {
+    print( (' ' x $off) . "$key = (\n" );
+    unwrap($val,3+$off,$m) ;
+    print( (' ' x $off) .  ")\n" );
+  }
+  elsif (UNIVERSAL::isa($val,'IO')) {
+    print( (' ' x $off) .  "FileHandle($key) => fileno($fileno)\n" );
+  }
+  #  No lexical subroutines yet...
+  #  elsif (UNIVERSAL::isa($val,'CODE')) {
+  #    dumpsub($off, $$val);
+  #  }
+  else {
+    print( (' ' x $off) . &unctrl($key), " = " );
+    DumpElem $$val, 3+$off, $m;
+  }
+}
+
 sub CvGV_name_or_bust {
   my $in = shift;
   return if $skipCvGV;         # Backdoor to avoid problems if XS broken...
index 7d59d9a..f66cb5b 100644 (file)
@@ -48,7 +48,7 @@ sub _get_locale_encoding {
            } elsif ($country_language =~ /^zh_CN|chin(?:a|ese)?$/i) {
                $locale_encoding = 'euc-cn';
            } elsif ($country_language =~ /^zh_TW|taiwan(?:ese)?$/i) {
-               $locale_encoding = 'big5';
+               $locale_encoding = 'euc-tw';
            }
            croak "Locale encoding 'euc' too ambiguous"
                if $locale_encoding eq 'euc';
@@ -90,7 +90,10 @@ sub import {
                }
                $std = 1;
            } else {
-               unless(PerlIO::Layer::->find($layer)) {
+               my $target = $layer;            # the layer name itself
+               $target =~ s/^(\w+)\(.+\)$/$1/; # strip parameters
+
+               unless(PerlIO::Layer::->find($target)) {
                    carp("Unknown discipline layer '$layer'");
                }
            }
@@ -242,6 +245,11 @@ pragma.
 
 =back
 
+If your locale environment variables (LANGUAGE, LC_ALL, LC_CTYPE, LANG)
+contain the strings 'UTF-8' or 'UTF8' (case-insensitive matching),
+the default encoding of your STDIN, STDOUT, and STDERR, and of
+B<any subsequent file open>, is UTF-8.
+
 Directory handles may also support disciplines in future.
 
 =head1 NONPERLIO FUNCTIONALITY
index 158510d..093fc2c 100644 (file)
@@ -316,6 +316,8 @@ sub eval {
 #   + m(methods),   M(modules)        # ...           (was m,v)
 #   + o(option)                       # lc            (was O)
 #   + v(view code), V(view Variables) # ...           (was w,V)
+# Changes: 1.18: Mar 17, 2002 Richard Foley <richard.foley@rfi.net>
+#   + fixed missing cmd_O bug
 # 
 ####################################################################
 
@@ -1441,7 +1443,7 @@ sub cmd_wrapper {
        my $call = 'cmd_'.(
                $set{$CommandSet}{$cmd} || $cmd
        );
-       # print "rjsf: cmd_wrapper($cmd): $CommandSet($set{$CommandSet}{$cmd}) => call($call)\n";
+       # print "cmd_wrapper($cmd): $CommandSet($set{$CommandSet}{$cmd}) => call($call)\n";
 
        return &$call($line, $dblineno);
 }
@@ -1885,6 +1887,12 @@ sub cmd_o {
        }
 }
 
+sub cmd_O {
+       print $OUT "The old O command is now the o command.\n";        # hint
+       print $OUT "Use 'h' to get current command help synopsis or\n"; # 
+       print $OUT "use 'o CommandSet=pre580' to revert to old usage\n"; # 
+}
+
 sub cmd_v {
        my $line = shift;
 
@@ -2809,6 +2817,7 @@ I<Data Examination:>     B<expr>     Execute perl code, also see: B<s>,B<n>,B<t>
   B<S> [[B<!>]I<pat>]     List subroutine names [not] matching pattern
   B<V> [I<Pk> [I<Vars>]]  List Variables in Package.  Vars can be ~pattern or !pattern.
   B<X> [I<Vars>]       Same as \"B<V> I<current_package> [I<Vars>]\".
+  B<y> [I<n> [I<Vars>]]   List lexicals in higher scope <n>.  Vars same as B<V>.
 For more help, type B<h> I<cmd_letter>, or run B<$doccmd perldebug> for all docs.
 END_SUM
                                # ')}}; # Fix balance of vi % matching
@@ -2976,6 +2985,7 @@ I<Data Examination:>     B<expr>     Execute perl code, also see: B<s>,B<n>,B<t>
   B<S> [[B<!>]I<pat>]     List subroutine names [not] matching pattern
   B<V> [I<Pk> [I<Vars>]]  List Variables in Package.  Vars can be ~pattern or !pattern.
   B<X> [I<Vars>]       Same as \"B<V> I<current_package> [I<Vars>]\".
+  B<y> [I<n> [I<Vars>]]   List lexicals in higher scope <n>.  Vars same as B<V>.
 For more help, type B<h> I<cmd_letter>, or run B<$doccmd perldebug> for all docs.
 END_SUM
                                # ')}}; # Fix balance of vi % matching
index 22e9030..2c84ab5 100644 (file)
--- a/locale.c
+++ b/locale.c
 #  include <locale.h>
 #endif
 
+#ifdef I_LANGINFO
+#   include <langinfo.h>
+#endif
+
 /*
  * Standardize the locale name from a string returned by 'setlocale'.
  *
@@ -462,10 +466,45 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
 #ifdef USE_LOCALE_NUMERIC
     new_numeric(curnum);
 #endif /* USE_LOCALE_NUMERIC */
+
     }
 
 #endif /* USE_LOCALE */
 
+    {
+        bool wantutf8 = FALSE;
+        char *codeset = NULL;
+#if defined(HAS_NL_LANGINFO) && defined(CODESET)
+        codeset = nl_langinfo(CODESET);
+#endif
+        if (codeset &&
+            (ibcmp(codeset,  "UTF-8", 5) == 0 ||
+             ibcmp(codeset,  "UTF8",  4) == 0))
+             wantutf8 = TRUE;
+#ifdef __GLIBC__
+        if (!wantutf8 && language &&
+            (ibcmp(language, "UTF-8", 5) == 0 ||
+             ibcmp(language, "UTF8",  4) == 0))
+             wantutf8 = TRUE;
+#endif
+        if (!wantutf8 && lc_all &&
+            (ibcmp(lc_all,   "UTF-8", 5) == 0 ||
+             ibcmp(lc_all,   "UTF8",  4) == 0))
+             wantutf8 = TRUE;
+#ifdef USE_LOCALE_CTYPE
+        if (!wantutf8 && curctype &&
+            (ibcmp(curctype,     "UTF-8", 5) == 0 ||
+             ibcmp(curctype,     "UTF8",  4) == 0))
+             wantutf8 = TRUE;
+#endif
+        if (!wantutf8 && lang &&
+            (ibcmp(lang,     "UTF-8", 5) == 0 ||
+             ibcmp(lang,     "UTF8",  4) == 0))
+             wantutf8 = TRUE;
+        if (wantutf8)
+             PL_wantutf8 = TRUE;
+    }
+
 #ifdef USE_LOCALE_CTYPE
     if (curctype != NULL)
        Safefree(curctype);
index 38da198..9b1f348 100644 (file)
--- a/os2/os2.c
+++ b/os2/os2.c
@@ -682,7 +682,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
                    if (flag == P_NOWAIT)
                        flag = P_PM;
                    else if ((flag & 7) != P_PM && (flag & 7) != P_SESSION)
-                       Perl_warner(aTHX_ WARN_EXEC, "Starting PM process with flag=%d, mytype=%d",
+                       Perl_warner(aTHX_ packWARN(WARN_EXEC), "Starting PM process with flag=%d, mytype=%d",
                             flag, os2_mytype);
                }
            }
@@ -693,7 +693,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
                    if (flag == P_NOWAIT)
                        flag = P_SESSION;
                    else if ((flag & 7) != P_SESSION)
-                       Perl_warner(aTHX_ WARN_EXEC, "Starting Full Screen process with flag=%d, mytype=%d",
+                       Perl_warner(aTHX_ packWARN(WARN_EXEC), "Starting Full Screen process with flag=%d, mytype=%d",
                             flag, os2_mytype);
                }
            }
@@ -790,7 +790,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
                    }
                    if (PerlIO_close(file) != 0) { /* Failure */
                      panic_file:
-                       Perl_warner(aTHX_ WARN_EXEC, "Error reading \"%s\": %s", 
+                       Perl_warner(aTHX_ packWARN(WARN_EXEC), "Error reading \"%s\": %s", 
                             scr, Strerror(errno));
                        buf = "";       /* Not #! */
                        goto doshell_args;
@@ -834,7 +834,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
                        *s++ = 0;
                    }
                    if (nargs == -1) {
-                       Perl_warner(aTHX_ WARN_EXEC, "Too many args on %.*s line of \"%s\"",
+                       Perl_warner(aTHX_ packWARN(WARN_EXEC), "Too many args on %.*s line of \"%s\"",
                             s1 - buf, buf, scr);
                        nargs = 4;
                        argsp = fargs;
@@ -937,7 +937,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
            }
        }
        if (rc < 0 && ckWARN(WARN_EXEC))
-           Perl_warner(aTHX_ WARN_EXEC, "Can't %s \"%s\": %s\n", 
+           Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s\n", 
                 ((execf != EXECF_EXEC && execf != EXECF_TRUEEXEC) 
                  ? "spawn" : "exec"),
                 PL_Argv[0], Strerror(errno));
@@ -1046,7 +1046,7 @@ do_spawn3(pTHX_ char *cmd, int execf, int flag)
                   rc = result(aTHX_ P_WAIT,
                               spawnl(P_NOWAIT,shell,shell,copt,cmd,(char*)0));
                if (rc < 0 && ckWARN(WARN_EXEC))
-                   Perl_warner(aTHX_ WARN_EXEC, "Can't %s \"%s\": %s", 
+                   Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s", 
                         (execf == EXECF_SPAWN ? "spawn" : "exec"),
                         shell, Strerror(errno));
                if (rc < 0)
index e78d680..1a321b0 100644 (file)
@@ -79,7 +79,7 @@
 #if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
 static char    *local_patches[] = {
         NULL
-       ,"DEVEL15299"
+       ,"DEVEL15372"
        ,NULL
 };
 
diff --git a/perl.c b/perl.c
index ebf5ca1..c8a6370 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -1428,6 +1428,22 @@ print \"  \\@INC:\\n    @INC\\n\";");
     if (!PL_do_undump)
        init_postdump_symbols(argc,argv,env);
 
+    if (PL_wantutf8) { /* Requires init_predump_symbols(). */
+        IO* io;
+        PerlIO* fp;
+        SV* sv;
+        if (PL_stdingv  && (io = GvIO(PL_stdingv))  && (fp = IoIFP(io)))
+             PerlIO_binmode(aTHX_ fp, IoTYPE(io), 0, ":utf8");
+        if (PL_defoutgv && (io = GvIO(PL_defoutgv)) && (fp = IoOFP(io)))
+             PerlIO_binmode(aTHX_ fp, IoTYPE(io), 0, ":utf8");
+        if (PL_stderrgv && (io = GvIO(PL_stderrgv)) && (fp = IoOFP(io)))
+             PerlIO_binmode(aTHX_ fp, IoTYPE(io), 0, ":utf8");
+        if ((sv = GvSV(gv_fetchpv("\017PEN", TRUE, SVt_PV)))) {
+            sv_setpvn(sv, ":utf8\0:utf8", 11);
+            SvSETMAGIC(sv);
+        }
+    }
+
     init_lexer();
 
     /* now parse the script */
index 82af7c5..5070d1d 100644 (file)
--- a/perlapi.h
+++ b/perlapi.h
@@ -606,6 +606,8 @@ END_EXTERN_C
 #define PL_utf8_xdigit         (*Perl_Iutf8_xdigit_ptr(aTHX))
 #undef  PL_uudmap
 #define PL_uudmap              (*Perl_Iuudmap_ptr(aTHX))
+#undef  PL_wantutf8
+#define PL_wantutf8            (*Perl_Iwantutf8_ptr(aTHX))
 #undef  PL_warnhook
 #define PL_warnhook            (*Perl_Iwarnhook_ptr(aTHX))
 #undef  PL_widesyscalls
index f507ac8..cde70b2 100644 (file)
@@ -111,15 +111,15 @@ calls are not possible, even though C<&DB::sub> exists.
 =head2 Writing Your Own Debugger
 
 =head3 Environment Variables
+
 The C<PERL5DB> environment variable can be used to define a debugger.
 For example, the minimal "working" debugger (it actually doesn't do anything)
 consists of one line:
-  
+
   sub DB::DB {}
 
 It can easily be defined like this:
-  
+
   $ PERL5DB="sub DB::DB {}" perl -d your-script
 
 Another brief debugger, slightly more useful, can be created
@@ -130,9 +130,9 @@ with only the line:
 This debugger prints a number which increments for each statement
 encountered and waits for you to hit a newline before continuing
 to the next statement.
-  
+
 The following debugger is actually useful:
-  
+
   {
     package DB;
     sub DB  {}
index 5d0ef3f..45c2420 100644 (file)
@@ -114,6 +114,16 @@ This is similar to calling the C<x> command on each applicable var.
 
 Same as C<V currentpackage [vars]>.
 
+=item y [level [vars]]
+
+Display all (or some) lexical variables (mnemonic: C<mY> variables)
+in the current scope or I<level> scopes higher.  You can limit the
+variables that you see with I<vars> which works exactly as it does
+for the C<V> and C<X> commands.  Requires the C<PadWalker> module
+version 0.08 or higher; will warn if this isn't installed.  Output
+is pretty-printed in the same style as for C<V> and the format is
+controlled by the same options.
+
 =item T
 
 Produce a stack backtrace.  See below for details on its output.
index f973b31..36c7144 100644 (file)
@@ -312,6 +312,13 @@ The list form of C<open> is now implemented for pipes (at least on UNIX):
 creates a pipe, and runs the equivalent of exec('cat', '/etc/motd') in
 the child process.
 
+=item *
+
+If your locale environment variables (LANGUAGE, LC_ALL, LC_CTYPE, LANG)
+contain the strings 'UTF-8' or 'UTF8' (case-insensitive matching),
+the default encoding of your STDIN, STDOUT, and STDERR, and of
+B<any subsequent file open>, is UTF-8.
+
 =back
 
 =head2 Safe Signals
@@ -334,7 +341,8 @@ out from potentially blocking operations should still work, though.
 Unicode in general should be now much more usable than in Perl 5.6.0
 (or even in 5.6.1).  Unicode can be used in hash keys, Unicode in
 regular expressions should work now, Unicode in tr/// should work now,
-Unicode in I/O should work now.
+Unicode in I/O should work now.  See L<perluniintro> for introduction
+and L<perlunicode> for details.
 
 =over 4
 
@@ -619,9 +627,11 @@ included since its further use is discouraged.
 C<Encode>, by Nick Ing-Simmons, provides a mechanism to translate
 between different character encodings.  Support for Unicode,
 ISO-8859-*, ASCII, CP*, KOI8-R, and three variants of EBCDIC are
-compiled in to the module.  Several other encodings (like Japanese,
-Chinese, and MacIntosh encodings) are included and will be loaded at
-runtime.  See L<Encode>.
+compiled in to the module.  Several other encodings (like Chinese,
+Japanese, Korean, and MacIntosh encodings) are included and will be
+loaded at runtime.  (For space considerations, the largest Chinese
+encodings have been separated into their own CPAN module,
+Encode::HanExtra).  See L<Encode>.
 
 Any encoding supported by Encode module is also available to the
 ":encoding()" layer if PerlIO is used.
@@ -2369,11 +2379,11 @@ respectively.
 
 =item *
 
-perl5db.pl has been modified to present a more consistent commands
-interface, via (CommandSet=580).  perl5db.t was also added to test the
-changes, and as a placeholder for further tests.
+The debugger (perl5db.pl) has been modified to present a more
+consistent commands interface, via (CommandSet=580).  perl5db.t was
+also added to test the changes, and as a placeholder for further tests.
 
-See L<perldebug>
+See L<perldebug>.
 
 =item *
 
@@ -2384,6 +2394,11 @@ depth of at most I<N> levels.
 
 =item *
 
+The debugger can now show lexical variables if you have the CPAN
+module PadWalker installed.
+
+=item *
+
 If an attempt to use a (non-blessed) reference as an array index
 is made, a warning is given.
 
@@ -2608,21 +2623,22 @@ If you are building on a UFS partition, you will also probably see
 t/op/stat.t subtest #9 fail.  This is caused by Darwin's UFS not
 supporting inode change time.
 
-=head2 OS/390
+=head2 z/OS (OS/390)
 
-OS/390 has rather many test failures but the situation is actually
+z/OS has rather many test failures but the situation is actually
 better than it was in 5.6.0, it's just that so many new modules and
 tests have been added.
 
- ../ext/B/t/deparse.t                        17    1   5.88%  14
+ Failed Test                 Stat Wstat Total Fail  Failed  List of Failed
+ -------------------------------------------------------------------------
  ../ext/Data/Dumper/t/dumper.t              321    2   0.62%  311 314
  ../ext/IO/lib/IO/t/io_unix.t                 5    4  80.00%  2-5
  ../lib/utf8.t                               94   13  13.83%  27 30-31 43 46 73
                                                               76 79 82 85 88 91
                                                               94
  ../lib/Benchmark.t               1   256   159    1   0.63%  75
+ ../lib/ExtUtils/t/Constant.t                27   19  70.37%  5-23
  ../lib/ExtUtils/t/Embed.t                    9    9 100.00%  1-9
- ../lib/ExtUtils/t/ExtUtils.t                27   19  70.37%  5-23
  op/pat.t                                   864    9   1.04%  242-243 665 776
                                                               785 832-834 845
  op/sprintf.t                               224    3   1.34%  98 100 136
@@ -2661,6 +2677,8 @@ threads are considered fundamentally broken.
 
 =head2 UNICOS
 
+ Failed Test                 Stat Wstat Total Fail  Failed  List of Failed
+ -------------------------------------------------------------------------
  ../ext/Socket/socketpair.t    1   256    45    1   2.22%  12
  ../lib/Math/Trig.t                       26    1   3.85%  25
  ../lib/warnings.t                       460    1   0.22%  425
@@ -2688,12 +2706,12 @@ needing further debugging and/or porting work.
 =head2 Win32
 
 In multi-CPU boxes there are some problems with the I/O buffering:
-some output may appear twice.  The Win32 following failures are known
+some output may appear twice.  The following Win32 failures are known
 as of 5.7.3:
 
-  ..\ext/Encode/t/JP.t      4  1024    22    4  18.18%  9 14 18 21
+ Failed Test                 Stat Wstat Total Fail  Failed  List of Failed
+ -------------------------------------------------------------------------
   ..\ext/threads/t/end.t                6    4  66.67%  3-6
-  ..\lib/blib.t             3   768     7    3  42.86%  1 4-5
 
 =head2 Localising a Tied Variable Leaks Memory
 
index 0053d91..a9f1d0f 100644 (file)
@@ -117,6 +117,24 @@ all the possible code points, pack("U",ord("A")) would in EBCDIC
 equal I<A with acute> or chr(101), and unpack("U", "A") would equal
 65, or I<non-breaking space>, not 193, or ord "A".)
 
+=head2 Remaining Perl Unicode problems in EBCDIC
+
+=over 4
+
+=item *
+
+Many of the remaining seem to be related to case-insensitive matching:
+for example, C<< /[\x{131}]/ >> (LATIN SMALL LETTER DOTLESS I) does
+not match "I" case-insensitively, as it should under Unicode.
+(The match succeeds in ASCII-derived platforms.)
+
+=item *
+
+The extensions Unicode::Collate and Unicode::Normalized are not
+supported under EBCDIC, likewise for the encoding pragma.
+
+=back
+
 =head2 Unicode and UTF
 
 UTF is a Unicode Transformation Format.  UTF-8 is a Unicode conforming
index 9863334..701a757 100644 (file)
@@ -496,7 +496,6 @@ literals
 
        open FILE, "<", "  file  ";  # filename is "   file   "
        open FILE, ">", ">file";     # filename is ">file"
-       
 
 It may be a lot clearer to use sysopen(), though:
 
index c4512e6..dd76588 100644 (file)
@@ -9,7 +9,7 @@ littered with answers involving regular expressions.  For example,
 decoding a URL and checking whether something is a number are handled
 with regular expressions, but those answers are found elsewhere in
 this document (in L<perlfaq9>: ``How do I decode or create those %-encodings 
-on the web'' and L<perfaq4>: ``How do I determine whether a scalar is
+on the web'' and L<perlfaq4>: ``How do I determine whether a scalar is
 a number/whole/integer/float'', to be precise).
 
 =head2 How can I hope to use regular expressions without creating illegible and unmaintainable code?
index b32cd94..9e667ab 100644 (file)
@@ -3433,10 +3433,10 @@ aligned at a multiple of C<count> bytes.  For example, to pack() or
 unpack() C's C<struct {char c; double d; char cc[2]}> one may need to
 use the template C<C x![d] d C[2]>; this assumes that doubles must be
 aligned on the double's size.
+
 For alignment commands C<count> of 0 is equivalent to C<count> of 1;
 both result in no-ops.
-  
+
 =item *
 
 A comment in a TEMPLATE starts with C<#> and goes to the end of line.
index cda5285..59c9fb0 100644 (file)
@@ -843,7 +843,7 @@ stored in the C<mg_type> field. The value of C<how> should be chosen
 from the set of macros C<PERL_MAGIC_foo> found perl.h. Note that before
 these macros were added, Perl internals used to directly use character
 literals, so you may occasionally come across old code or documentation
-referrring to 'U' magic rather than C<PERL_MAGIC_uvar> for example.
+referring to 'U' magic rather than C<PERL_MAGIC_uvar> for example.
 
 The C<obj> argument is stored in the C<mg_obj> field of the C<MAGIC>
 structure.  If it is not the same as the C<sv> argument, the reference
index 43ffe58..5605428 100644 (file)
@@ -985,6 +985,15 @@ nations, when we all know that the world can equally well be divided
 into bankers, bikers, gamers, and so on.  But, for now, it's the only
 standard we've got.  This may be construed as a bug.
 
+=head1 Unicode and UTF-8
+
+The support of Unicode is new starting from Perl version 5.6, and
+more fully implemented in the version 5.8.  See L<perluniintro> and
+L<perlunicode> for more details.
+
+Usually locale settings and Unicode do not affect each other, but
+there are exceptions, see L<perlunicode/Locales> for examples.
+
 =head1 BUGS
 
 =head2 Broken systems
@@ -1000,7 +1009,8 @@ operating system upgrade.
 
 =head1 SEE ALSO
 
-L<I18N::Langinfo>, L<POSIX/isalnum>, L<POSIX/isalpha>,
+L<I18N::Langinfo>, L<perluniintro>, L<perlunicode>, L<open>,
+L<POSIX/isalnum>, L<POSIX/isalpha>,
 L<POSIX/isdigit>, L<POSIX/isgraph>, L<POSIX/islower>,
 L<POSIX/isprint>, L<POSIX/ispunct>, L<POSIX/isspace>,
 L<POSIX/isupper>, L<POSIX/isxdigit>, L<POSIX/localeconv>,
index 9ca3f15..ef05ecf 100644 (file)
@@ -1440,6 +1440,9 @@ Only good for changing "owner" and "other" read-write access. (S<RISC OS>)
 
 Access permissions are mapped onto VOS access-control list changes. (VOS)
 
+The actual permissions set depend on the value of the C<CYGWIN>
+in the SYSTEM environment settings.  (Cygwin)
+
 =item chown LIST
 
 Not implemented. (S<Mac OS>, Win32, Plan9, S<RISC OS>, VOS)
index dcc9907..19c1be2 100644 (file)
@@ -2467,6 +2467,8 @@ LC_NUMERIC, LC_TIME, LANG
 
 =back
 
+=item Unicode and UTF-8
+
 =item BUGS
 
 =over 4
@@ -2495,6 +2497,8 @@ LC_NUMERIC, LC_TIME, LANG
 
 =item Perl's Unicode Model
 
+=item Unicode and EBCDIC
+
 =item Creating Unicode
 
 =item Handling Unicode
@@ -2562,12 +2566,16 @@ to enable UTF-8/UTF-EBCDIC in scripts
 
 =item Unicode in Perl on EBCDIC
 
+=item Locales
+
 =item Using Unicode in XS
 
 =back
 
 =item BUGS
 
+=item SEE ALSO
+
 =back
 
 =head2 perlebcdic - Considerations for running Perl on EBCDIC platforms
@@ -2596,6 +2604,10 @@ to enable UTF-8/UTF-EBCDIC in scripts
 
 =item POSIX-BC
 
+=item Unicode code points versus EBCDIC code points
+
+=item Remaining Perl Unicode problems in EBCDIC
+
 =item Unicode and UTF
 
 =item Using Encode
@@ -2781,49 +2793,55 @@ module (sometimes unnecessary), B<INSTALL> the module
 
 =item Pragmatic Modules
 
-attributes, autouse, base, blib, bytes, charnames, constant, diagnostics,
-encoding, fields, filetest, integer, less, locale, open, overload, sigtrap,
-sort, strict, subs, utf8, vars, vmsish, warnings, warnings::register
+attributes, attrs, autouse, base, blib, bytes, charnames, constant,
+diagnostics, encoding, fields, filetest, if, integer, less, locale, open,
+ops, overload, re, sigtrap, sort, strict, subs, threads, utf8, vars,
+vmsish, warnings, warnings::register
 
 =item Standard Modules
 
-AnyDBM_File, Attribute::Handlers, AutoLoader, AutoSplit, Benchmark, CGI,
-CGI::Apache, CGI::Carp, CGI::Cookie, CGI::Fast, CGI::Pretty, CGI::Push,
-CGI::Switch, CGI::Util, CPAN, CPAN::FirstTime, CPAN::Nox, Carp,
-Carp::Heavy, Class::ISA, Class::Struct, Cwd, DB, Devel::SelfStubber,
-Digest, DirHandle, Dumpvalue, English, Env, Exporter, Exporter::Heavy,
+AnyDBM_File, Attribute::Handlers, AutoLoader, AutoSplit, B, B::Asmdata,
+B::Assembler, B::Bblock, B::Bytecode, B::C, B::CC, B::Concise, B::Debug,
+B::Deparse, B::Disassembler, B::Lint, B::Showlex, B::Stackobj, B::Stash,
+B::Terse, B::Xref, Benchmark, ByteLoader, CGI, CGI::Apache, CGI::Carp,
+CGI::Cookie, CGI::Fast, CGI::Pretty, CGI::Push, CGI::Switch, CGI::Util,
+CPAN, CPAN::FirstTime, CPAN::Nox, Carp, Carp::Heavy, Class::ISA,
+Class::Struct, Cwd, DB, DB_File, Devel::SelfStubber, Digest, DirHandle,
+Dumpvalue, Encode, English, Env, Exporter, Exporter::Heavy,
 ExtUtils::Command, ExtUtils::Constant, ExtUtils::Embed, ExtUtils::Install,
-ExtUtils::Installed, ExtUtils::Liblist, ExtUtils::MM_Cygwin,
-ExtUtils::MM_NW5, ExtUtils::MM_OS2, ExtUtils::MM_Unix, ExtUtils::MM_VMS,
-ExtUtils::MM_Win32, ExtUtils::MakeMaker, ExtUtils::Manifest,
-ExtUtils::Mkbootstrap, ExtUtils::Mksymlists, ExtUtils::Packlist,
-ExtUtils::testlib, Fatal, File::Basename, File::CheckTree, File::Compare,
-File::Copy, File::DosGlob, File::Find, File::Path, File::Spec,
-File::Spec::Cygwin, File::Spec::Epoc, File::Spec::Functions,
-File::Spec::Mac, File::Spec::OS2, File::Spec::Unix, File::Spec::VMS,
-File::Spec::Win32, File::Temp, File::stat, FileCache, FileHandle,
-Filter::Simple, FindBin, Getopt::Long, Getopt::Std, I18N::Collate,
-I18N::LangTags, I18N::LangTags::List, IPC::Open2, IPC::Open3,
-Locale::Constants, Locale::Country, Locale::Currency, Locale::Language,
-Locale::Maketext, Locale::Maketext::TPJ13, Math::BigFloat, Math::BigInt,
-Math::BigInt::Calc, Math::Complex, Math::Trig, Memoize,
-Memoize::AnyDBM_File, Memoize::Expire, Memoize::ExpireFile,
-Memoize::ExpireTest, Memoize::NDBM_File, Memoize::SDBM_File,
-Memoize::Storable, NEXT, Net::Cmd, Net::Config, Net::Domain, Net::FTP,
-Net::NNTP, Net::Netrc, Net::POP3, Net::Ping, Net::SMTP, Net::Time,
-Net::hostent, Net::libnetFAQ, Net::netent, Net::protoent, Net::servent,
-PerlIO, Pod::Checker, Pod::Find, Pod::Functions, Pod::Html,
-Pod::InputObjects, Pod::LaTeX, Pod::Man, Pod::ParseLink, Pod::ParseUtils,
-Pod::Parser, Pod::Plainer, Pod::Select, Pod::Text, Pod::Text::Color,
+ExtUtils::Installed, ExtUtils::Liblist, ExtUtils::MM_BeOS,
+ExtUtils::MM_Cygwin, ExtUtils::MM_NW5, ExtUtils::MM_OS2, ExtUtils::MM_Unix,
+ExtUtils::MM_VMS, ExtUtils::MM_Win32, ExtUtils::MakeMaker,
+ExtUtils::Manifest, ExtUtils::Mkbootstrap, ExtUtils::Mksymlists,
+ExtUtils::Packlist, ExtUtils::testlib, Fatal, Fcntl, File::Basename,
+File::CheckTree, File::Compare, File::Copy, File::DosGlob, File::Find,
+File::Path, File::Spec, File::Spec::Cygwin, File::Spec::Epoc,
+File::Spec::Functions, File::Spec::Mac, File::Spec::OS2, File::Spec::Unix,
+File::Spec::VMS, File::Spec::Win32, File::Temp, File::stat, FileCache,
+FileHandle, Filter::Simple, FindBin, Getopt::Long, Getopt::Std, Hash::Util,
+I18N::Collate, I18N::LangTags, I18N::LangTags::List, IO, IPC::Open2,
+IPC::Open3, Locale::Constants, Locale::Country, Locale::Currency,
+Locale::Language, Locale::Maketext, Locale::Maketext::TPJ13,
+Locale::Script, Math::BigFloat, Math::BigInt, Math::BigInt::Calc,
+Math::Complex, Math::Trig, Memoize, Memoize::AnyDBM_File, Memoize::Expire,
+Memoize::ExpireFile, Memoize::ExpireTest, Memoize::NDBM_File,
+Memoize::SDBM_File, Memoize::Storable, NDBM_File, NEXT, Net::Cmd,
+Net::Config, Net::Domain, Net::FTP, Net::NNTP, Net::Netrc, Net::POP3,
+Net::Ping, Net::SMTP, Net::Time, Net::hostent, Net::libnetFAQ, Net::netent,
+Net::protoent, Net::servent, O, ODBM_File, Opcode, POSIX, PerlIO,
+Pod::Checker, Pod::Find, Pod::Functions, Pod::Html, Pod::InputObjects,
+Pod::LaTeX, Pod::Man, Pod::ParseLink, Pod::ParseUtils, Pod::Parser,
+Pod::Plainer, Pod::Select, Pod::Text, Pod::Text::Color,
 Pod::Text::Overstrike, Pod::Text::Termcap, Pod::Usage, Pod::t::basic,
-Search::Dict, SelectSaver, SelfLoader, Shell, Switch, Symbol,
-Term::ANSIColor, Term::Cap, Term::Complete, Term::ReadLine, Test,
-Test::Builder, Test::Harness, Test::More, Test::Simple, Test::Tutorial,
-Text::Abbrev, Text::Balanced, Text::ParseWords, Text::Soundex, Text::Tabs,
-Text::Wrap, Thread, Tie::Array, Tie::Handle, Tie::Hash, Tie::RefHash,
-Tie::Scalar, Tie::SubstrHash, Time::Local, Time::gmtime, Time::localtime,
-Time::tm, UNIVERSAL, Unicode::Collate, Unicode::UCD, User::grent,
-User::pwent, Win32
+SDBM_File, Safe, Search::Dict, SelectSaver, SelfLoader, Shell, Socket,
+Storable, Switch, Symbol, Term::ANSIColor, Term::Cap, Term::Complete,
+Term::ReadLine, Test, Test::Builder, Test::Harness, Test::Harness::Assert,
+Test::Harness::Iterator, Test::Harness::Straps, Test::More, Test::Simple,
+Test::Tutorial, Text::Abbrev, Text::Balanced, Text::ParseWords,
+Text::Soundex, Text::Tabs, Text::Wrap, Thread, Tie::Array, Tie::File,
+Tie::Handle, Tie::Hash, Tie::Memoize, Tie::RefHash, Tie::Scalar,
+Tie::SubstrHash, Time::Local, Time::gmtime, Time::localtime, Time::tm,
+UNIVERSAL, Unicode::Collate, Unicode::UCD, User::grent, User::pwent, Win32
 
 =item Extension Modules
 
@@ -4918,6 +4936,8 @@ PerlIO_apply_layers(f,mode,layers), PerlIO_binmode(f,ptype,imode,layers),
 
 =item Sort out the uid-setting mess
 
+=item Custom opcodes
+
 =item DLL Versioning
 
 =item Introduce @( and @)
@@ -5319,6 +5339,8 @@ DEFINES, USE_MULTI = define, #PERL_MALLOC = define, CFG = Debug
 -h, -l, -p[rocedures], -h[eavy], -i[nvocations], -l[ines], -testcoverage,
 -z[ero]
 
+=item Miscellaneous tricks
+
 =item CONCLUSION
 
 I<The Road goes ever on and on, down from the door where it began.>
@@ -8952,7 +8974,8 @@ code
 =item Utility functions
 
 $num_octets = utf8::upgrade($string);, utf8::downgrade($string[, CHECK]),
-utf8::encode($string), $flag = utf8::decode($string)
+utf8::encode($string), $flag = utf8::decode($string), $flag =
+utf8::valid(STRING)
 
 =back
 
@@ -9252,7 +9275,7 @@ main_cv, init_av, begin_av, end_av, main_root, main_start, comppadlist,
 regex_padav, sv_undef, sv_yes, sv_no, amagic_generation, walkoptree(OP,
 METHOD), walkoptree_debug(DEBUG), walksymtable(SYMREF, METHOD, RECURSE,
 PREFIX), svref_2object(SV), ppname(OPNUM), hash(STR), cast_I32(I), minus_c,
-cstring(STR), class(OBJ), threadsv_names
+cstring(STR), perlstring(STR), class(OBJ), threadsv_names
 
 =item AUTHOR
 
@@ -9577,7 +9600,7 @@ B<-u Package>
 
 =item OPTIONS
 
-C<-oFILENAME>, C<-r>, C<-D[tO]>
+C<-oFILENAME>, C<-r>, C<-d>, C<-D[tO]>
 
 =item BUGS
 
@@ -10362,7 +10385,7 @@ C<_a>, C<_exe>, C<_o>
 C<afs>, C<afsroot>, C<alignbytes>, C<ansi2knr>, C<aphostname>,
 C<api_revision>, C<api_subversion>, C<api_version>, C<api_versionstring>,
 C<ar>, C<archlib>, C<archlibexp>, C<archname64>, C<archname>, C<archobjs>,
-C<awk>
+C<asctime_r_proto>, C<awk>
 
 =item b
 
@@ -10376,80 +10399,97 @@ C<ccflags_uselargefiles>, C<ccname>, C<ccsymbols>, C<ccversion>, C<cf_by>,
 C<cf_email>, C<cf_time>, C<charsize>, C<chgrp>, C<chmod>, C<chown>,
 C<clocktype>, C<comm>, C<compress>, C<contains>, C<cp>, C<cpio>, C<cpp>,
 C<cpp_stuff>, C<cppccsymbols>, C<cppflags>, C<cpplast>, C<cppminus>,
-C<cpprun>, C<cppstdin>, C<cppsymbols>, C<cryptlib>, C<csh>
+C<cpprun>, C<cppstdin>, C<cppsymbols>, C<crypt_r_proto>, C<cryptlib>,
+C<csh>, C<ctermid_r_proto>, C<ctime_r_proto>
 
 =item d
 
 C<d__fwalk>, C<d_access>, C<d_accessx>, C<d_alarm>, C<d_archlib>,
-C<d_atolf>, C<d_atoll>, C<d_attribut>, C<d_bcmp>, C<d_bcopy>,
-C<d_bincompat5005>, C<d_bsd>, C<d_bsdgetpgrp>, C<d_bsdsetpgrp>, C<d_bzero>,
-C<d_casti32>, C<d_castneg>, C<d_charvspr>, C<d_chown>, C<d_chroot>,
-C<d_chsize>, C<d_class>, C<d_closedir>, C<d_cmsghdr_s>, C<d_const>,
-C<d_crypt>, C<d_csh>, C<d_cuserid>, C<d_dbl_dig>, C<d_dbminitproto>,
-C<d_difftime>, C<d_dirfd>, C<d_dirnamlen>, C<d_dlerror>, C<d_dlopen>,
-C<d_dlsymun>, C<d_dosuid>, C<d_drand48proto>, C<d_dup2>, C<d_eaccess>,
-C<d_endgrent>, C<d_endhent>, C<d_endnent>, C<d_endpent>, C<d_endpwent>,
-C<d_endsent>, C<d_eofnblk>, C<d_eunice>, C<d_fchdir>, C<d_fchmod>,
-C<d_fchown>, C<d_fcntl>, C<d_fcntl_can_lock>, C<d_fd_macros>, C<d_fd_set>,
+C<d_asctime_r>, C<d_atolf>, C<d_atoll>, C<d_attribut>, C<d_bcmp>,
+C<d_bcopy>, C<d_bincompat5005>, C<d_bsd>, C<d_bsdgetpgrp>, C<d_bsdsetpgrp>,
+C<d_bzero>, C<d_casti32>, C<d_castneg>, C<d_charvspr>, C<d_chown>,
+C<d_chroot>, C<d_chsize>, C<d_class>, C<d_closedir>, C<d_cmsghdr_s>,
+C<d_const>, C<d_crypt>, C<d_crypt_r>, C<d_csh>, C<d_ctermid_r>,
+C<d_ctime_r>, C<d_cuserid>, C<d_dbl_dig>, C<d_dbminitproto>, C<d_difftime>,
+C<d_dirfd>, C<d_dirnamlen>, C<d_dlerror>, C<d_dlopen>, C<d_dlsymun>,
+C<d_dosuid>, C<d_drand48_r>, C<d_drand48proto>, C<d_dup2>, C<d_eaccess>,
+C<d_endgrent>, C<d_endgrent_r>, C<d_endhent>, C<d_endhostent_r>,
+C<d_endnent>, C<d_endnetent_r>, C<d_endpent>, C<d_endprotoent_r>,
+C<d_endpwent>, C<d_endpwent_r>, C<d_endsent>, C<d_endservent_r>,
+C<d_eofnblk>, C<d_eunice>, C<d_fchdir>, C<d_fchmod>, C<d_fchown>,
+C<d_fcntl>, C<d_fcntl_can_lock>, C<d_fd_macros>, C<d_fd_set>,
 C<d_fds_bits>, C<d_fgetpos>, C<d_finite>, C<d_finitel>, C<d_flexfnam>,
 C<d_flock>, C<d_flockproto>, C<d_fork>, C<d_fp_class>, C<d_fpathconf>,
 C<d_fpclass>, C<d_fpclassify>, C<d_fpclassl>, C<d_fpos64_t>, C<d_frexpl>,
 C<d_fs_data_s>, C<d_fseeko>, C<d_fsetpos>, C<d_fstatfs>, C<d_fstatvfs>,
 C<d_fsync>, C<d_ftello>, C<d_ftime>, C<d_Gconvert>, C<d_getcwd>,
-C<d_getespwnam>, C<d_getfsstat>, C<d_getgrent>, C<d_getgrps>,
-C<d_gethbyaddr>, C<d_gethbyname>, C<d_gethent>, C<d_gethname>,
-C<d_gethostprotos>, C<d_getitimer>, C<d_getlogin>, C<d_getmnt>,
+C<d_getespwnam>, C<d_getfsstat>, C<d_getgrent>, C<d_getgrent_r>,
+C<d_getgrgid_r>, C<d_getgrnam_r>, C<d_getgrps>, C<d_gethbyaddr>,
+C<d_gethbyname>, C<d_gethent>, C<d_gethname>, C<d_gethostbyaddr_r>,
+C<d_gethostbyname_r>, C<d_gethostent_r>, C<d_gethostprotos>,
+C<d_getitimer>, C<d_getlogin>, C<d_getlogin_r>, C<d_getmnt>,
 C<d_getmntent>, C<d_getnbyaddr>, C<d_getnbyname>, C<d_getnent>,
+C<d_getnetbyaddr_r>, C<d_getnetbyname_r>, C<d_getnetent_r>,
 C<d_getnetprotos>, C<d_getpagsz>, C<d_getpbyname>, C<d_getpbynumber>,
 C<d_getpent>, C<d_getpgid>, C<d_getpgrp2>, C<d_getpgrp>, C<d_getppid>,
-C<d_getprior>, C<d_getprotoprotos>, C<d_getprpwnam>, C<d_getpwent>,
-C<d_getsbyname>, C<d_getsbyport>, C<d_getsent>, C<d_getservprotos>,
-C<d_getspnam>, C<d_gettimeod>, C<d_gnulibc>, C<d_grpasswd>, C<d_hasmntopt>,
+C<d_getprior>, C<d_getprotobyname_r>, C<d_getprotobynumber_r>,
+C<d_getprotoent_r>, C<d_getprotoprotos>, C<d_getprpwnam>, C<d_getpwent>,
+C<d_getpwent_r>, C<d_getpwnam_r>, C<d_getpwuid_r>, C<d_getsbyname>,
+C<d_getsbyport>, C<d_getsent>, C<d_getservbyname_r>, C<d_getservbyport_r>,
+C<d_getservent_r>, C<d_getservprotos>, C<d_getspnam>, C<d_getspnam_r>,
+C<d_gettimeod>, C<d_gmtime_r>, C<d_gnulibc>, C<d_grpasswd>, C<d_hasmntopt>,
 C<d_htonl>, C<d_index>, C<d_inetaton>, C<d_int64_t>, C<d_isascii>,
 C<d_isfinite>, C<d_isinf>, C<d_isnan>, C<d_isnanl>, C<d_killpg>,
-C<d_lchown>, C<d_ldbl_dig>, C<d_link>, C<d_locconv>, C<d_lockf>,
-C<d_longdbl>, C<d_longlong>, C<d_lseekproto>, C<d_lstat>, C<d_madvise>,
-C<d_mblen>, C<d_mbstowcs>, C<d_mbtowc>, C<d_memchr>, C<d_memcmp>,
-C<d_memcpy>, C<d_memmove>, C<d_memset>, C<d_mkdir>, C<d_mkdtemp>,
-C<d_mkfifo>, C<d_mkstemp>, C<d_mkstemps>, C<d_mktime>, C<d_mmap>,
-C<d_modfl>, C<d_modfl_pow32_bug>, C<d_mprotect>, C<d_msg>, C<d_msg_ctrunc>,
-C<d_msg_dontroute>, C<d_msg_oob>, C<d_msg_peek>, C<d_msg_proxy>,
-C<d_msgctl>, C<d_msgget>, C<d_msghdr_s>, C<d_msgrcv>, C<d_msgsnd>,
-C<d_msync>, C<d_munmap>, C<d_mymalloc>, C<d_nice>, C<d_nl_langinfo>,
-C<d_nv_preserves_uv>, C<nv_preserves_uv_bits>, C<d_off64_t>,
-C<d_old_pthread_create_joinable>, C<d_oldpthreads>, C<d_oldsock>,
-C<d_open3>, C<d_pathconf>, C<d_pause>, C<d_perl_otherlibdirs>,
-C<d_phostname>, C<d_pipe>, C<d_poll>, C<d_portable>, C<d_PRId64>,
-C<d_PRIeldbl>, C<d_PRIEUldbl>, C<d_PRIfldbl>, C<d_PRIFUldbl>,
-C<d_PRIgldbl>, C<d_PRIGUldbl>, C<d_PRIi64>, C<d_PRIo64>, C<d_PRIu64>,
-C<d_PRIx64>, C<d_PRIXU64>, C<d_procselfexe>, C<d_pthread_atfork>,
-C<d_pthread_yield>, C<d_pwage>, C<d_pwchange>, C<d_pwclass>,
-C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>, C<d_pwpasswd>, C<d_pwquota>,
-C<d_qgcvt>, C<d_quad>, C<d_readdir>, C<d_readlink>, C<d_readv>,
-C<d_recvmsg>, C<d_rename>, C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>,
-C<d_safemcpy>, C<d_sanemcmp>, C<d_sbrkproto>, C<d_sched_yield>,
-C<d_scm_rights>, C<d_SCNfldbl>, C<d_seekdir>, C<d_select>, C<d_sem>,
-C<d_semctl>, C<d_semctl_semid_ds>, C<d_semctl_semun>, C<d_semget>,
-C<d_semop>, C<d_sendmsg>, C<d_setegid>, C<d_seteuid>, C<d_setgrent>,
-C<d_setgrps>, C<d_sethent>, C<d_setitimer>, C<d_setlinebuf>,
-C<d_setlocale>, C<d_setnent>, C<d_setpent>, C<d_setpgid>, C<d_setpgrp2>,
-C<d_setpgrp>, C<d_setprior>, C<d_setproctitle>, C<d_setpwent>,
-C<d_setregid>, C<d_setresgid>, C<d_setresuid>, C<d_setreuid>, C<d_setrgid>,
-C<d_setruid>, C<d_setsent>, C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>,
-C<d_shmat>, C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>,
-C<d_sigaction>, C<d_sigprocmask>, C<d_sigsetjmp>, C<d_sockatmark>,
-C<d_sockatmarkproto>, C<d_socket>, C<d_socklen_t>, C<d_sockpair>,
-C<d_socks5_init>, C<d_sqrtl>, C<d_sresgproto>, C<d_sresuproto>,
+C<d_lchown>, C<d_ldbl_dig>, C<d_link>, C<d_localtime_r>, C<d_locconv>,
+C<d_lockf>, C<d_longdbl>, C<d_longlong>, C<d_lseekproto>, C<d_lstat>,
+C<d_madvise>, C<d_mblen>, C<d_mbstowcs>, C<d_mbtowc>, C<d_memchr>,
+C<d_memcmp>, C<d_memcpy>, C<d_memmove>, C<d_memset>, C<d_mkdir>,
+C<d_mkdtemp>, C<d_mkfifo>, C<d_mkstemp>, C<d_mkstemps>, C<d_mktime>,
+C<d_mmap>, C<d_modfl>, C<d_modfl_pow32_bug>, C<d_mprotect>, C<d_msg>,
+C<d_msg_ctrunc>, C<d_msg_dontroute>, C<d_msg_oob>, C<d_msg_peek>,
+C<d_msg_proxy>, C<d_msgctl>, C<d_msgget>, C<d_msghdr_s>, C<d_msgrcv>,
+C<d_msgsnd>, C<d_msync>, C<d_munmap>, C<d_mymalloc>, C<d_nice>,
+C<d_nl_langinfo>, C<d_nv_preserves_uv>
+
+=item n
+
+C<nv_preserves_uv_bits>, C<d_off64_t>, C<d_old_pthread_create_joinable>,
+C<d_oldpthreads>, C<d_oldsock>, C<d_open3>, C<d_pathconf>, C<d_pause>,
+C<d_perl_otherlibdirs>, C<d_phostname>, C<d_pipe>, C<d_poll>,
+C<d_portable>, C<d_PRId64>, C<d_PRIeldbl>, C<d_PRIEUldbl>, C<d_PRIfldbl>,
+C<d_PRIFUldbl>, C<d_PRIgldbl>, C<d_PRIGUldbl>, C<d_PRIi64>, C<d_PRIo64>,
+C<d_PRIu64>, C<d_PRIx64>, C<d_PRIXU64>, C<d_procselfexe>,
+C<d_pthread_atfork>, C<d_pthread_yield>, C<d_pwage>, C<d_pwchange>,
+C<d_pwclass>, C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>, C<d_pwpasswd>,
+C<d_pwquota>, C<d_qgcvt>, C<d_quad>, C<d_random_r>, C<d_readdir64_r>,
+C<d_readdir>, C<d_readdir_r>, C<d_readlink>, C<d_readv>, C<d_recvmsg>,
+C<d_rename>, C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>, C<d_safemcpy>,
+C<d_sanemcmp>, C<d_sbrkproto>, C<d_sched_yield>, C<d_scm_rights>,
+C<d_SCNfldbl>, C<d_seekdir>, C<d_select>, C<d_sem>, C<d_semctl>,
+C<d_semctl_semid_ds>, C<d_semctl_semun>, C<d_semget>, C<d_semop>,
+C<d_sendmsg>, C<d_setegid>, C<d_seteuid>, C<d_setgrent>, C<d_setgrent_r>,
+C<d_setgrps>, C<d_sethent>, C<d_sethostent_r>, C<d_setitimer>,
+C<d_setlinebuf>, C<d_setlocale>, C<d_setlocale_r>, C<d_setnent>,
+C<d_setnetent_r>, C<d_setpent>, C<d_setpgid>, C<d_setpgrp2>, C<d_setpgrp>,
+C<d_setprior>, C<d_setproctitle>, C<d_setprotoent_r>, C<d_setpwent>,
+C<d_setpwent_r>, C<d_setregid>, C<d_setresgid>, C<d_setresuid>,
+C<d_setreuid>, C<d_setrgid>, C<d_setruid>, C<d_setsent>, C<d_setservent_r>,
+C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>, C<d_shmat>,
+C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>, C<d_sigaction>,
+C<d_sigprocmask>, C<d_sigsetjmp>, C<d_sockatmark>, C<d_sockatmarkproto>,
+C<d_socket>, C<d_socklen_t>, C<d_sockpair>, C<d_socks5_init>, C<d_sqrtl>,
+C<d_srand48_r>, C<d_srandom_r>, C<d_sresgproto>, C<d_sresuproto>,
 C<d_statblks>, C<d_statfs_f_flags>, C<d_statfs_s>, C<d_statvfs>,
 C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>, C<d_stdio_ptr_lval_nochange_cnt>,
 C<d_stdio_ptr_lval_sets_cnt>, C<d_stdio_stream_array>, C<d_stdiobase>,
 C<d_stdstdio>, C<d_strchr>, C<d_strcoll>, C<d_strctcpy>, C<d_strerrm>,
-C<d_strerror>, C<d_strftime>, C<d_strtod>, C<d_strtol>, C<d_strtold>,
-C<d_strtoll>, C<d_strtoq>, C<d_strtoul>, C<d_strtoull>, C<d_strtouq>,
-C<d_strxfrm>, C<d_suidsafe>, C<d_symlink>, C<d_syscall>, C<d_syscallproto>,
-C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>,
-C<d_tcsetpgrp>, C<d_telldir>, C<d_telldirproto>, C<d_time>, C<d_times>,
-C<d_tm_tm_gmtoff>, C<d_tm_tm_zone>, C<d_truncate>, C<d_tzname>,
+C<d_strerror>, C<d_strerror_r>, C<d_strftime>, C<d_strtod>, C<d_strtol>,
+C<d_strtold>, C<d_strtoll>, C<d_strtoq>, C<d_strtoul>, C<d_strtoull>,
+C<d_strtouq>, C<d_strxfrm>, C<d_suidsafe>, C<d_symlink>, C<d_syscall>,
+C<d_syscallproto>, C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>,
+C<d_system>, C<d_tcgetpgrp>, C<d_tcsetpgrp>, C<d_telldir>,
+C<d_telldirproto>, C<d_time>, C<d_times>, C<d_tm_tm_gmtoff>,
+C<d_tm_tm_zone>, C<d_tmpnam_r>, C<d_truncate>, C<d_ttyname_r>, C<d_tzname>,
 C<d_u32align>, C<d_ualarm>, C<d_umask>, C<d_uname>, C<d_union_semun>,
 C<d_unordered>, C<d_usleep>, C<d_usleepproto>, C<d_ustat>, C<d_vendorarch>,
 C<d_vendorbin>, C<d_vendorlib>, C<d_vfork>, C<d_void_closedir>,
@@ -10457,12 +10497,14 @@ C<d_voidsig>, C<d_voidtty>, C<d_volatile>, C<d_vprintf>, C<d_wait4>,
 C<d_waitpid>, C<d_wcstombs>, C<d_wctomb>, C<d_writev>, C<d_xenix>, C<date>,
 C<db_hashtype>, C<db_prefixtype>, C<db_version_major>, C<db_version_minor>,
 C<db_version_patch>, C<defvoidused>, C<direntrytype>, C<dlext>, C<dlsrc>,
-C<doublesize>, C<drand01>, C<dynamic_ext>
+C<doublesize>, C<drand01>, C<drand48_r_proto>, C<dynamic_ext>
 
 =item e
 
-C<eagain>, C<ebcdic>, C<echo>, C<egrep>, C<emacs>, C<eunicefix>,
-C<exe_ext>, C<expr>, C<extensions>, C<extras>
+C<eagain>, C<ebcdic>, C<echo>, C<egrep>, C<emacs>, C<endgrent_r_proto>,
+C<endhostent_r_proto>, C<endnetent_r_proto>, C<endprotoent_r_proto>,
+C<endpwent_r_proto>, C<endservent_r_proto>, C<eunicefix>, C<exe_ext>,
+C<expr>, C<extensions>, C<extras>
 
 =item f
 
@@ -10472,9 +10514,15 @@ C<full_sed>
 
 =item g
 
-C<gccosandvers>, C<gccversion>, C<gidformat>, C<gidsign>, C<gidsize>,
-C<gidtype>, C<glibpth>, C<gmake>, C<grep>, C<groupcat>, C<groupstype>,
-C<gzip>
+C<gccosandvers>, C<gccversion>, C<getgrent_r_proto>, C<getgrgid_r_proto>,
+C<getgrnam_r_proto>, C<gethostbyaddr_r_proto>, C<gethostbyname_r_proto>,
+C<gethostent_r_proto>, C<getlogin_r_proto>, C<getnetbyaddr_r_proto>,
+C<getnetbyname_r_proto>, C<getnetent_r_proto>, C<getprotobyname_r_proto>,
+C<getprotobynumber_r_proto>, C<getprotoent_r_proto>, C<getpwent_r_proto>,
+C<getpwnam_r_proto>, C<getpwuid_r_proto>, C<getservbyname_r_proto>,
+C<getservbyport_r_proto>, C<getservent_r_proto>, C<getspnam_r_proto>,
+C<gidformat>, C<gidsign>, C<gidsize>, C<gidtype>, C<glibpth>, C<gmake>,
+C<gmtime_r_proto>, C<grep>, C<groupcat>, C<groupstype>, C<gzip>
 
 =item h
 
@@ -10483,9 +10531,9 @@ C<h_fcntl>, C<h_sysfile>, C<hint>, C<hostcat>
 =item i
 
 C<i16size>, C<i16type>, C<i32size>, C<i32type>, C<i64size>, C<i64type>,
-C<i8size>, C<i8type>, C<i_arpainet>, C<i_bsdioctl>, C<i_db>, C<i_dbm>,
-C<i_dirent>, C<i_dld>, C<i_dlfcn>, C<i_fcntl>, C<i_float>, C<i_fp>,
-C<i_fp_class>, C<i_gdbm>, C<i_grp>, C<i_ieeefp>, C<i_inttypes>,
+C<i8size>, C<i8type>, C<i_arpainet>, C<i_bsdioctl>, C<i_crypt>, C<i_db>,
+C<i_dbm>, C<i_dirent>, C<i_dld>, C<i_dlfcn>, C<i_fcntl>, C<i_float>,
+C<i_fp>, C<i_fp_class>, C<i_gdbm>, C<i_grp>, C<i_ieeefp>, C<i_inttypes>,
 C<i_langinfo>, C<i_libutil>, C<i_limits>, C<i_locale>, C<i_machcthr>,
 C<i_malloc>, C<i_math>, C<i_memory>, C<i_mntent>, C<i_ndbm>, C<i_netdb>,
 C<i_neterrno>, C<i_netinettcp>, C<i_niin>, C<i_poll>, C<i_prot>,
@@ -10517,8 +10565,9 @@ C<ld>, C<lddlflags>, C<ldflags>, C<ldflags_uselargefiles>, C<ldlibpthname>,
 C<less>, C<lib_ext>, C<libc>, C<libperl>, C<libpth>, C<libs>, C<libsdirs>,
 C<libsfiles>, C<libsfound>, C<libspath>, C<libswanted>,
 C<libswanted_uselargefiles>, C<line>, C<lint>, C<lkflags>, C<ln>, C<lns>,
-C<locincpth>, C<loclibpth>, C<longdblsize>, C<longlongsize>, C<longsize>,
-C<lp>, C<lpr>, C<ls>, C<lseeksize>, C<lseektype>
+C<localtime_r_proto>, C<locincpth>, C<loclibpth>, C<longdblsize>,
+C<longlongsize>, C<longsize>, C<lp>, C<lpr>, C<ls>, C<lseeksize>,
+C<lseektype>
 
 =item m
 
@@ -10529,10 +10578,7 @@ C<man3direxp>, C<man3ext>
 =item M
 
 C<Mcc>, C<mips_type>, C<mkdir>, C<mmaptype>, C<modetype>, C<more>,
-C<multiarch>, C<mv>, C<myarchname>, C<mydomain>, C<myhostname>, C<myuname>
-
-=item n
-
+C<multiarch>, C<mv>, C<myarchname>, C<mydomain>, C<myhostname>, C<myuname>,
 C<n>, C<need_va_copy>, C<netdb_hlen_type>, C<netdb_host_type>,
 C<netdb_name_type>, C<netdb_net_type>, C<nm>, C<nm_opt>, C<nm_so_opt>,
 C<nonxs_ext>, C<nroff>, C<nveformat>, C<nvEUformat>, C<nvfformat>,
@@ -10561,30 +10607,35 @@ C<quadkind>, C<quadtype>
 
 =item r
 
-C<randbits>, C<randfunc>, C<randseedtype>, C<ranlib>, C<rd_nodata>,
-C<revision>, C<rm>, C<rmail>, C<run>, C<runnm>
+C<randbits>, C<randfunc>, C<random_r_proto>, C<randseedtype>, C<ranlib>,
+C<rd_nodata>, C<readdir64_r_proto>, C<readdir_r_proto>, C<revision>, C<rm>,
+C<rmail>, C<run>, C<runnm>
 
 =item s
 
 C<sched_yield>, C<scriptdir>, C<scriptdirexp>, C<sed>, C<seedfunc>,
-C<selectminbits>, C<selecttype>, C<sendmail>, C<sh>, C<shar>, C<sharpbang>,
-C<shmattype>, C<shortsize>, C<shrpenv>, C<shsharp>, C<sig_count>,
-C<sig_name>, C<sig_name_init>, C<sig_num>, C<sig_num_init>, C<sig_size>,
-C<signal_t>, C<sitearch>, C<sitearchexp>, C<sitebin>, C<sitebinexp>,
-C<sitelib>, C<sitelib_stem>, C<sitelibexp>, C<siteprefix>,
+C<selectminbits>, C<selecttype>, C<sendmail>, C<setgrent_r_proto>,
+C<sethostent_r_proto>, C<setlocale_r_proto>, C<setnetent_r_proto>,
+C<setprotoent_r_proto>, C<setpwent_r_proto>, C<setservent_r_proto>, C<sh>,
+C<shar>, C<sharpbang>, C<shmattype>, C<shortsize>, C<shrpenv>, C<shsharp>,
+C<sig_count>, C<sig_name>, C<sig_name_init>, C<sig_num>, C<sig_num_init>,
+C<sig_size>, C<signal_t>, C<sitearch>, C<sitearchexp>, C<sitebin>,
+C<sitebinexp>, C<sitelib>, C<sitelib_stem>, C<sitelibexp>, C<siteprefix>,
 C<siteprefixexp>, C<sizesize>, C<sizetype>, C<sleep>, C<smail>, C<so>,
 C<sockethdr>, C<socketlib>, C<socksizetype>, C<sort>, C<spackage>,
 C<spitshell>, C<sPRId64>, C<sPRIeldbl>, C<sPRIEUldbl>, C<sPRIfldbl>,
 C<sPRIFUldbl>, C<sPRIgldbl>, C<sPRIGUldbl>, C<sPRIi64>, C<sPRIo64>,
-C<sPRIu64>, C<sPRIx64>, C<sPRIXU64>, C<src>, C<sSCNfldbl>, C<ssizetype>,
-C<startperl>, C<startsh>, C<static_ext>, C<stdchar>, C<stdio_base>,
-C<stdio_bufsiz>, C<stdio_cnt>, C<stdio_filbuf>, C<stdio_ptr>,
-C<stdio_stream_array>, C<strings>, C<submit>, C<subversion>, C<sysman>
+C<sPRIu64>, C<sPRIx64>, C<sPRIXU64>, C<srand48_r_proto>,
+C<srandom_r_proto>, C<src>, C<sSCNfldbl>, C<ssizetype>, C<startperl>,
+C<startsh>, C<static_ext>, C<stdchar>, C<stdio_base>, C<stdio_bufsiz>,
+C<stdio_cnt>, C<stdio_filbuf>, C<stdio_ptr>, C<stdio_stream_array>,
+C<strerror_r_proto>, C<strings>, C<submit>, C<subversion>, C<sysman>
 
 =item t
 
 C<tail>, C<tar>, C<targetarch>, C<tbl>, C<tee>, C<test>, C<timeincl>,
-C<timetype>, C<to>, C<touch>, C<tr>, C<trnl>, C<troff>
+C<timetype>, C<tmpnam_r_proto>, C<to>, C<touch>, C<tr>, C<trnl>, C<troff>,
+C<ttyname_r_proto>
 
 =item u
 
@@ -11172,7 +11223,7 @@ strings in binary data, Perl/Encode wrappers on non-Unicode XS modules
 
 =item Messing with Perl's Internals
 
-is_utf8(STRING [, CHECK]), valid_utf8(STRING)
+is_utf8(STRING [, CHECK])
 
 =item IMPLEMENTATION CLASSES
 
@@ -11216,18 +11267,6 @@ variants of EBCDIC, symbol and dingbats as used by Tk on X11
 
 =back
 
-=head2 Encode::Tcl::Extended - Tcl EUC encodings
-
-=over 4
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item SEE ALSO
-
-=back
-
 =head2 Encode::Tcl::Table - Tcl Table encodings
 
 =over 4
@@ -11265,19 +11304,6 @@ encodings
 
 =back
 
-=head2 Encode::lib::Encode::Tcl::Extended, Encode::Tcl::Extended - Tcl EUC
-encodings
-
-=over 4
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item SEE ALSO
-
-=back
-
 =head2 Encode::lib::Encode::Tcl::Table, Encode::Tcl::Table - Tcl Table
 encodings
 
@@ -13997,7 +14023,7 @@ general-utility scalar subroutines
 
 =item DESCRIPTION
 
-blessed EXPR, dualvar NUM, STRING, isweak EXPR, readonly SCALAR, reftype
+blessed EXPR, dualvar NUM, STRING, isweak EXPR, openhandle FH, reftype
 EXPR, tainted EXPR, weaken REF
 
 =item KNOWN BUGS
@@ -16878,7 +16904,7 @@ Memory, CPU, Snooping, Signals, State Changes
 
 =item DESCRIPTION
 
-blessed EXPR, dualvar NUM, STRING, isweak EXPR, readonly SCALAR, reftype
+blessed EXPR, dualvar NUM, STRING, isweak EXPR, openhandle FH, reftype
 EXPR, tainted EXPR, weaken REF
 
 =item KNOWN BUGS
@@ -18011,9 +18037,13 @@ SHIFT this, UNSHIFT this, LIST, SPLICE this, offset, length, LIST
 
 =item C<recsep>
 
+=item C<autochomp>
+
 =item C<mode>
 
-=item C<cachesize>
+=item C<memory>
+
+=item C<dw_size>
 
 =item Option Format
 
@@ -18025,23 +18055,25 @@ SHIFT this, UNSHIFT this, LIST, SPLICE this, offset, length, LIST
 
 =item C<flock>
 
-=item Tying to an already-opened filehandle
+=item C<autochomp>
 
-=back
+=item C<defer>, C<flush>, and C<discard>
 
-=item CAVEATS
+=back
 
-=over 4
+=item Tying to an already-opened filehandle
 
-=item Efficiency Note
+=item Deferred Writing
 
-=item Efficiency Note 2
+=item CAVEATS
 
-=item Efficiency Note 3
+You might be tempted to think that deferred writing is like transactions,
+with C<flush> as C<commit> and C<discard> as C<rollback>, but it isn't, so
+don't
 
-=back
+=item SUBCLASSING
 
-=item CAVEATS
+=item WHAT ABOUT C<DB_File>?
 
 =item AUTHOR
 
@@ -18312,28 +18344,42 @@ Unicode Collation Algorithm - Unicode TR #10, L<Unicode::Normalize>
 
 =item Normalization Forms
 
-C<$string_NFD = NFD($raw_string)>, C<$string_NFC = NFC($raw_string)>,
-C<$string_NFKD = NFKD($raw_string)>, C<$string_NFKC = NFKC($raw_string)>,
-C<$normalized_string = normalize($form_name, $raw_string)>
+C<$NFD_string = NFD($string)>, C<$NFC_string = NFC($string)>,
+C<$NFKD_string = NFKD($string)>, C<$NFKC_string = NFKC($string)>,
+C<$normalized_string = normalize($form_name, $string)>
+
+=item Decomposition and Composition
+
+C<$decomposed_string = decompose($string)>, C<$decomposed_string =
+decompose($string, $useCompatMapping)>, C<$reordered_string  =
+reorder($string)>, C<$composed_string  = compose($string)>
+
+=item Quick Check
+
+C<$result = checkNFD($string)>, C<$result = checkNFC($string)>, C<$result =
+checkNFKD($string)>, C<$result = checkNFKC($string)>, C<$result =
+check($form_name, $string)>
 
 =item Character Data
 
 C<$canonical_decomposed = getCanon($codepoint)>,
-C<$compatibility_decomposed = getCompat($codepoint)>, C<$uv_composite =
-getComposite($uv_here, $uv_next)>, C<$combining_class =
-getCombinClass($codepoint)>, C<$is_exclusion = isExclusion($codepoint)>
+C<$compatibility_decomposed = getCompat($codepoint)>,
+C<$codepoint_composite = getComposite($codepoint_here, $codepoint_next)>,
+C<$combining_class = getCombinClass($codepoint)>, C<$is_exclusion =
+isExclusion($codepoint)>, C<$is_singleton = isSingleton($codepoint)>,
+C<$is_non_startar_decomposition = isNonStDecomp($codepoint)>,
+C<$may_be_composed_with_prev_char = isComp2nd($codepoint)>
 
 =item EXPORT
 
-=item TODO
-
 =back
 
 =item AUTHOR
 
 =item SEE ALSO
 
-http://www.unicode.org/unicode/reports/tr15/
+http://www.unicode.org/unicode/reports/tr15/,
+http://www.unicode.org/Public/UNIDATA/DerivedNormalizationProperties.txt
 
 =back
 
index 6870696..eea756b 100644 (file)
@@ -193,7 +193,7 @@ for the real and effective uids).  Firstly, what exactly setuid() call
 gets invoked in which platform is simply a big mess that needs to be
 untangled.  Secondly, the effects are apparently not standard across
 platforms, (if you first set $< and then $>, or vice versa, being
-uid==euid== zero, or just euid==zero, or as a normal user, what are
+uid == euid == zero, or just euid == zero, or as a normal user, what are
 the results?).  The test suite not (usually) being run as root means
 that these things do not get much testing.  Thirdly, there's quite
 often a third uid called saved uid, and Perl has no knowledge of that
@@ -201,7 +201,7 @@ feature in any way.  (If one has the saved uid of zero, one can get
 back any real and effective uids.)  As an example, to change also the
 saved uid, one needs to set the real and effective uids B<twice>-- in
 most systems, that is: in HP-UX that doesn't seem to work.
-       
+
 =head2 Custom opcodes
 
 Have a way to introduce user-defined opcodes without the subroutine call
index 518d239..4cb8325 100644 (file)
@@ -828,6 +828,29 @@ are specifically discussed. There is no C<utfebcdic> pragma or
 the platform's "natural" 8-bit encoding of Unicode. See L<perlebcdic>
 for more discussion of the issues.
 
+=head2 Locales
+
+Usually locale settings and Unicode do not affect each other, but
+there are a couple of exceptions:
+
+=over 4
+
+=item *
+
+If your locale environment variables (LANGUAGE, LC_ALL, LC_CTYPE, LANG)
+contain the strings 'UTF-8' or 'UTF8' (case-insensitive matching),
+the default encoding of your STDIN, STDOUT, and STDERR, and of
+B<any subsequent file open>, is UTF-8.
+
+=item *
+
+Perl tries really hard to work both with Unicode and the old byte
+oriented world: most often this is nice, but sometimes this causes
+problems.  See L</BUGS> for example how sometimes using locales
+with Unicode can help with these problems.
+
+=back
+
 =head2 Using Unicode in XS
 
 If you want to handle Perl Unicode in XS extensions, you may find
@@ -936,14 +959,23 @@ Use of locales with Unicode data may lead to odd results.  Currently
 there is some attempt to apply 8-bit locale info to characters in the
 range 0..255, but this is demonstrably incorrect for locales that use
 characters above that range when mapped into Unicode.  It will also
-tend to run slower.  Avoidance of locales is strongly encouraged.
+tend to run slower.  Avoidance of locales is strongly encouraged,
+with one known expection, see the next paragraph.
+
+If the keys of a hash are "mixed", that is, some keys are Unicode,
+while some keys are "byte", the keys may behave differently in regular
+expressions since the definition of character classes like C</\w/>
+is different for byte strings and character strings.  This problem can
+sometimes be helped by using an appropriate locale (see L<perllocale>).
+Another way is to force all the strings to be character encoded by
+using utf8::upgrade() (see L<utf8>).
 
 Some functions are slower when working on UTF-8 encoded strings than
 on byte encoded strings. All functions that need to hop over
 characters such as length(), substr() or index() can work B<much>
 faster when the underlying data are byte-encoded. Witness the
 following benchmark:
-  
+
   % perl -e '
   use Benchmark;
   use strict;
@@ -962,7 +994,7 @@ following benchmark:
     LENGTH_U:  2 wallclock secs ( 2.11 usr +  0.00 sys =  2.11 CPU) @ 12155.45/s (n=25648)
     SUBSTR_B:  3 wallclock secs ( 2.16 usr +  0.00 sys =  2.16 CPU) @ 374480.09/s (n=808877)
     SUBSTR_U:  2 wallclock secs ( 2.11 usr +  0.00 sys =  2.11 CPU) @ 6791.00/s (n=14329)
-  
+
 The numbers show an incredible slowness on long UTF-8 strings and you
 should carefully avoid to use these functions within tight loops. For
 example if you want to iterate over characters, it is infinitely
@@ -990,7 +1022,7 @@ benchmark shows:
 
 You see, the algorithm based on substr() was faster with byte encoded
 data but it is pathologically slow with UTF-8 data.
-  
+
 =head1 SEE ALSO
 
 L<perluniintro>, L<encoding>, L<Encode>, L<open>, L<utf8>, L<bytes>,
index e36bb07..dd3064f 100644 (file)
@@ -169,16 +169,17 @@ To output UTF-8 always, use the ":utf8" output discipline.  Prepending
 to this sample program ensures the output is completely UTF-8, and      
 of course, removes the warning.
 
+If your locale environment variables (LANGUAGE, LC_ALL, LC_CTYPE, LANG)
+contain the strings 'UTF-8' or 'UTF8' (case-insensitive matching),
+the default encoding of your STDIN, STDOUT, and STDERR, and of
+B<any subsequent file open>, is UTF-8.
+
 =head2 Unicode and EBCDIC
 
 Perl 5.8.0 also supports Unicode on EBCDIC platforms.  There,
 the Unicode support is somewhat more complex to implement since
 additional conversions are needed at every step.  Some problems
-remain, but they all seem to be related to the combination of
-the extra mapping just described and case-insensitive matching:
-for example, "\x{131}" (LATIN SMALL LETTER DOTLESS I) does not
-match "I" case-insensitively, as it should under Unicode.
-(The match succeeds in ASCII-derived platforms.)
+remain, see L<perlebcdic> for details.
 
 In any case, the Unicode support on EBCDIC platforms is better than
 in the 5.6 series, which didn't work much at all for EBCDIC platform.
diff --git a/proto.h b/proto.h
index dad9b57..ac6f281 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -1206,6 +1206,8 @@ STATIC U8*        S_reghop3(pTHX_ U8 *pos, I32 off, U8 *lim);
 STATIC U8*     S_reghopmaybe(pTHX_ U8 *pos, I32 off);
 STATIC U8*     S_reghopmaybe3(pTHX_ U8 *pos, I32 off, U8 *lim);
 STATIC char*   S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *startpos, I32 norun);
+STATIC void    S_to_utf8_substr(pTHX_ regexp * prog);
+STATIC void    S_to_byte_substr(pTHX_ regexp * prog);
 #endif
 
 #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
index 6060fb7..14de347 100644 (file)
--- a/reentr.h
+++ b/reentr.h
 #define REENTRANT_PROTO_B_B    1
 #define REENTRANT_PROTO_B_BI   2
 #define REENTRANT_PROTO_B_BW   3
-#define REENTRANT_PROTO_B_CCS  4
-#define REENTRANT_PROTO_B_IBI  5
-#define REENTRANT_PROTO_B_IBW  6
-#define REENTRANT_PROTO_B_SB   7
-#define REENTRANT_PROTO_B_SBI  8
-#define REENTRANT_PROTO_I_BI   9
-#define REENTRANT_PROTO_I_BW   10
-#define REENTRANT_PROTO_I_CCSBWR       11
-#define REENTRANT_PROTO_I_CCSD 12
-#define REENTRANT_PROTO_I_CII  13
-#define REENTRANT_PROTO_I_CIISD        14
-#define REENTRANT_PROTO_I_CSBI 15
-#define REENTRANT_PROTO_I_CSBIR        16
-#define REENTRANT_PROTO_I_CSBWR        17
-#define REENTRANT_PROTO_I_CSBWRE       18
-#define REENTRANT_PROTO_I_CSD  19
-#define REENTRANT_PROTO_I_CWISBWRE     20
-#define REENTRANT_PROTO_I_CWISD        21
-#define REENTRANT_PROTO_I_H    22
-#define REENTRANT_PROTO_I_IBI  23
-#define REENTRANT_PROTO_I_IBW  24
-#define REENTRANT_PROTO_I_ICBI 25
-#define REENTRANT_PROTO_I_ICSBWR       26
-#define REENTRANT_PROTO_I_ICSD 27
-#define REENTRANT_PROTO_I_ID   28
-#define REENTRANT_PROTO_I_IISD 29
-#define REENTRANT_PROTO_I_ISBWR        30
-#define REENTRANT_PROTO_I_ISD  31
-#define REENTRANT_PROTO_I_LISBI        32
-#define REENTRANT_PROTO_I_LISD 33
-#define REENTRANT_PROTO_I_LS   34
-#define REENTRANT_PROTO_I_S    35
-#define REENTRANT_PROTO_I_SB   36
-#define REENTRANT_PROTO_I_SBI  37
-#define REENTRANT_PROTO_I_SBIE 38
-#define REENTRANT_PROTO_I_SBIH 39
-#define REENTRANT_PROTO_I_SBIR 40
-#define REENTRANT_PROTO_I_SBWR 41
-#define REENTRANT_PROTO_I_SBWRE        42
-#define REENTRANT_PROTO_I_SD   43
-#define REENTRANT_PROTO_I_ST   44
-#define REENTRANT_PROTO_I_TISD 45
-#define REENTRANT_PROTO_I_TS   46
-#define REENTRANT_PROTO_I_TSBI 47
-#define REENTRANT_PROTO_I_TSBIR        48
-#define REENTRANT_PROTO_I_TSBWR        49
-#define REENTRANT_PROTO_I_TSR  50
-#define REENTRANT_PROTO_I_UISBWRE      51
-#define REENTRANT_PROTO_S_CBI  52
-#define REENTRANT_PROTO_S_CCSBI        53
-#define REENTRANT_PROTO_S_CIISBIE      54
-#define REENTRANT_PROTO_S_CSBI 55
-#define REENTRANT_PROTO_S_CSBIE        56
-#define REENTRANT_PROTO_S_CWISBIE      57
-#define REENTRANT_PROTO_S_CWISBWIE     58
-#define REENTRANT_PROTO_S_ICSBI        59
-#define REENTRANT_PROTO_S_ISBI 60
-#define REENTRANT_PROTO_S_LISBI        61
-#define REENTRANT_PROTO_S_SBI  62
-#define REENTRANT_PROTO_S_SBIE 63
-#define REENTRANT_PROTO_S_SBW  64
-#define REENTRANT_PROTO_S_TISBI        65
-#define REENTRANT_PROTO_S_TS   66
-#define REENTRANT_PROTO_S_TSBI 67
-#define REENTRANT_PROTO_S_TSBIE        68
-#define REENTRANT_PROTO_S_TWISBIE      69
-#define REENTRANT_PROTO_V_H    70
-#define REENTRANT_PROTO_V_ID   71
-#define REENTRANT_PROTO_V_S    72
+#define REENTRANT_PROTO_B_CCD  4
+#define REENTRANT_PROTO_B_CCS  5
+#define REENTRANT_PROTO_B_IBI  6
+#define REENTRANT_PROTO_B_IBW  7
+#define REENTRANT_PROTO_B_SB   8
+#define REENTRANT_PROTO_B_SBI  9
+#define REENTRANT_PROTO_I_BI   10
+#define REENTRANT_PROTO_I_BW   11
+#define REENTRANT_PROTO_I_CCSBWR       12
+#define REENTRANT_PROTO_I_CCSD 13
+#define REENTRANT_PROTO_I_CII  14
+#define REENTRANT_PROTO_I_CIISD        15
+#define REENTRANT_PROTO_I_CSBI 16
+#define REENTRANT_PROTO_I_CSBIR        17
+#define REENTRANT_PROTO_I_CSBWR        18
+#define REENTRANT_PROTO_I_CSBWRE       19
+#define REENTRANT_PROTO_I_CSD  20
+#define REENTRANT_PROTO_I_CWISBWRE     21
+#define REENTRANT_PROTO_I_CWISD        22
+#define REENTRANT_PROTO_I_H    23
+#define REENTRANT_PROTO_I_IBI  24
+#define REENTRANT_PROTO_I_IBW  25
+#define REENTRANT_PROTO_I_ICBI 26
+#define REENTRANT_PROTO_I_ICSBWR       27
+#define REENTRANT_PROTO_I_ICSD 28
+#define REENTRANT_PROTO_I_ID   29
+#define REENTRANT_PROTO_I_IISD 30
+#define REENTRANT_PROTO_I_ISBWR        31
+#define REENTRANT_PROTO_I_ISD  32
+#define REENTRANT_PROTO_I_LISBI        33
+#define REENTRANT_PROTO_I_LISD 34
+#define REENTRANT_PROTO_I_LS   35
+#define REENTRANT_PROTO_I_S    36
+#define REENTRANT_PROTO_I_SB   37
+#define REENTRANT_PROTO_I_SBI  38
+#define REENTRANT_PROTO_I_SBIE 39
+#define REENTRANT_PROTO_I_SBIH 40
+#define REENTRANT_PROTO_I_SBIR 41
+#define REENTRANT_PROTO_I_SBWR 42
+#define REENTRANT_PROTO_I_SBWRE        43
+#define REENTRANT_PROTO_I_SD   44
+#define REENTRANT_PROTO_I_ST   45
+#define REENTRANT_PROTO_I_TISD 46
+#define REENTRANT_PROTO_I_TS   47
+#define REENTRANT_PROTO_I_TSBI 48
+#define REENTRANT_PROTO_I_TSBIR        49
+#define REENTRANT_PROTO_I_TSBWR        50
+#define REENTRANT_PROTO_I_TSR  51
+#define REENTRANT_PROTO_I_UISBWRE      52
+#define REENTRANT_PROTO_S_CBI  53
+#define REENTRANT_PROTO_S_CCSBI        54
+#define REENTRANT_PROTO_S_CIISBIE      55
+#define REENTRANT_PROTO_S_CSBI 56
+#define REENTRANT_PROTO_S_CSBIE        57
+#define REENTRANT_PROTO_S_CWISBIE      58
+#define REENTRANT_PROTO_S_CWISBWIE     59
+#define REENTRANT_PROTO_S_ICSBI        60
+#define REENTRANT_PROTO_S_ISBI 61
+#define REENTRANT_PROTO_S_LISBI        62
+#define REENTRANT_PROTO_S_SBI  63
+#define REENTRANT_PROTO_S_SBIE 64
+#define REENTRANT_PROTO_S_SBW  65
+#define REENTRANT_PROTO_S_TISBI        66
+#define REENTRANT_PROTO_S_TS   67
+#define REENTRANT_PROTO_S_TSBI 68
+#define REENTRANT_PROTO_S_TSBIE        69
+#define REENTRANT_PROTO_S_TWISBIE      70
+#define REENTRANT_PROTO_V_H    71
+#define REENTRANT_PROTO_V_ID   72
+#define REENTRANT_PROTO_V_S    73
 
 /* Defines for indicating which special features are supported. */
 
@@ -575,7 +576,11 @@ typedef struct {
        size_t  _asctime_size;
 #endif /* HAS_ASCTIME_R */
 #ifdef HAS_CRYPT_R
+#if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
+       CRYPTD* _crypt_data;
+#else
        struct crypt_data _crypt_struct;
+#endif
 #endif /* HAS_CRYPT_R */
 #ifdef HAS_CTIME_R
        char*   _ctime_buffer;
@@ -740,6 +745,9 @@ typedef struct {
 #   if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCS
 #       define crypt(a, b) crypt_r(a, b, &PL_reentrant_buffer->_crypt_struct)
 #   endif
+#   if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
+#       define crypt(a, b) crypt_r(a, b, &PL_reentrant_buffer->_crypt_data)
+#   endif
 #endif /* HAS_CRYPT_R */
 
 #ifdef HAS_CTERMID_R
index 1e0947a..ae56377 100644 (file)
--- a/reentr.pl
+++ b/reentr.pl
@@ -395,18 +395,27 @@ EOF
            pushinitfree $f;
            pushssif $endif;
        }
-        elsif ($f =~ /^(crypt|drand48|gmtime|localtime|random)$/) {
+        elsif ($f =~ /^(crypt)$/) {
            pushssif $ifdef;
            push @struct, <<EOF;
+#if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
+       $seend{$f} _${f}_data;
+#else
        $seent{$f} _${f}_struct;
+#endif
 EOF
-           if ($f eq 'crypt') {
-               push @init, <<EOF;
+           push @init, <<EOF;
 #ifdef __GLIBC__
        PL_reentrant_buffer->_${f}_struct.initialized = 0;
 #endif
 EOF
-           }
+           pushssif $endif;
+       }
+        elsif ($f =~ /^(drand48|gmtime|localtime|random)$/) {
+           pushssif $ifdef;
+           push @struct, <<EOF;
+       $seent{$f} _${f}_struct;
+EOF
            if ($1 eq 'drand48') {
                push @struct, <<EOF;
        double  _${f}_double;
@@ -877,7 +886,7 @@ EOF
 
 __DATA__
 asctime S      |time   |const struct tm|B_SB|B_SBI|I_SB|I_SBI
-crypt CC       |crypt  |struct crypt_data|B_CCS
+crypt CC       |crypt  |struct crypt_data|B_CCS|B_CCD|D=CRYPTD*
 ctermid        B       |stdio  |               |B_B
 ctime S                |time   |const time_t   |B_SB|B_SBI|I_SB|I_SBI
 drand48                |stdlib |struct drand48_data    |I_ST|T=double*
index 7c34d8f..639f140 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -931,6 +931,8 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, I32 *deltap, reg
                        ? I32_MAX : data->pos_min + data->pos_delta;
                }
                sv_catpvn(data->last_found, STRING(scan), STR_LEN(scan));
+               if (UTF)
+                   SvUTF8_on(data->last_found);
                data->last_end = data->pos_min + l;
                data->pos_min += l; /* As in the first entry. */
                data->flags &= ~SF_BEFORE_EOL;
@@ -1963,17 +1965,23 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
                && SvCUR(data.longest_fixed) == SvCUR(data.longest_float))
                    goto remove_float;          /* As in (a)+. */
 
-           r->float_substr = data.longest_float;
+           if (SvUTF8(data.longest_float)) {
+               r->float_utf8 = data.longest_float;
+               r->float_substr = Nullsv;
+           } else {
+               r->float_substr = data.longest_float;
+               r->float_utf8 = Nullsv;
+           }
            r->float_min_offset = data.offset_float_min;
            r->float_max_offset = data.offset_float_max;
            t = (data.flags & SF_FL_BEFORE_EOL /* Can't have SEOL and MULTI */
                       && (!(data.flags & SF_FL_BEFORE_MEOL)
                           || (RExC_flags16 & PMf_MULTILINE)));
-           fbm_compile(r->float_substr, t ? FBMcf_TAIL : 0);
+           fbm_compile(data.longest_float, t ? FBMcf_TAIL : 0);
        }
        else {
          remove_float:
-           r->float_substr = Nullsv;
+           r->float_substr = r->float_utf8 = Nullsv;
            SvREFCNT_dec(data.longest_float);
            longest_float_length = 0;
        }
@@ -1985,22 +1993,29 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
                    || (RExC_flags16 & PMf_MULTILINE)))) {
            int t;
 
-           r->anchored_substr = data.longest_fixed;
+           if (SvUTF8(data.longest_fixed)) {
+               r->anchored_utf8 = data.longest_fixed;
+               r->anchored_substr = Nullsv;
+           } else {
+               r->anchored_substr = data.longest_fixed;
+               r->anchored_utf8 = Nullsv;
+           }
            r->anchored_offset = data.offset_fixed;
            t = (data.flags & SF_FIX_BEFORE_EOL /* Can't have SEOL and MULTI */
                 && (!(data.flags & SF_FIX_BEFORE_MEOL)
                     || (RExC_flags16 & PMf_MULTILINE)));
-           fbm_compile(r->anchored_substr, t ? FBMcf_TAIL : 0);
+           fbm_compile(data.longest_fixed, t ? FBMcf_TAIL : 0);
        }
        else {
-           r->anchored_substr = Nullsv;
+           r->anchored_substr = r->anchored_utf8 = Nullsv;
            SvREFCNT_dec(data.longest_fixed);
            longest_fixed_length = 0;
        }
        if (r->regstclass
            && (OP(r->regstclass) == REG_ANY || OP(r->regstclass) == SANY))
            r->regstclass = NULL;
-       if ((!r->anchored_substr || r->anchored_offset) && stclass_flag
+       if ((!(r->anchored_substr || r->anchored_utf8) || r->anchored_offset)
+           && stclass_flag
            && !(data.start_class->flags & ANYOF_EOS)
            && !cl_is_anything(data.start_class)) {
            I32 n = add_data(pRExC_state, 1, "f");
@@ -2023,20 +2038,22 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
        /* A temporary algorithm prefers floated substr to fixed one to dig more info. */
        if (longest_fixed_length > longest_float_length) {
            r->check_substr = r->anchored_substr;
+           r->check_utf8 = r->anchored_utf8;
            r->check_offset_min = r->check_offset_max = r->anchored_offset;
            if (r->reganch & ROPT_ANCH_SINGLE)
                r->reganch |= ROPT_NOSCAN;
        }
        else {
            r->check_substr = r->float_substr;
+           r->check_utf8 = r->float_utf8;
            r->check_offset_min = data.offset_float_min;
            r->check_offset_max = data.offset_float_max;
        }
        /* XXXX Currently intuiting is not compatible with ANCH_GPOS.
           This should be changed ASAP!  */
-       if (r->check_substr && !(r->reganch & ROPT_ANCH_GPOS)) {
+       if ((r->check_substr || r->check_utf8) && !(r->reganch & ROPT_ANCH_GPOS)) {
            r->reganch |= RE_USE_INTUIT;
-           if (SvTAIL(r->check_substr))
+           if (SvTAIL(r->check_substr ? r->check_substr : r->check_utf8))
                r->reganch |= RE_INTUIT_TAIL;
        }
     }
@@ -2052,7 +2069,8 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
        data.start_class = &ch_class;
        data.last_closep = &last_close;
        minlen = study_chunk(pRExC_state, &scan, &fake, scan + RExC_size, &data, SCF_DO_STCLASS_AND|SCF_WHILEM_VISITED_POS);
-       r->check_substr = r->anchored_substr = r->float_substr = Nullsv;
+       r->check_substr = r->check_utf8 = r->anchored_substr = r->anchored_utf8
+               = r->float_substr = r->float_utf8 = Nullsv;
        if (!(data.start_class->flags & ANYOF_EOS)
            && !cl_is_anything(data.start_class)) {
            I32 n = add_data(pRExC_state, 1, "f");
@@ -4529,6 +4547,15 @@ Perl_regdump(pTHX_ regexp *r)
                      PL_colors[1],
                      SvTAIL(r->anchored_substr) ? "$" : "",
                      (IV)r->anchored_offset);
+    else if (r->anchored_utf8)
+       PerlIO_printf(Perl_debug_log,
+                     "anchored utf8 `%s%.*s%s'%s at %"IVdf" ",
+                     PL_colors[0],
+                     (int)(SvCUR(r->anchored_utf8) - (SvTAIL(r->anchored_utf8)!=0)),
+                     SvPVX(r->anchored_utf8),
+                     PL_colors[1],
+                     SvTAIL(r->anchored_utf8) ? "$" : "",
+                     (IV)r->anchored_offset);
     if (r->float_substr)
        PerlIO_printf(Perl_debug_log,
                      "floating `%s%.*s%s'%s at %"IVdf"..%"UVuf" ",
@@ -4538,15 +4565,25 @@ Perl_regdump(pTHX_ regexp *r)
                      PL_colors[1],
                      SvTAIL(r->float_substr) ? "$" : "",
                      (IV)r->float_min_offset, (UV)r->float_max_offset);
-    if (r->check_substr)
+    else if (r->float_utf8)
+       PerlIO_printf(Perl_debug_log,
+                     "floating utf8 `%s%.*s%s'%s at %"IVdf"..%"UVuf" ",
+                     PL_colors[0],
+                     (int)(SvCUR(r->float_utf8) - (SvTAIL(r->float_utf8)!=0)),
+                     SvPVX(r->float_utf8),
+                     PL_colors[1],
+                     SvTAIL(r->float_utf8) ? "$" : "",
+                     (IV)r->float_min_offset, (UV)r->float_max_offset);
+    if (r->check_substr || r->check_utf8)
        PerlIO_printf(Perl_debug_log,
                      r->check_substr == r->float_substr
+                     && r->check_utf8 == r->float_utf8
                      ? "(checking floating" : "(checking anchored");
     if (r->reganch & ROPT_NOSCAN)
        PerlIO_printf(Perl_debug_log, " noscan");
     if (r->reganch & ROPT_CHECK_ALL)
        PerlIO_printf(Perl_debug_log, " isall");
-    if (r->check_substr)
+    if (r->check_substr || r->check_utf8)
        PerlIO_printf(Perl_debug_log, ") ");
 
     if (r->regstclass) {
@@ -4795,18 +4832,21 @@ Perl_re_intuit_string(pTHX_ regexp *prog)
 {                              /* Assume that RE_INTUIT is set */
     DEBUG_r(
        {   STRLEN n_a;
-           char *s = SvPV(prog->check_substr,n_a);
+           char *s = SvPV(prog->check_substr
+                     ? prog->check_substr : prog->check_utf8, n_a);
 
            if (!PL_colorset) reginitcolors();
            PerlIO_printf(Perl_debug_log,
-                     "%sUsing REx substr:%s `%s%.60s%s%s'\n",
-                     PL_colors[4],PL_colors[5],PL_colors[0],
+                     "%sUsing REx %ssubstr:%s `%s%.60s%s%s'\n",
+                     PL_colors[4],
+                     prog->check_substr ? "" : "utf8 ",
+                     PL_colors[5],PL_colors[0],
                      s,
                      PL_colors[1],
                      (strlen(s) > 60 ? "..." : ""));
        } );
 
-    return prog->check_substr;
+    return prog->check_substr ? prog->check_substr : prog->check_utf8;
 }
 
 void
@@ -4841,8 +4881,12 @@ Perl_pregfree(pTHX_ struct regexp *r)
     if (r->substrs) {
        if (r->anchored_substr)
            SvREFCNT_dec(r->anchored_substr);
+       if (r->anchored_utf8)
+           SvREFCNT_dec(r->anchored_utf8);
        if (r->float_substr)
            SvREFCNT_dec(r->float_substr);
+       if (r->float_utf8)
+           SvREFCNT_dec(r->float_utf8);
        Safefree(r->substrs);
     }
     if (r->data) {
index bfd00dc..8c027bf 100644 (file)
--- a/regcomp.h
+++ b/regcomp.h
@@ -386,7 +386,8 @@ struct reg_data {
 struct reg_substr_datum {
     I32 min_offset;
     I32 max_offset;
-    SV *substr;
+    SV *substr;                /* non-utf8 variant */
+    SV *utf8_substr;   /* utf8 variant */
 };
 
 struct reg_substr_data {
@@ -394,10 +395,13 @@ struct reg_substr_data {
 };
 
 #define anchored_substr substrs->data[0].substr
+#define anchored_utf8 substrs->data[0].utf8_substr
 #define anchored_offset substrs->data[0].min_offset
 #define float_substr substrs->data[1].substr
+#define float_utf8 substrs->data[1].utf8_substr
 #define float_min_offset substrs->data[1].min_offset
 #define float_max_offset substrs->data[1].max_offset
 #define check_substr substrs->data[2].substr
+#define check_utf8 substrs->data[2].utf8_substr
 #define check_offset_min substrs->data[2].min_offset
 #define check_offset_max substrs->data[2].max_offset
index e676568..5a6d72d 100644 (file)
--- a/regexec.c
+++ b/regexec.c
  * Forwards.
  */
 
-#define CHR_SVLEN(sv) (UTF ? sv_len_utf8(sv) : SvCUR(sv))
+#define CHR_SVLEN(sv) (do_utf8 ? sv_len_utf8(sv) : SvCUR(sv))
 #define CHR_DIST(a,b) (PL_reg_match_utf8 ? utf8_distance(a,b) : a - b)
 
 #define reghop_c(pos,off) ((char*)reghop((U8*)pos, off))
@@ -392,6 +392,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
     register SV *check;
     char *strbeg;
     char *t;
+    int do_utf8 = sv ? SvUTF8(sv) : 0; /* if no sv we have to assume bytes */
     I32 ml_anch;
     register char *other_last = Nullch;        /* other substr checked before this */
     char *check_at = Nullch;           /* check substr found at this pos */
@@ -437,7 +438,20 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
     }
     strbeg = (sv && SvPOK(sv)) ? strend - SvCUR(sv) : strpos;
     PL_regeol = strend;
-    check = prog->check_substr;
+    if (do_utf8) {
+       if (!prog->check_utf8 && prog->check_substr)
+           to_utf8_substr(prog);
+       check = prog->check_utf8;
+    } else {
+       if (!prog->check_substr && prog->check_utf8)
+           to_byte_substr(prog);
+       check = prog->check_substr;
+    }
+   if (check == &PL_sv_undef) {
+       DEBUG_r(PerlIO_printf(Perl_debug_log,
+               "Non-utf string cannot match utf check string\n"));
+       goto fail;
+    }
     if (prog->reganch & ROPT_ANCH) {   /* Match at beg-of-str or after \n */
        ml_anch = !( (prog->reganch & ROPT_ANCH_SINGLE)
                     || ( (prog->reganch & ROPT_ANCH_BOL)
@@ -543,7 +557,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
 
     DEBUG_r(PerlIO_printf(Perl_debug_log, "%s %s substr `%s%.*s%s'%s%s",
                          (s ? "Found" : "Did not find"),
-                         ((check == prog->anchored_substr) ? "anchored" : "floating"),
+                         (check == (do_utf8 ? prog->anchored_utf8 : prog->anchored_substr) ? "anchored" : "floating"),
                          PL_colors[0],
                          (int)(SvCUR(check) - (SvTAIL(check)!=0)),
                          SvPVX(check),
@@ -566,16 +580,17 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
        Probably it is right to do no SCREAM here...
      */
 
-    if (prog->float_substr && prog->anchored_substr) {
+    if (do_utf8 ? (prog->float_utf8 && prog->anchored_utf8) : (prog->float_substr && prog->anchored_substr)) {
        /* Take into account the "other" substring. */
        /* XXXX May be hopelessly wrong for UTF... */
        if (!other_last)
            other_last = strpos;
-       if (check == prog->float_substr) {
+       if (check == (do_utf8 ? prog->float_utf8 : prog->float_substr)) {
          do_other_anchored:
            {
                char *last = HOP3c(s, -start_shift, strbeg), *last1, *last2;
                char *s1 = s;
+               SV* must;
 
                t = s - prog->check_offset_max;
                if (s - strpos > prog->check_offset_max  /* signed-corrected t > strpos */
@@ -593,20 +608,27 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
                    last1 = last;
  /* XXXX It is not documented what units *_offsets are in.  Assume bytes.  */
                /* On end-of-str: see comment below. */
-               s = fbm_instr((unsigned char*)t,
-                             HOP3(HOP3(last1, prog->anchored_offset, strend)
-                                  + SvCUR(prog->anchored_substr),
-                                  -(SvTAIL(prog->anchored_substr)!=0), strbeg),
-                             prog->anchored_substr,
-                             PL_multiline ? FBMrf_MULTILINE : 0);
+               must = do_utf8 ? prog->anchored_utf8 : prog->anchored_substr;
+               if (must == &PL_sv_undef) {
+                   s = (char*)NULL;
+                   DEBUG_r(must = prog->anchored_utf8);        /* for debug */
+               }
+               else
+                   s = fbm_instr(
+                       (unsigned char*)t,
+                       HOP3(HOP3(last1, prog->anchored_offset, strend)
+                               + SvCUR(must), -(SvTAIL(must)!=0), strbeg),
+                       must,
+                       PL_multiline ? FBMrf_MULTILINE : 0
+                   );
                DEBUG_r(PerlIO_printf(Perl_debug_log,
                        "%s anchored substr `%s%.*s%s'%s",
                        (s ? "Found" : "Contradicts"),
                        PL_colors[0],
-                         (int)(SvCUR(prog->anchored_substr)
-                         - (SvTAIL(prog->anchored_substr)!=0)),
-                         SvPVX(prog->anchored_substr),
-                         PL_colors[1], (SvTAIL(prog->anchored_substr) ? "$" : "")));
+                         (int)(SvCUR(must)
+                         - (SvTAIL(must)!=0)),
+                         SvPVX(must),
+                         PL_colors[1], (SvTAIL(must) ? "$" : "")));
                if (!s) {
                    if (last1 >= last2) {
                        DEBUG_r(PerlIO_printf(Perl_debug_log,
@@ -633,54 +655,60 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
            }
        }
        else {          /* Take into account the floating substring. */
-               char *last, *last1;
-               char *s1 = s;
-
-               t = HOP3c(s, -start_shift, strbeg);
-               last1 = last =
-                   HOP3c(strend, -prog->minlen + prog->float_min_offset, strbeg);
-               if (CHR_DIST((U8*)last, (U8*)t) > prog->float_max_offset)
-                   last = HOP3c(t, prog->float_max_offset, strend);
-               s = HOP3c(t, prog->float_min_offset, strend);
-               if (s < other_last)
-                   s = other_last;
+           char *last, *last1;
+           char *s1 = s;
+           SV* must;
+
+           t = HOP3c(s, -start_shift, strbeg);
+           last1 = last =
+               HOP3c(strend, -prog->minlen + prog->float_min_offset, strbeg);
+           if (CHR_DIST((U8*)last, (U8*)t) > prog->float_max_offset)
+               last = HOP3c(t, prog->float_max_offset, strend);
+           s = HOP3c(t, prog->float_min_offset, strend);
+           if (s < other_last)
+               s = other_last;
  /* XXXX It is not documented what units *_offsets are in.  Assume bytes.  */
-               /* fbm_instr() takes into account exact value of end-of-str
-                  if the check is SvTAIL(ed).  Since false positives are OK,
-                  and end-of-str is not later than strend we are OK. */
+           must = do_utf8 ? prog->float_utf8 : prog->float_substr;
+           /* fbm_instr() takes into account exact value of end-of-str
+              if the check is SvTAIL(ed).  Since false positives are OK,
+              and end-of-str is not later than strend we are OK. */
+           if (must == &PL_sv_undef) {
+               s = (char*)NULL;
+               DEBUG_r(must = prog->float_utf8);       /* for debug message */
+           }
+           else
                s = fbm_instr((unsigned char*)s,
-                             (unsigned char*)last + SvCUR(prog->float_substr)
-                                 - (SvTAIL(prog->float_substr)!=0),
-                             prog->float_substr, PL_multiline ? FBMrf_MULTILINE : 0);
-               DEBUG_r(PerlIO_printf(Perl_debug_log, "%s floating substr `%s%.*s%s'%s",
-                       (s ? "Found" : "Contradicts"),
-                       PL_colors[0],
-                         (int)(SvCUR(prog->float_substr)
-                         - (SvTAIL(prog->float_substr)!=0)),
-                         SvPVX(prog->float_substr),
-                         PL_colors[1], (SvTAIL(prog->float_substr) ? "$" : "")));
-               if (!s) {
-                   if (last1 == last) {
-                       DEBUG_r(PerlIO_printf(Perl_debug_log,
-                                               ", giving up...\n"));
-                       goto fail_finish;
-                   }
+                             (unsigned char*)last + SvCUR(must)
+                                 - (SvTAIL(must)!=0),
+                             must, PL_multiline ? FBMrf_MULTILINE : 0);
+           DEBUG_r(PerlIO_printf(Perl_debug_log, "%s floating substr `%s%.*s%s'%s",
+                   (s ? "Found" : "Contradicts"),
+                   PL_colors[0],
+                     (int)(SvCUR(must) - (SvTAIL(must)!=0)),
+                     SvPVX(must),
+                     PL_colors[1], (SvTAIL(must) ? "$" : "")));
+           if (!s) {
+               if (last1 == last) {
                    DEBUG_r(PerlIO_printf(Perl_debug_log,
-                       ", trying anchored starting at offset %ld...\n",
-                       (long)(s1 + 1 - i_strpos)));
-                   other_last = last;
-                   s = HOP3c(t, 1, strend);
-                   goto restart;
-               }
-               else {
-                   DEBUG_r(PerlIO_printf(Perl_debug_log, " at offset %ld...\n",
-                         (long)(s - i_strpos)));
-                   other_last = s; /* Fix this later. --Hugo */
-                   s = s1;
-                   if (t == strpos)
-                       goto try_at_start;
-                   goto try_at_offset;
+                                           ", giving up...\n"));
+                   goto fail_finish;
                }
+               DEBUG_r(PerlIO_printf(Perl_debug_log,
+                   ", trying anchored starting at offset %ld...\n",
+                   (long)(s1 + 1 - i_strpos)));
+               other_last = last;
+               s = HOP3c(t, 1, strend);
+               goto restart;
+           }
+           else {
+               DEBUG_r(PerlIO_printf(Perl_debug_log, " at offset %ld...\n",
+                     (long)(s - i_strpos)));
+               other_last = s; /* Fix this later. --Hugo */
+               s = s1;
+               if (t == strpos)
+                   goto try_at_start;
+               goto try_at_offset;
+           }
        }
     }
 
@@ -703,7 +731,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
            while (t < strend - prog->minlen) {
                if (*t == '\n') {
                    if (t < check_at - prog->check_offset_min) {
-                       if (prog->anchored_substr) {
+                       if (do_utf8 ? prog->anchored_utf8 : prog->anchored_substr) {
                            /* Since we moved from the found position,
                               we definitely contradict the found anchored
                               substr.  Due to the above check we do not
@@ -743,7 +771,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
        }
        s = t;
       set_useful:
-       ++BmUSEFUL(prog->check_substr); /* hooray/5 */
+       ++BmUSEFUL(do_utf8 ? prog->check_utf8 : prog->check_substr);    /* hooray/5 */
     }
     else {
        /* The found string does not prohibit matching at strpos,
@@ -767,15 +795,23 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
        );
       success_at_start:
        if (!(prog->reganch & ROPT_NAUGHTY)     /* XXXX If strpos moved? */
-           && prog->check_substr               /* Could be deleted already */
-           && --BmUSEFUL(prog->check_substr) < 0
-           && prog->check_substr == prog->float_substr)
+           && (do_utf8 ? (
+               prog->check_utf8                /* Could be deleted already */
+               && --BmUSEFUL(prog->check_utf8) < 0
+               && (prog->check_utf8 == prog->float_utf8)
+           ) : (
+               prog->check_substr              /* Could be deleted already */
+               && --BmUSEFUL(prog->check_substr) < 0
+               && (prog->check_substr == prog->float_substr)
+           )))
        {
            /* If flags & SOMETHING - do not do it many times on the same match */
            DEBUG_r(PerlIO_printf(Perl_debug_log, "... Disabling check substring...\n"));
-           SvREFCNT_dec(prog->check_substr);
-           prog->check_substr = Nullsv;        /* disable */
-           prog->float_substr = Nullsv;        /* clear */
+           SvREFCNT_dec(do_utf8 ? prog->check_utf8 : prog->check_substr);
+           if (do_utf8 ? prog->check_substr : prog->check_utf8)
+               SvREFCNT_dec(do_utf8 ? prog->check_substr : prog->check_utf8);
+           prog->check_substr = prog->check_utf8 = Nullsv;     /* disable */
+           prog->float_substr = prog->float_utf8 = Nullsv;     /* clear */
            check = Nullsv;                     /* abort */
            s = strpos;
            /* XXXX This is a remnant of the old implementation.  It
@@ -802,9 +838,9 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
        int cl_l = (PL_regkind[(U8)OP(prog->regstclass)] == EXACT
                    ? CHR_DIST(str+STR_LEN(prog->regstclass), str)
                    : 1);
-       char *endpos = (prog->anchored_substr || ml_anch)
+       char *endpos = (prog->anchored_substr || prog->anchored_utf8 || ml_anch)
                ? HOP3c(s, (prog->minlen ? cl_l : 0), strend)
-               : (prog->float_substr
+               : (prog->float_substr || prog->float_utf8
                   ? HOP3c(HOP3c(check_at, -start_shift, strbeg),
                           cl_l, strend)
                   : strend);
@@ -830,8 +866,8 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
            if ((prog->reganch & ROPT_ANCH) && !ml_anch)
                goto fail;
            /* Contradict one of substrings */
-           if (prog->anchored_substr) {
-               if (prog->anchored_substr == check) {
+           if (prog->anchored_substr || prog->anchored_utf8) {
+               if ((do_utf8 ? prog->anchored_utf8 : prog->anchored_substr) == check) {
                    DEBUG_r( what = "anchored" );
                  hop_and_restart:
                    s = HOP3c(t, 1, strend);
@@ -871,7 +907,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
                          PL_colors[0],PL_colors[1], (long)(t - i_strpos)) );
                goto try_at_offset;
            }
-           if (!prog->float_substr)    /* Could have been deleted */
+           if (!(do_utf8 ? prog->float_utf8 : prog->float_substr))     /* Could have been deleted */
                goto fail;
            /* Check is floating subtring. */
          retry_floating_check:
@@ -898,8 +934,8 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
     return s;
 
   fail_finish:                         /* Substring not found */
-    if (prog->check_substr)            /* could be removed already */
-       BmUSEFUL(prog->check_substr) += 5; /* hooray */
+    if (prog->check_substr || prog->check_utf8)                /* could be removed already */
+       BmUSEFUL(do_utf8 ? prog->check_utf8 : prog->check_substr) += 5; /* hooray */
   fail:
     DEBUG_r(PerlIO_printf(Perl_debug_log, "%sMatch rejected by optimizer%s\n",
                          PL_colors[4],PL_colors[5]));
@@ -1626,8 +1662,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
            PL_reg_ganch = strbeg;
     }
 
-    if (do_utf8 == (UTF!=0) &&
-       !(flags & REXEC_CHECKED) && prog->check_substr != Nullsv) {
+    if (!(flags & REXEC_CHECKED) && (prog->check_substr != Nullsv || prog->check_utf8 != Nullsv)) {
        re_scream_pos_data d;
 
        d.scream_olds = &scream_olds;
@@ -1677,7 +1712,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
                dontbother = minlen - 1;
            end = HOP3c(strend, -dontbother, strbeg) - 1;
            /* for multiline we only have to try after newlines */
-           if (prog->check_substr) {
+           if (prog->check_substr || prog->check_utf8) {
                if (s == startpos)
                    goto after_try;
                while (1) {
@@ -1713,13 +1748,16 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
     }
 
     /* Messy cases:  unanchored match. */
-    if (prog->anchored_substr && prog->reganch & ROPT_SKIP) {
+    if ((prog->anchored_substr || prog->anchored_utf8) && prog->reganch & ROPT_SKIP) {
        /* we have /x+whatever/ */
        /* it must be a one character string (XXXX Except UTF?) */
-       char ch = SvPVX(prog->anchored_substr)[0];
+       char ch;
 #ifdef DEBUGGING
        int did_match = 0;
 #endif
+       if (!(do_utf8 ? prog->anchored_utf8 : prog->anchored_substr))
+           do_utf8 ? to_utf8_substr(prog) : to_byte_substr(prog);
+       ch = SvPVX(do_utf8 ? prog->anchored_utf8 : prog->anchored_substr)[0];
 
        if (do_utf8) {
            while (s < strend) {
@@ -1751,23 +1789,37 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
                );
     }
     /*SUPPRESS 560*/
-    else if (do_utf8 == (UTF!=0) &&
-            (prog->anchored_substr != Nullsv
-             || (prog->float_substr != Nullsv
-                 && prog->float_max_offset < strend - s))) {
-       SV *must = prog->anchored_substr
-           ? prog->anchored_substr : prog->float_substr;
-       I32 back_max =
-           prog->anchored_substr ? prog->anchored_offset : prog->float_max_offset;
-       I32 back_min =
-           prog->anchored_substr ? prog->anchored_offset : prog->float_min_offset;
-       char *last = HOP3c(strend,      /* Cannot start after this */
-                         -(I32)(CHR_SVLEN(must)
-                                - (SvTAIL(must) != 0) + back_min), strbeg);
+    else if (prog->anchored_substr != Nullsv
+             || prog->anchored_utf8 != Nullsv
+             || ((prog->float_substr != Nullsv || prog->float_utf8 != Nullsv)
+                 && prog->float_max_offset < strend - s)) {
+       SV *must;
+       I32 back_max;
+       I32 back_min;
+       char *last;
        char *last1;            /* Last position checked before */
 #ifdef DEBUGGING
        int did_match = 0;
 #endif
+       if (prog->anchored_substr || prog->anchored_utf8) {
+           if (!(do_utf8 ? prog->anchored_utf8 : prog->anchored_substr))
+               do_utf8 ? to_utf8_substr(prog) : to_byte_substr(prog);
+           must = do_utf8 ? prog->anchored_utf8 : prog->anchored_substr;
+           back_max = back_min = prog->anchored_offset;
+       } else {
+           if (!(do_utf8 ? prog->float_utf8 : prog->float_substr))
+               do_utf8 ? to_utf8_substr(prog) : to_byte_substr(prog);
+           must = do_utf8 ? prog->float_utf8 : prog->float_substr;
+           back_max = prog->float_max_offset;
+           back_min = prog->float_min_offset;
+       }
+       if (must == &PL_sv_undef)
+           /* could not downgrade utf8 check substring, so must fail */
+           goto phooey;
+
+       last = HOP3c(strend,    /* Cannot start after this */
+                         -(I32)(CHR_SVLEN(must)
+                                - (SvTAIL(must) != 0) + back_min), strbeg);
 
        if (s > PL_bostr)
            last1 = HOPc(s, -1);
@@ -1815,7 +1867,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
        DEBUG_r(if (!did_match)
                     PerlIO_printf(Perl_debug_log, 
                                   "Did not find %s substr `%s%.*s%s'%s...\n",
-                             ((must == prog->anchored_substr)
+                             ((must == prog->anchored_substr || must == prog->anchored_utf8)
                               ? "anchored" : "floating"),
                              PL_colors[0],
                              (int)(SvCUR(must) - (SvTAIL(must)!=0)),
@@ -1855,20 +1907,26 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
     }
     else {
        dontbother = 0;
-       if (prog->float_substr != Nullsv) {     /* Trim the end. */
+       if (prog->float_substr != Nullsv || prog->float_utf8 != Nullsv) {
+           /* Trim the end. */
            char *last;
+           SV* float_real;
+
+           if (!(do_utf8 ? prog->float_utf8 : prog->float_substr))
+               do_utf8 ? to_utf8_substr(prog) : to_byte_substr(prog);
+           float_real = do_utf8 ? prog->float_utf8 : prog->float_substr;
 
            if (flags & REXEC_SCREAM) {
-               last = screaminstr(sv, prog->float_substr, s - strbeg,
+               last = screaminstr(sv, float_real, s - strbeg,
                                   end_shift, &scream_pos, 1); /* last one */
                if (!last)
                    last = scream_olds; /* Only one occurrence. */
            }
            else {
                STRLEN len;
-               char *little = SvPV(prog->float_substr, len);
+               char *little = SvPV(float_real, len);
 
-               if (SvTAIL(prog->float_substr)) {
+               if (SvTAIL(float_real)) {
                    if (memEQ(strend - len + 1, little, len - 1))
                        last = strend - len + 1;
                    else if (!PL_multiline)
@@ -4426,3 +4484,59 @@ restore_pos(pTHX_ void *arg)
        PL_curpm = PL_reg_oldcurpm;
     }  
 }
+
+STATIC void
+S_to_utf8_substr(pTHX_ register regexp *prog)
+{
+    SV* sv;
+    if (prog->float_substr && !prog->float_utf8) {
+       prog->float_utf8 = sv = NEWSV(117, 0);
+       SvSetMagicSV(sv, prog->float_substr);
+       sv_utf8_upgrade(sv);
+       if (SvTAIL(prog->float_substr))
+           SvTAIL_on(sv);
+       if (prog->float_substr == prog->check_substr)
+           prog->check_utf8 = sv;
+    }
+    if (prog->anchored_substr && !prog->anchored_utf8) {
+       prog->anchored_utf8 = sv = NEWSV(118, 0);
+       SvSetMagicSV(sv, prog->anchored_substr);
+       sv_utf8_upgrade(sv);
+       if (SvTAIL(prog->anchored_substr))
+           SvTAIL_on(sv);
+       if (prog->anchored_substr == prog->check_substr)
+           prog->check_utf8 = sv;
+    }
+}
+
+STATIC void
+S_to_byte_substr(pTHX_ register regexp *prog)
+{
+    SV* sv;
+    if (prog->float_utf8 && !prog->float_substr) {
+       prog->float_substr = sv = NEWSV(117, 0);
+       SvSetMagicSV(sv, prog->float_utf8);
+       if (sv_utf8_downgrade(sv, TRUE)) {
+           if (SvTAIL(prog->float_utf8))
+               SvTAIL_on(sv);
+       } else {
+           SvREFCNT_dec(sv);
+           prog->float_substr = sv = &PL_sv_undef;
+       }
+       if (prog->float_utf8 == prog->check_utf8)
+           prog->check_substr = sv;
+    }
+    if (prog->anchored_utf8 && !prog->anchored_substr) {
+       prog->anchored_substr = sv = NEWSV(118, 0);
+       SvSetMagicSV(sv, prog->anchored_utf8);
+       if (sv_utf8_downgrade(sv, TRUE)) {
+           if (SvTAIL(prog->anchored_utf8))
+               SvTAIL_on(sv);
+       } else {
+           SvREFCNT_dec(sv);
+           prog->anchored_substr = sv = &PL_sv_undef;
+       }
+       if (prog->anchored_utf8 == prog->check_utf8)
+           prog->check_substr = sv;
+    }
+}
diff --git a/sv.c b/sv.c
index ac40900..21de7ed 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -8592,6 +8592,7 @@ Perl_re_dup(pTHX_ REGEXP *r, CLONE_PARAMS *param)
        s->min_offset = r->substrs->data[i].min_offset;
        s->max_offset = r->substrs->data[i].max_offset;
        s->substr     = sv_dup_inc(r->substrs->data[i].substr, param);
+       s->utf8_substr = sv_dup_inc(r->substrs->data[i].utf8_substr, param);
     }
 
     ret->regstclass = NULL;
index c30e14a..e7a7cb7 100755 (executable)
--- a/t/io/fs.t
+++ b/t/io/fs.t
@@ -41,6 +41,9 @@ my $needs_fh_reopen =
 
 $needs_fh_reopen = 1 if (defined &Win32::IsWin95 && Win32::IsWin95());
 
+my $skip_mode_checks =
+    $^O eq 'cygwin' && $ENV{CYGWIN} !~ /ntsec/;
+
 plan tests => 36;
 
 
@@ -93,8 +96,13 @@ SKIP: {
 
     SKIP: {
         skip "hard links not that hard in $^O", 1 if $^O eq 'amigaos';
+       skip "no mode checks", 1 if $skip_mode_checks;
 
-        is($mode & 0777, 0666, "mode of triply-linked file");
+       if ($^O eq 'cygwin') { # new files on cygwin get rwx instead of rw-
+           is($mode & 0777, 0777, "mode of triply-linked file");
+       } else {
+            is($mode & 0777, 0666, "mode of triply-linked file");
+       }
     }
 }
 
@@ -108,7 +116,11 @@ SKIP: {
     ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
      $blksize,$blocks) = stat('c');
 
-    is($mode & 0777, $newmode, "chmod going through");
+    SKIP: {
+       skip "no mode checks", 1 if $skip_mode_checks;
+
+        is($mode & 0777, $newmode, "chmod going through");
+    }
 
     $newmode = 0700;
     chmod 0444, 'x';
@@ -119,12 +131,20 @@ SKIP: {
     ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
      $blksize,$blocks) = stat('c');
 
-    is($mode & 0777, $newmode, "chmod going through to c");
+    SKIP: {
+       skip "no mode checks", 1 if $skip_mode_checks;
+
+        is($mode & 0777, $newmode, "chmod going through to c");
+    }
 
     ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
      $blksize,$blocks) = stat('x');
 
-    is($mode & 0777, $newmode, "chmod going through to x");
+    SKIP: {
+       skip "no mode checks", 1 if $skip_mode_checks;
+
+        is($mode & 0777, $newmode, "chmod going through to x");
+    }
 
     is(unlink('b','x'), 2, "unlink two files");
 
index 7624181..9035886 100644 (file)
@@ -114,9 +114,17 @@ foreach my $mod (<DATA>) {
 
 my @Core_Modules = sort keys %Core_Modules;
 
-print "1..".@Core_Modules."\n";
+print "1..".(1+@Core_Modules)."\n";
 
-my $test_num = 1;
+my $message
+  = "ok 1 - All modules should have tests # TODO Make Schwern Poorer\n";
+if (@Core_Modules) {
+  print "not $message";
+} else {
+  print $message;
+}
+
+my $test_num = 2;
 
 foreach my $module (@Core_Modules) {
     print "$module compile failed\nnot " unless compile_module($module);
@@ -149,8 +157,15 @@ CGI::Util
 Carp::Heavy
 CPAN::Nox
 Exporter::Heavy
+ExtUtils::Command
 ExtUtils::Constant
+ExtUtils::Embed
+ExtUtils::Installed
 ExtUtils::MakeMaker
+ExtUtils::Manifest
+ExtUtils::Mkbootstrap
+ExtUtils::Packlist
+File::Spec::Functions
 Filter::Util::Call
 GDBM_File
 I18N::LangTags::List
@@ -168,6 +183,7 @@ Locale::Constants
 Locale::Country
 Locale::Currency
 Locale::Language
+Locale::Script
 MIME::QuotedPrint
 Math::BigFloat
 Math::BigInt::Calc
@@ -188,11 +204,14 @@ Net::Time
 ODBM_File
 Pod::Checker
 Pod::Find
+Pod::Functions
 Pod::Html
+Pod::InputObjects
 Pod::LaTeX
 Pod::Man
 Pod::ParseLink
 Pod::ParseUtils
+Pod::Select
 Pod::Text
 Pod::Text::Overstrike
 Pod::Text::Termcap
@@ -201,6 +220,9 @@ SDBM_File
 Safe
 Scalar::Util
 Sys::Syslog
+Test::Builder
+Test::Harness::Assert
+Test::Harness::Straps
 Test::More
 Test::ParseWords
 Text::Tabs
index bbab0fb..4c1b36a 100755 (executable)
@@ -83,7 +83,7 @@ is( system(qq{$Perl "-I../lib" -e "use vmsish qw(hushed); exit 1"}), $exit_one,
 
 
 $rc = system "lskdfj";
-unless( ok($rc == 255 << 8 or $rc == -1 or $rc == 256) ) {
+unless( ok($rc == 255 << 8 or $rc == -1 or $rc == 256 or $rc == 512) ) {
     print "# \$rc == $rc\n";
 }
 
index ede0b8b..139f723 100755 (executable)
@@ -55,7 +55,7 @@ $PERL = ($Is_NetWare            ? 'perl'   :
 eval '$ENV{"FOO"} = "hi there";';      # check that ENV is inited inside eval
 # cmd.exe will echo 'variable=value' but 4nt will echo just the value
 # -- Nikola Knezevic
-if ($Is_MSWin32)  { ok `set FOO` =~ /^(FOO=)?hi there$/; }
+if ($Is_MSWin32)  { ok `set FOO` =~ /^(?:FOO=)?hi there$/; }
 elsif ($Is_MacOS) { ok "1 # skipped", 1; }
 elsif ($Is_VMS)   { ok `write sys\$output f\$trnlnm("FOO")` eq "hi there\n"; }
 else              { ok `echo \$FOO` eq "hi there\n"; }
@@ -246,7 +246,7 @@ else {
        $0 = "bar";
 # cmd.exe will echo 'variable=value' but 4nt will echo just the value
 # -- Nikola Knezevic
-       ok ($Is_MSWin32 ? (`set __NoNeSuCh` =~ /^(__NoNeSuCh=)?foo$/)
+       ok ($Is_MSWin32 ? (`set __NoNeSuCh` =~ /^(?:__NoNeSuCh=)?foo$/)
                            : (`echo \$__NoNeSuCh` eq "foo\n") );
 }
 
index a00e624..b5dff4b 100755 (executable)
@@ -6,7 +6,7 @@
 
 $| = 1;
 
-print "1..864\n";
+print "1..892\n";
 
 BEGIN {
     chdir 't' if -d 't';
@@ -2730,3 +2730,44 @@ print "# some Unicode properties\n";
     print $u eq "feeber" ? "ok 864\n" : "not ok 864\n";
 }
 
+{
+    print "# UTF-8 bug with s///\n";
+    # check utf8/non-utf8 mixtures
+    # try to force all float/anchored check combinations
+    my $c = "\x{100}";
+    my $test = 865;
+    my $subst;
+    for my $re (
+       "xx.*$c", "x.*$c$c", "$c.*xx", "$c$c.*x", "xx.*(?=$c)", "(?=$c).*xx",
+    ) {
+       print "xxx" =~ /$re/ ? "not ok $test\n" : "ok $test\n";
+       ++$test;
+       print +($subst = "xxx") =~ s/$re// ? "not ok $test\n" : "ok $test\n";
+       ++$test;
+    }
+    for my $re ("xx.*$c*", "$c*.*xx") {
+       print "xxx" =~ /$re/ ? "ok $test\n" : "not ok $test\n";
+       ++$test;
+       ($subst = "xxx") =~ s/$re//;
+       print $subst eq '' ? "ok $test\n" : "not ok $test\t# $subst\n";
+       ++$test;
+    }
+    for my $re ("xxy*", "y*xx") {
+       print "xx$c" =~ /$re/ ? "ok $test\n" : "not ok $test\n";
+       ++$test;
+       ($subst = "xx$c") =~ s/$re//;
+       print $subst eq $c ? "ok $test\n" : "not ok $test\n";
+       ++$test;
+       print "xy$c" =~ /$re/ ? "not ok $test\n" : "ok $test\n";
+       ++$test;
+       print +($subst = "xy$c") =~ /$re/ ? "not ok $test\n" : "ok $test\n";
+       ++$test;
+    }
+    for my $re ("xy$c*z", "x$c*yz") {
+       print "xyz" =~ /$re/ ? "ok $test\n" : "not ok $test\n";
+       ++$test;
+       ($subst = "xyz") =~ s/$re//;
+       print $subst eq '' ? "ok $test\n" : "not ok $test\n";
+       ++$test;
+    }
+}
index 52bea49..47716c3 100644 (file)
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -230,11 +230,11 @@ Perl_vmstrnenv(const char *lnm, char *eqv, unsigned long int idx,
              if (thr && PL_curcop) {
 #endif
                if (ckWARN(WARN_MISC)) {
-                 Perl_warner(aTHX_ WARN_MISC,"Value of CLI symbol \"%s\" too long",lnm);
+                 Perl_warner(aTHX_ packWARN(WARN_MISC),"Value of CLI symbol \"%s\" too long",lnm);
                }
 #if defined(USE_5005THREADS)
              } else {
-                 Perl_warner(aTHX_ WARN_MISC,"Value of CLI symbol \"%s\" too long",lnm);
+                 Perl_warner(aTHX_ packWARN(WARN_MISC),"Value of CLI symbol \"%s\" too long",lnm);
              }
 #endif
              
@@ -494,7 +494,7 @@ prime_env_iter(void)
       for (j = 0; environ[j]; j++) { 
         if (!(start = strchr(environ[j],'='))) {
           if (ckWARN(WARN_INTERNAL)) 
-            Perl_warner(aTHX_ WARN_INTERNAL,"Ill-formed CRTL environ value \"%s\"\n",environ[j]);
+            Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"Ill-formed CRTL environ value \"%s\"\n",environ[j]);
         }
         else {
           start++;
@@ -564,7 +564,7 @@ prime_env_iter(void)
         continue;
       }
       if (sts == SS$_BUFFEROVF && ckWARN(WARN_INTERNAL))
-        Perl_warner(aTHX_ WARN_INTERNAL,"Buffer overflow in prime_env_iter: %s",buf);
+        Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"Buffer overflow in prime_env_iter: %s",buf);
 
       for (cp1 = buf; *cp1 && isspace(*cp1); cp1++) ;
       if (*cp1 == '(' || /* Logical name table name */
@@ -585,7 +585,7 @@ prime_env_iter(void)
         cp1--;  /* stop on last non-space char */
       }
       if ((!keylen || (cp1 - cp2 < -1)) && ckWARN(WARN_INTERNAL)) {
-        Perl_warner(aTHX_ WARN_INTERNAL,"Ill-formed message in prime_env_iter: |%s|",buf);
+        Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"Ill-formed message in prime_env_iter: |%s|",buf);
         continue;
       }
       PERL_HASH(hash,key,keylen);
@@ -661,7 +661,7 @@ Perl_vmssetenv(pTHX_ char *lnm, char *eqv, struct dsc$descriptor_s **tabvec)
           ivenv = 1; retsts = SS$_NOLOGNAM;
 #else
               if (ckWARN(WARN_INTERNAL))
-                Perl_warner(aTHX_ WARN_INTERNAL,"This Perl can't reset CRTL environ elements (%s)",lnm);
+                Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"This Perl can't reset CRTL environ elements (%s)",lnm);
               ivenv = 1; retsts = SS$_NOSUCHPGM;
               break;
             }
@@ -696,7 +696,7 @@ Perl_vmssetenv(pTHX_ char *lnm, char *eqv, struct dsc$descriptor_s **tabvec)
         return setenv(lnm,eqv,1) ? vaxc$errno : 0;
 #else
         if (ckWARN(WARN_INTERNAL))
-          Perl_warner(aTHX_ WARN_INTERNAL,"This Perl can't set CRTL environ elements (%s=%s)",lnm,eqv);
+          Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"This Perl can't set CRTL environ elements (%s=%s)",lnm,eqv);
         retsts = SS$_NOSUCHPGM;
 #endif
       }
@@ -718,7 +718,7 @@ Perl_vmssetenv(pTHX_ char *lnm, char *eqv, struct dsc$descriptor_s **tabvec)
          if (eqvdsc.dsc$w_length > LNM$C_NAMLENGTH) {
            eqvdsc.dsc$w_length = LNM$C_NAMLENGTH;
            if (ckWARN(WARN_MISC)) {
-             Perl_warner(aTHX_ WARN_MISC,"Value of logical \"%s\" too long. Truncating to %i bytes",lnm, LNM$C_NAMLENGTH);
+             Perl_warner(aTHX_ packWARN(WARN_MISC),"Value of logical \"%s\" too long. Truncating to %i bytes",lnm, LNM$C_NAMLENGTH);
            }
          }
           retsts = lib$set_logical(&lnmdsc,&eqvdsc,tabvec[0],0,0);
@@ -2253,7 +2253,7 @@ safe_popen(pTHX_ char *cmd, char *in_mode, int *psts)
         tpipe = vmspipe_tempfile(aTHX);
         if (!tpipe) {       /* a fish popular in Boston */
             if (ckWARN(WARN_PIPE)) {
-                Perl_warner(aTHX_ WARN_PIPE,"unable to find VMSPIPE.COM for i/o piping");
+                Perl_warner(aTHX_ packWARN(WARN_PIPE),"unable to find VMSPIPE.COM for i/o piping");
             }
         return Nullfp;
         }
@@ -2284,7 +2284,7 @@ safe_popen(pTHX_ char *cmd, char *in_mode, int *psts)
       }
       set_vaxc_errno(sts);
       if (*mode != 'n' && ckWARN(WARN_PIPE)) {
-        Perl_warner(aTHX_ WARN_PIPE,"Can't pipe \"%*s\": %s", strlen(cmd), cmd, Strerror(errno));
+        Perl_warner(aTHX_ packWARN(WARN_PIPE),"Can't pipe \"%*s\": %s", strlen(cmd), cmd, Strerror(errno));
       }
       *psts = sts;
       return Nullfp; 
@@ -2727,7 +2727,7 @@ Perl_my_waitpid(pTHX_ Pid_t pid, int *statusp, int flags)
         /* remind folks they are asking for non-standard waitpid behavior */
         _ckvmssts(lib$getjpi(&pidcode,0,0,&mypid,0,0));
         if (ownerpid != mypid)
-          Perl_warner(aTHX_ WARN_EXEC,
+          Perl_warner(aTHX_ packWARN(WARN_EXEC),
                       "waitpid: process %x is not a child of process %x",
                       pid,mypid);
       }
@@ -5221,7 +5221,7 @@ Perl_vms_do_exec(pTHX_ char *cmd)
     }
     set_vaxc_errno(retsts);
     if (ckWARN(WARN_EXEC)) {
-      Perl_warner(aTHX_ WARN_EXEC,"Can't exec \"%*s\": %s",
+      Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't exec \"%*s\": %s",
              vmscmd->dsc$w_length, vmscmd->dsc$a_pointer, Strerror(errno));
     }
     vms_execfree(vmscmd);
@@ -5275,7 +5275,7 @@ Perl_do_spawn(pTHX_ char *cmd)
       }
       set_vaxc_errno(sts);
       if (ckWARN(WARN_EXEC)) {
-        Perl_warner(aTHX_ WARN_EXEC,"Can't spawn: %s",
+        Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't spawn: %s",
                    Strerror(errno));
       }
     }
index 2734229..eea51dc 100644 (file)
@@ -1077,6 +1077,14 @@ test-wide-notty : test-prep
        $(PERLEXE) -I..\lib harness
        cd ..\win32
 
+_test : 
+       $(XCOPY) $(PERLEXE) ..\t\$(NULL)
+       $(XCOPY) $(PERLDLL) ..\t\$(NULL)
+       $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
+       cd ..\t
+       $(PERLEXE) -I..\lib harness
+       cd ..\win32
+
 clean : Extensions_clean
        -@$(DEL) miniperlmain$(o)
        -@$(DEL) $(MINIPERL)
index 86100bb..92d047b 100644 (file)
@@ -1133,6 +1133,14 @@ test-wide-notty : test-prep
        cd ..\t
        $(PERLEXE) -I..\lib harness
        cd ..\win32
+       
+_test : 
+       $(XCOPY) $(PERLEXE) ..\t\$(NULL)
+       $(XCOPY) $(PERLDLL) ..\t\$(NULL)
+       $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
+       cd ..\t
+       $(PERLEXE) -I..\lib harness
+       cd ..\win32
 
 clean : 
        -@erase miniperlmain$(o)
index 517a576..f226d97 100644 (file)
@@ -575,7 +575,7 @@ do_aspawn(void *vreally, void **vmark, void **vsp)
     else {
        if (status < 0) {
            if (ckWARN(WARN_EXEC))
-               Perl_warner(aTHX_ WARN_EXEC, "Can't spawn \"%s\": %s", argv[0], strerror(errno));
+               Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't spawn \"%s\": %s", argv[0], strerror(errno));
            status = 255 * 256;
        }
        else
@@ -690,7 +690,7 @@ do_spawn2(char *cmd, int exectype)
     else {
        if (status < 0) {
            if (ckWARN(WARN_EXEC))
-               Perl_warner(aTHX_ WARN_EXEC, "Can't %s \"%s\": %s",
+               Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s",
                     (exectype == EXECF_EXEC ? "exec" : "spawn"),
                     cmd, strerror(errno));
            status = 255 * 256;